ydb-embedded-ui 18.6.0 → 19.0.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/Drawer/Drawer.js +17 -12
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/DrawerContext.d.ts +10 -1
- package/dist/components/Drawer/DrawerContext.js +59 -6
- package/dist/components/Drawer/DrawerContext.js.map +1 -1
- package/dist/components/Drawer/DrawerWidthUtils.d.ts +4 -0
- package/dist/components/Drawer/DrawerWidthUtils.js +4 -0
- package/dist/components/Drawer/DrawerWidthUtils.js.map +1 -1
- package/dist/components/EntityName/EntityName.d.ts +15 -0
- package/dist/components/EntityName/EntityName.js +39 -0
- package/dist/components/EntityName/EntityName.js.map +1 -0
- package/dist/components/EntityName/EntityName.scss +140 -0
- package/dist/components/EntityStatus/EntityStatus.d.ts +17 -14
- package/dist/components/EntityStatus/EntityStatus.js +41 -40
- package/dist/components/EntityStatus/EntityStatus.js.map +1 -1
- package/dist/components/EntityStatus/EntityStatus.scss +5 -132
- package/dist/components/EntityStatus/i18n/index.js.map +1 -0
- package/dist/components/EntityStatus/utils.js.map +1 -0
- package/dist/components/Fullscreen/Fullscreen.d.ts +2 -1
- package/dist/components/Fullscreen/Fullscreen.js +11 -2
- package/dist/components/Fullscreen/Fullscreen.js.map +1 -1
- package/dist/components/LinkToSchemaObject/LinkToSchemaObject.d.ts +2 -1
- package/dist/components/LinkToSchemaObject/LinkToSchemaObject.js +5 -2
- package/dist/components/LinkToSchemaObject/LinkToSchemaObject.js.map +1 -1
- package/dist/components/NodeHostWrapper/NodeHostWrapper.js +3 -2
- package/dist/components/NodeHostWrapper/NodeHostWrapper.js.map +1 -1
- package/dist/components/StatusColor/StatusColor.d.ts +10 -0
- package/dist/components/StatusColor/StatusColor.js +10 -0
- package/dist/components/StatusColor/StatusColor.js.map +1 -0
- package/dist/components/StatusColor/StatusColor.scss +49 -0
- package/dist/components/StatusIcon/StatusIcon.js +2 -1
- package/dist/components/StatusIcon/StatusIcon.js.map +1 -1
- package/dist/components/StatusIcon/StatusIcon.scss +0 -22
- package/dist/components/TabletNameWrapper/TabletNameWrapper.js +2 -2
- package/dist/components/TabletNameWrapper/TabletNameWrapper.js.map +1 -1
- package/dist/components/TenantNameWrapper/TenantNameWrapper.js +1 -1
- package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
- package/dist/containers/Cluster/Cluster.js +2 -2
- package/dist/containers/Cluster/Cluster.js.map +1 -1
- package/dist/containers/Cluster/ClusterDrawerHealthcheck.d.ts +2 -1
- package/dist/containers/Cluster/ClusterDrawerHealthcheck.js +5 -5
- package/dist/containers/Cluster/ClusterDrawerHealthcheck.js.map +1 -1
- package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCard.js +1 -1
- package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCard.js.map +1 -1
- package/dist/containers/Clusters/columns.js +1 -1
- package/dist/containers/Clusters/columns.js.map +1 -1
- package/dist/containers/Node/NodeStructure/NodeStructure.scss +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js +2 -2
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js.map +1 -1
- package/dist/containers/Storage/Storage.scss +1 -1
- package/dist/containers/Tablet/Tablet.js +12 -5
- package/dist/containers/Tablet/Tablet.js.map +1 -1
- package/dist/containers/Tablet/components/TabletInfo/TabletInfo.d.ts +3 -1
- package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js +31 -19
- package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js.map +1 -1
- package/dist/containers/Tablet/components/TabletInfo/i18n/en.json +2 -0
- package/dist/containers/Tablet/components/TabletInfo/i18n/index.d.ts +1 -1
- package/dist/containers/Tablet/components/TabletTable/TabletTable.js +2 -2
- package/dist/containers/Tablet/components/TabletTable/TabletTable.js.map +1 -1
- package/dist/containers/Tablet/utils.d.ts +3 -0
- package/dist/containers/Tablet/utils.js +12 -0
- package/dist/containers/Tablet/utils.js.map +1 -1
- package/dist/containers/Tablets/TabletsTable.js +2 -2
- package/dist/containers/Tablets/TabletsTable.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/AccessRights/components/RightsTable/RevokeAllRightsDialog.js +6 -11
- package/dist/containers/Tenant/Diagnostics/AccessRights/components/RightsTable/RevokeAllRightsDialog.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js +13 -2
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/prepareTableInfo/prepareRowTableInfo.js +9 -5
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/prepareTableInfo/prepareRowTableInfo.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js +6 -6
- package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/StorageUsage/StorageUsageTable.js +2 -2
- package/dist/containers/Tenant/Diagnostics/StorageUsage/StorageUsageTable.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/MetricTabCard.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/MetricTabCard.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/ServerlessTabCard.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/ServerlessTabCard.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.scss +4 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +3 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js +6 -6
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/GrantAccess/GrantAccess.js +14 -16
- package/dist/containers/Tenant/GrantAccess/GrantAccess.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/Healthcheck.d.ts +2 -0
- package/dist/containers/Tenant/Healthcheck/Healthcheck.js +30 -9
- package/dist/containers/Tenant/Healthcheck/Healthcheck.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/Healthcheck.scss +28 -0
- package/dist/containers/Tenant/Healthcheck/HealthcheckContext.d.ts +7 -0
- package/dist/containers/Tenant/Healthcheck/HealthcheckContext.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js +24 -2
- package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/i18n/en.json +4 -0
- package/dist/containers/Tenant/Healthcheck/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Healthcheck/types.d.ts +31 -0
- package/dist/containers/Tenant/Healthcheck/types.js +2 -0
- package/dist/containers/Tenant/Healthcheck/types.js.map +1 -0
- package/dist/containers/Tenant/Healthcheck/useHealthcheck.d.ts +3 -0
- package/dist/containers/Tenant/Healthcheck/useHealthcheck.js +6 -0
- package/dist/containers/Tenant/Healthcheck/useHealthcheck.js.map +1 -1
- package/dist/containers/Tenant/Healthcheck/utils.d.ts +21 -0
- package/dist/containers/Tenant/Healthcheck/utils.js +16 -0
- package/dist/containers/Tenant/Healthcheck/utils.js.map +1 -1
- package/dist/containers/Tenant/TenantDrawerHealthcheck.d.ts +3 -2
- package/dist/containers/Tenant/TenantDrawerHealthcheck.js +5 -5
- package/dist/containers/Tenant/TenantDrawerHealthcheck.js.map +1 -1
- package/dist/containers/Tenant/TenantDrawerWrappers.js +3 -1
- package/dist/containers/Tenant/TenantDrawerWrappers.js.map +1 -1
- package/dist/containers/Tenant/utils/diagnosticsNavigation.d.ts +2 -2
- package/dist/containers/Tenant/utils/diagnosticsNavigation.js +13 -1
- package/dist/containers/Tenant/utils/diagnosticsNavigation.js.map +1 -1
- package/dist/containers/Versions/NodesTreeTitle/NodesTreeTitle.js +10 -1
- package/dist/containers/Versions/NodesTreeTitle/NodesTreeTitle.js.map +1 -1
- package/dist/lib.d.ts +4 -1
- package/dist/lib.js +1 -0
- package/dist/lib.js.map +1 -1
- package/dist/services/api/viewer.d.ts +5 -1
- package/dist/services/api/viewer.js +7 -0
- package/dist/services/api/viewer.js.map +1 -1
- package/dist/store/reducers/capabilities/hooks.d.ts +1 -0
- package/dist/store/reducers/capabilities/hooks.js +4 -0
- package/dist/store/reducers/capabilities/hooks.js.map +1 -1
- package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +78 -12
- package/dist/store/reducers/schemaAcl/schemaAcl.js +13 -7
- package/dist/store/reducers/schemaAcl/schemaAcl.js.map +1 -1
- package/dist/store/reducers/schemaAcl/utils.d.ts +12 -0
- package/dist/store/reducers/schemaAcl/utils.js +86 -0
- package/dist/store/reducers/schemaAcl/utils.js.map +1 -0
- package/dist/store/reducers/tablet/utils.d.ts +2 -0
- package/dist/store/reducers/tablet/utils.js +11 -0
- package/dist/store/reducers/tablet/utils.js.map +1 -0
- package/dist/store/reducers/tablet.d.ts +5 -0
- package/dist/store/reducers/tablet.js +22 -0
- package/dist/store/reducers/tablet.js.map +1 -1
- package/dist/types/api/tablet.d.ts +13 -0
- package/dist/types/api/tablet.js.map +1 -1
- package/dist/uiFactory/types.d.ts +3 -0
- package/package.json +1 -1
- package/dist/components/EntityStatusNew/EntityStatus.d.ts +0 -24
- package/dist/components/EntityStatusNew/EntityStatus.js +0 -48
- package/dist/components/EntityStatusNew/EntityStatus.js.map +0 -1
- package/dist/components/EntityStatusNew/EntityStatus.scss +0 -11
- package/dist/components/EntityStatusNew/i18n/index.js.map +0 -1
- package/dist/components/EntityStatusNew/utils.js.map +0 -1
- /package/dist/components/{EntityStatusNew → EntityStatus}/i18n/en.json +0 -0
- /package/dist/components/{EntityStatusNew → EntityStatus}/i18n/index.d.ts +0 -0
- /package/dist/components/{EntityStatusNew → EntityStatus}/i18n/index.js +0 -0
- /package/dist/components/{EntityStatusNew → EntityStatus}/utils.d.ts +0 -0
- /package/dist/components/{EntityStatusNew → EntityStatus}/utils.js +0 -0
|
@@ -6,7 +6,7 @@ import { debounce } from 'lodash';
|
|
|
6
6
|
import { cn } from '../../utils/cn';
|
|
7
7
|
import { useSetting } from '../../utils/hooks/useSetting';
|
|
8
8
|
import { CopyLinkButton } from '../CopyLinkButton/CopyLinkButton';
|
|
9
|
-
import {
|
|
9
|
+
import { isClickInRightInset, useDrawerContextInternal } from './DrawerContext';
|
|
10
10
|
import { normalizeDrawerWidthFromResize, normalizeDrawerWidthFromSavedString, } from './DrawerWidthUtils';
|
|
11
11
|
import './Drawer.scss';
|
|
12
12
|
const DEFAULT_DRAWER_WIDTH_PERCENTS = 60;
|
|
@@ -18,7 +18,8 @@ const DrawerPaneContentWrapper = ({ isVisible, onClose, children, drawerId = 'dr
|
|
|
18
18
|
const [savedWidthString, setSavedWidthString] = useSetting(storageKey);
|
|
19
19
|
const [userDrawerWidth, setUserDrawerWidth] = React.useState(undefined);
|
|
20
20
|
const drawerRef = React.useRef(null);
|
|
21
|
-
const { containerWidth, itemContainerRef } =
|
|
21
|
+
const { containerWidth, itemContainerRef, rightInset, visibleRightInset } = useDrawerContextInternal();
|
|
22
|
+
const availableWidth = Math.max(0, containerWidth - visibleRightInset);
|
|
22
23
|
const derivedDrawerWidth = React.useMemo(() => {
|
|
23
24
|
return normalizeDrawerWidthFromSavedString({
|
|
24
25
|
savedWidthString,
|
|
@@ -29,26 +30,30 @@ const DrawerPaneContentWrapper = ({ isVisible, onClose, children, drawerId = 'dr
|
|
|
29
30
|
defaultPx: DEFAULT_DRAWER_WIDTH,
|
|
30
31
|
});
|
|
31
32
|
}, [containerWidth, defaultWidth, isPercentageWidth, savedWidthString]);
|
|
32
|
-
const
|
|
33
|
+
const requestedDrawerWidth = userDrawerWidth !== null && userDrawerWidth !== void 0 ? userDrawerWidth : derivedDrawerWidth;
|
|
33
34
|
// Calculate drawer width based on container width percentage if specified
|
|
34
|
-
const
|
|
35
|
+
const requestedWidth = React.useMemo(() => {
|
|
35
36
|
if (isPercentageWidth && containerWidth > 0) {
|
|
36
|
-
return Math.round((containerWidth * (
|
|
37
|
+
return Math.round((containerWidth * (requestedDrawerWidth || DEFAULT_DRAWER_WIDTH_PERCENTS)) / 100);
|
|
37
38
|
}
|
|
38
|
-
return
|
|
39
|
-
}, [containerWidth, isPercentageWidth,
|
|
39
|
+
return requestedDrawerWidth || DEFAULT_DRAWER_WIDTH;
|
|
40
|
+
}, [containerWidth, isPercentageWidth, requestedDrawerWidth]);
|
|
41
|
+
const calculatedWidth = Math.min(requestedWidth, availableWidth);
|
|
40
42
|
const drawerOverlayStyle = React.useMemo(() => {
|
|
41
43
|
return {
|
|
42
44
|
overflow: 'hidden',
|
|
43
|
-
|
|
45
|
+
width: availableWidth,
|
|
44
46
|
};
|
|
45
|
-
}, [
|
|
47
|
+
}, [availableWidth]);
|
|
46
48
|
React.useEffect(() => {
|
|
47
49
|
if (!detectClickOutside || !isVisible) {
|
|
48
50
|
return undefined;
|
|
49
51
|
}
|
|
50
52
|
const handleClickOutside = (event) => {
|
|
51
|
-
|
|
53
|
+
var _a;
|
|
54
|
+
if (event._capturedInsideDrawer ||
|
|
55
|
+
!event.isTrusted ||
|
|
56
|
+
isClickInRightInset(event, (_a = itemContainerRef === null || itemContainerRef === void 0 ? void 0 : itemContainerRef.current) !== null && _a !== void 0 ? _a : null, rightInset)) {
|
|
52
57
|
return;
|
|
53
58
|
}
|
|
54
59
|
if (drawerRef.current && !drawerRef.current.contains(event.target)) {
|
|
@@ -64,7 +69,7 @@ const DrawerPaneContentWrapper = ({ isVisible, onClose, children, drawerId = 'dr
|
|
|
64
69
|
window.clearTimeout(listenerTimeoutId);
|
|
65
70
|
document.removeEventListener('click', handleClickOutside);
|
|
66
71
|
};
|
|
67
|
-
}, [isVisible, onClose,
|
|
72
|
+
}, [detectClickOutside, isVisible, itemContainerRef, onClose, rightInset]);
|
|
68
73
|
const saveWidthDebounced = React.useMemo(() => {
|
|
69
74
|
return debounce((value) => setSavedWidthString(value), SAVE_DEBOUNCE_MS);
|
|
70
75
|
}, [setSavedWidthString]);
|
|
@@ -95,7 +100,7 @@ const DrawerPaneContentWrapper = ({ isVisible, onClose, children, drawerId = 'dr
|
|
|
95
100
|
if (!itemContainer) {
|
|
96
101
|
return null;
|
|
97
102
|
}
|
|
98
|
-
return (_jsx(GravityDrawer, { qa: drawerId, open: isVisible, onOpenChange: handleOpenChange, placement: direction, hideVeil: hideVeil, className: b('container', className), contentClassName: b('item'), style: drawerOverlayStyle, container: itemContainer, resizable: true, maxSize:
|
|
103
|
+
return (_jsx(GravityDrawer, { qa: drawerId, open: isVisible, onOpenChange: handleOpenChange, placement: direction, hideVeil: hideVeil, className: b('container', className), contentClassName: b('item'), style: drawerOverlayStyle, container: itemContainer, resizable: true, maxSize: availableWidth, size: calculatedWidth, onResizeEnd: handleResizeDrawer, disableBodyScrollLock: true, disableOutsideClick: detectClickOutside, floatingRef: detectClickOutside ? drawerRef : undefined, children: _jsx("div", { className: b('click-handler'), onClickCapture: handleClickInsideDrawer, children: children }) }));
|
|
99
104
|
};
|
|
100
105
|
export const DrawerWrapper = ({ children, renderDrawerContent, isDrawerVisible, onCloseDrawer, drawerId, storageKey, defaultWidth, direction, className, detectClickOutside, isPercentageWidth, drawerControls = [], title, headerClassName, hideVeil, }) => {
|
|
101
106
|
const onCloseDrawerRef = React.useRef(onCloseDrawer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,aAAa,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAC,cAAc,EAAC,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,21 @@ import './Drawer.scss';
|
|
|
3
3
|
export interface DrawerContextType {
|
|
4
4
|
containerWidth: number;
|
|
5
5
|
itemContainerRef: React.RefObject<HTMLDivElement> | null;
|
|
6
|
+
rightInset: number;
|
|
6
7
|
setContainerWidth: React.Dispatch<React.SetStateAction<number>>;
|
|
8
|
+
setRightInset: React.Dispatch<React.SetStateAction<number>>;
|
|
9
|
+
}
|
|
10
|
+
interface DrawerInternalContextType extends DrawerContextType {
|
|
11
|
+
visibleRightInset: number;
|
|
7
12
|
}
|
|
8
13
|
interface DrawerContextProviderProps {
|
|
9
14
|
children: React.ReactNode;
|
|
10
15
|
className?: string;
|
|
16
|
+
rightInset?: number;
|
|
17
|
+
onRightInsetChange?: (rightInset: number) => void;
|
|
11
18
|
}
|
|
12
|
-
export declare
|
|
19
|
+
export declare function isClickInRightInset(event: Pick<MouseEvent, 'clientX' | 'clientY'>, itemContainer: HTMLElement | null, rightInset: number): boolean;
|
|
20
|
+
export declare const DrawerContextProvider: ({ children, className, rightInset: controlledRightInset, onRightInsetChange, }: DrawerContextProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
21
|
export declare const useDrawerContext: () => DrawerContextType;
|
|
22
|
+
export declare const useDrawerContextInternal: () => DrawerInternalContextType;
|
|
14
23
|
export {};
|
|
@@ -1,17 +1,54 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { cn } from '../../utils/cn';
|
|
4
|
+
import { getVisibleRightInset } from './DrawerWidthUtils';
|
|
4
5
|
import './Drawer.scss';
|
|
5
6
|
const b = cn('ydb-drawer');
|
|
6
7
|
const DrawerContext = React.createContext({
|
|
7
8
|
containerWidth: 0,
|
|
8
9
|
itemContainerRef: null,
|
|
10
|
+
rightInset: 0,
|
|
9
11
|
setContainerWidth: () => { },
|
|
12
|
+
setRightInset: () => { },
|
|
13
|
+
visibleRightInset: 0,
|
|
10
14
|
});
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
function normalizeRightInset(rightInset) {
|
|
16
|
+
return Number.isFinite(rightInset) ? Math.max(0, rightInset) : 0;
|
|
17
|
+
}
|
|
18
|
+
export function isClickInRightInset(event, itemContainer, rightInset) {
|
|
19
|
+
if (rightInset <= 0 || !itemContainer) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const providerContainer = itemContainer.parentElement;
|
|
23
|
+
if (!providerContainer) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const itemRight = itemContainer.getBoundingClientRect().right;
|
|
27
|
+
const providerRect = providerContainer.getBoundingClientRect();
|
|
28
|
+
return (event.clientX >= itemRight &&
|
|
29
|
+
event.clientX <= providerRect.right &&
|
|
30
|
+
event.clientY >= providerRect.top &&
|
|
31
|
+
event.clientY <= providerRect.bottom);
|
|
32
|
+
}
|
|
33
|
+
export const DrawerContextProvider = ({ children, className, rightInset: controlledRightInset, onRightInsetChange, }) => {
|
|
34
|
+
const [measuredContainerWidth, setContainerWidth] = React.useState(0);
|
|
35
|
+
const [rightViewportOverflow, setRightViewportOverflow] = React.useState(0);
|
|
36
|
+
const [internalRightInset, setInternalRightInset] = React.useState(0);
|
|
13
37
|
const containerRef = React.useRef(null);
|
|
14
38
|
const itemContainerRef = React.useRef(null);
|
|
39
|
+
const rightInset = normalizeRightInset(controlledRightInset !== null && controlledRightInset !== void 0 ? controlledRightInset : internalRightInset);
|
|
40
|
+
const rightInsetRef = React.useRef(rightInset);
|
|
41
|
+
rightInsetRef.current = rightInset;
|
|
42
|
+
const setRightInset = React.useCallback((nextRightInset) => {
|
|
43
|
+
const nextValue = normalizeRightInset(typeof nextRightInset === 'function'
|
|
44
|
+
? nextRightInset(rightInsetRef.current)
|
|
45
|
+
: nextRightInset);
|
|
46
|
+
rightInsetRef.current = nextValue;
|
|
47
|
+
if (controlledRightInset === undefined) {
|
|
48
|
+
setInternalRightInset(nextValue);
|
|
49
|
+
}
|
|
50
|
+
onRightInsetChange === null || onRightInsetChange === void 0 ? void 0 : onRightInsetChange(nextValue);
|
|
51
|
+
}, [controlledRightInset, onRightInsetChange]);
|
|
15
52
|
React.useEffect(() => {
|
|
16
53
|
if (!containerRef.current) {
|
|
17
54
|
return undefined;
|
|
@@ -22,7 +59,9 @@ export const DrawerContextProvider = ({ children, className }) => {
|
|
|
22
59
|
const visibleLeft = Math.max(containerRect.left, 0);
|
|
23
60
|
const visibleRight = Math.min(containerRect.right, window.innerWidth);
|
|
24
61
|
const visibleWidth = Math.max(0, visibleRight - visibleLeft);
|
|
62
|
+
const nextRightViewportOverflow = Math.max(0, containerRect.right - visibleRight);
|
|
25
63
|
setContainerWidth(visibleWidth || containerRef.current.clientWidth);
|
|
64
|
+
setRightViewportOverflow(nextRightViewportOverflow);
|
|
26
65
|
}
|
|
27
66
|
};
|
|
28
67
|
// Set initial width
|
|
@@ -30,23 +69,37 @@ export const DrawerContextProvider = ({ children, className }) => {
|
|
|
30
69
|
// Update width on resize
|
|
31
70
|
const resizeObserver = new ResizeObserver(updateWidth);
|
|
32
71
|
resizeObserver.observe(containerRef.current);
|
|
72
|
+
window.addEventListener('resize', updateWidth);
|
|
33
73
|
return () => {
|
|
34
74
|
resizeObserver.disconnect();
|
|
75
|
+
window.removeEventListener('resize', updateWidth);
|
|
35
76
|
};
|
|
36
77
|
}, []);
|
|
78
|
+
const visibleRightInset = getVisibleRightInset({ rightInset, rightViewportOverflow });
|
|
37
79
|
// Memoize the context value to prevent unnecessary re-renders
|
|
38
80
|
const value = React.useMemo(() => ({
|
|
39
|
-
containerWidth,
|
|
81
|
+
containerWidth: measuredContainerWidth,
|
|
40
82
|
setContainerWidth,
|
|
41
83
|
itemContainerRef,
|
|
42
|
-
|
|
43
|
-
|
|
84
|
+
rightInset,
|
|
85
|
+
setRightInset,
|
|
86
|
+
visibleRightInset,
|
|
87
|
+
}), [measuredContainerWidth, rightInset, setRightInset, visibleRightInset]);
|
|
88
|
+
const itemContainerStyle = React.useMemo(() => {
|
|
89
|
+
if (rightInset === 0) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
return { width: `max(0px, calc(100% - ${rightInset}px))` };
|
|
93
|
+
}, [rightInset]);
|
|
94
|
+
return (_jsx(DrawerContext.Provider, { value: value, children: _jsxs("div", { ref: containerRef, className: b('drawer-container', className), children: [children, _jsx("div", { ref: itemContainerRef, className: b('item-container'), style: itemContainerStyle })] }) }));
|
|
44
95
|
};
|
|
45
|
-
|
|
96
|
+
const useDrawerContextValue = () => {
|
|
46
97
|
const context = React.useContext(DrawerContext);
|
|
47
98
|
if (context === undefined) {
|
|
48
99
|
throw Error('useDrawerContext must be used within a DrawerContextProvider');
|
|
49
100
|
}
|
|
50
101
|
return context;
|
|
51
102
|
};
|
|
103
|
+
export const useDrawerContext = () => useDrawerContextValue();
|
|
104
|
+
export const useDrawerContextInternal = () => useDrawerContextValue();
|
|
52
105
|
//# sourceMappingURL=DrawerContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerContext.js","sourceRoot":"","sources":["../../../src/components/Drawer/DrawerContext.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAElC,OAAO,eAAe,CAAC;AAEvB,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DrawerContext.js","sourceRoot":"","sources":["../../../src/components/Drawer/DrawerContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export declare const MIN_DRAWER_WIDTH_PERCENTS = 1;
|
|
2
2
|
export declare const MAX_DRAWER_WIDTH_PERCENTS = 100;
|
|
3
3
|
export declare const MIN_DRAWER_WIDTH_PX = 1;
|
|
4
|
+
export declare function getVisibleRightInset(args: {
|
|
5
|
+
rightInset: number;
|
|
6
|
+
rightViewportOverflow: number;
|
|
7
|
+
}): number;
|
|
4
8
|
export declare function normalizeDrawerWidthFromSavedString(args: {
|
|
5
9
|
savedWidthString: string | undefined;
|
|
6
10
|
defaultWidth?: number;
|
|
@@ -5,6 +5,10 @@ export const MIN_DRAWER_WIDTH_PX = 1;
|
|
|
5
5
|
function clamp(value, min, max) {
|
|
6
6
|
return Math.min(max, Math.max(min, value));
|
|
7
7
|
}
|
|
8
|
+
export function getVisibleRightInset(args) {
|
|
9
|
+
const { rightInset, rightViewportOverflow } = args;
|
|
10
|
+
return Math.max(0, rightInset - Math.max(0, rightViewportOverflow));
|
|
11
|
+
}
|
|
8
12
|
function getFallbackWidth(args) {
|
|
9
13
|
const { defaultWidth, isPercentageWidth, defaultPercents, defaultPx } = args;
|
|
10
14
|
if (defaultWidth !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerWidthUtils.js","sourceRoot":"","sources":["../../../src/components/Drawer/DrawerWidthUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAKzB;IACG,MAAM,EAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC;IAC3E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAOnD;IACG,MAAM,EACF,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,SAAS,GACZ,GAAG,IAAI,CAAC;IAET,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAC9B,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,SAAS;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,GAAG,EAAE,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAI9C;IACG,MAAM,EAAC,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC;IAEjE,IAAI,iBAAiB,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/E,MAAM,eAAe,GAAG,KAAK,CACzB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,CAC5B,CAAC;QAEF,OAAO;YACH,WAAW,EAAE,eAAe;YAC5B,gBAAgB,EAAE,eAAe,CAAC,QAAQ,EAAE;SACtC,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GACb,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACnF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IAE7D,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAU,CAAC;AACrF,CAAC"}
|
|
1
|
+
{"version":3,"file":"DrawerWidthUtils.js","sourceRoot":"","sources":["../../../src/components/Drawer/DrawerWidthUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './EntityName.scss';
|
|
3
|
+
export interface EntityNameProps {
|
|
4
|
+
name?: string;
|
|
5
|
+
renderName?: (name?: string) => React.ReactNode;
|
|
6
|
+
path?: string;
|
|
7
|
+
externalLink?: boolean;
|
|
8
|
+
withLeftTrim?: boolean;
|
|
9
|
+
hasClipboardButton?: boolean;
|
|
10
|
+
infoPopoverContent?: React.ReactNode;
|
|
11
|
+
clipboardButtonAlwaysVisible?: boolean;
|
|
12
|
+
leadingContent?: React.ReactNode;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function EntityName({ name, renderName, path, externalLink, withLeftTrim, hasClipboardButton, infoPopoverContent, clipboardButtonAlwaysVisible, leadingContent, className, }: EntityNameProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { CircleInfo } from '@gravity-ui/icons';
|
|
4
|
+
import { Button, ClipboardButton, Icon, Popover, Link as UIKitLink } from '@gravity-ui/uikit';
|
|
5
|
+
import { cn } from '../../utils/cn';
|
|
6
|
+
import { YDB_POPOVER_CLASS_NAME } from '../../utils/constants';
|
|
7
|
+
import { InternalLink } from '../InternalLink/InternalLink';
|
|
8
|
+
import './EntityName.scss';
|
|
9
|
+
const b = cn('ydb-entity-name');
|
|
10
|
+
function defaultRenderName(name) {
|
|
11
|
+
return name !== null && name !== void 0 ? name : '';
|
|
12
|
+
}
|
|
13
|
+
export function EntityName({ name = '', renderName = defaultRenderName, path, externalLink = false, withLeftTrim = false, hasClipboardButton, infoPopoverContent, clipboardButtonAlwaysVisible = false, leadingContent, className, }) {
|
|
14
|
+
const [infoIconHovered, setInfoIconHovered] = React.useState(false);
|
|
15
|
+
const renderLink = () => {
|
|
16
|
+
if (path) {
|
|
17
|
+
if (externalLink) {
|
|
18
|
+
return (_jsx(UIKitLink, { className: b('name'), href: path, children: renderName(name) }));
|
|
19
|
+
}
|
|
20
|
+
return (_jsx(InternalLink, { className: b('name'), to: path, children: renderName(name) }));
|
|
21
|
+
}
|
|
22
|
+
return name && _jsx("span", { className: b('name'), children: renderName(name) });
|
|
23
|
+
};
|
|
24
|
+
return (_jsxs("div", { className: b(null, className), children: [leadingContent ? _jsx("div", { className: b('leading-content'), children: leadingContent }) : null, (path || name) && (_jsxs("div", { className: b('wrapper', {
|
|
25
|
+
'with-clipboard-button': hasClipboardButton,
|
|
26
|
+
'with-info-button': Boolean(infoPopoverContent),
|
|
27
|
+
'with-link': Boolean(path),
|
|
28
|
+
}), children: [_jsx("span", { className: b('link', {
|
|
29
|
+
'with-left-trim': withLeftTrim,
|
|
30
|
+
'with-path': Boolean(path),
|
|
31
|
+
}), title: name, children: renderLink() }), (hasClipboardButton || infoPopoverContent) && (_jsxs("div", { className: b('controls-wrapper', {
|
|
32
|
+
visible: clipboardButtonAlwaysVisible || infoIconHovered,
|
|
33
|
+
}), onClick: (e) => e.stopPropagation(), children: [infoPopoverContent && (_jsx(Popover, { className: YDB_POPOVER_CLASS_NAME, content: infoPopoverContent, placement: ['top-start', 'bottom-start'], onOpenChange: (visible) => setInfoIconHovered(visible), children: _jsx(Button, { view: "normal", size: "xs", className: b('info-icon', {
|
|
34
|
+
visible: clipboardButtonAlwaysVisible || infoIconHovered,
|
|
35
|
+
}), children: _jsx(Icon, { data: CircleInfo, size: "12" }) }) })), hasClipboardButton && (_jsx(ClipboardButton, { text: name, size: "xs", view: "normal", className: b('clipboard-button', {
|
|
36
|
+
visible: clipboardButtonAlwaysVisible || infoIconHovered,
|
|
37
|
+
}) }))] }))] }))] }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=EntityName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityName.js","sourceRoot":"","sources":["../../../src/components/EntityName/EntityName.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
@use '../../styles/mixins.scss';
|
|
2
|
+
|
|
3
|
+
.ydb-entity-name {
|
|
4
|
+
--button-width: 24px;
|
|
5
|
+
--entity-name-height: 20px;
|
|
6
|
+
|
|
7
|
+
position: relative;
|
|
8
|
+
|
|
9
|
+
display: inline-flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
|
|
12
|
+
max-width: 100%;
|
|
13
|
+
height: var(--entity-name-height);
|
|
14
|
+
|
|
15
|
+
@include mixins.body-2-typography();
|
|
16
|
+
|
|
17
|
+
&__leading-content {
|
|
18
|
+
display: inline-flex;
|
|
19
|
+
|
|
20
|
+
margin-right: var(--g-spacing-2);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&__info-icon,
|
|
24
|
+
&__clipboard-button {
|
|
25
|
+
// Default button height is 20px. When focused it has 24px height because of outline
|
|
26
|
+
// Negative offset is needed to prevent button to have bigger size when focused
|
|
27
|
+
--g-button-focus-outline-offset: -2px;
|
|
28
|
+
--g-button-focus-outline-width: 2px;
|
|
29
|
+
|
|
30
|
+
opacity: 0;
|
|
31
|
+
color: var(--g-color-text-secondary);
|
|
32
|
+
|
|
33
|
+
&_visible,
|
|
34
|
+
&:focus-visible,
|
|
35
|
+
&:hover,
|
|
36
|
+
.ydb-entity-name__wrapper:focus-within &,
|
|
37
|
+
.data-table__row:hover &,
|
|
38
|
+
.ydb-paginated-table__row:hover & {
|
|
39
|
+
opacity: 1;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&:focus-visible,
|
|
43
|
+
.ydb-entity-name__wrapper:focus-within {
|
|
44
|
+
background-color: var(--g-color-base-float);
|
|
45
|
+
}
|
|
46
|
+
&:hover {
|
|
47
|
+
color: var(--g-color-text-primary);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&__wrapper {
|
|
52
|
+
position: relative;
|
|
53
|
+
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
|
|
56
|
+
height: var(--entity-name-height);
|
|
57
|
+
|
|
58
|
+
&_with-clipboard-button {
|
|
59
|
+
padding-right: var(--button-width);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&_with-info-button {
|
|
63
|
+
padding-right: var(--button-width);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&_with-clipboard-button {
|
|
67
|
+
&.ydb-entity-name__wrapper_with-info-button {
|
|
68
|
+
padding-right: calc(2 * var(--button-width));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&__controls-wrapper {
|
|
74
|
+
position: absolute;
|
|
75
|
+
top: 0;
|
|
76
|
+
right: 0;
|
|
77
|
+
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
gap: var(--g-spacing-1);
|
|
81
|
+
|
|
82
|
+
width: 0;
|
|
83
|
+
|
|
84
|
+
&_visible,
|
|
85
|
+
&:focus-within {
|
|
86
|
+
width: min-content;
|
|
87
|
+
|
|
88
|
+
background-color: var(--g-color-base-background);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.data-table__row:hover &,
|
|
92
|
+
.ydb-paginated-table__row:hover & {
|
|
93
|
+
width: min-content;
|
|
94
|
+
|
|
95
|
+
background-color: var(--ydb-data-table-color-hover);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&__wrapper_with-clipboard-button &__link {
|
|
100
|
+
width: calc(100% + var(--button-width));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&__wrapper_with-info-button &__link {
|
|
104
|
+
width: calc(100% + var(--button-width));
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&__wrapper_with-clipboard-button {
|
|
108
|
+
&.ydb-entity-name__wrapper_with-info-button .ydb-entity-name__link {
|
|
109
|
+
width: calc(100% + 2 * var(--button-width));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
&__link {
|
|
114
|
+
display: inline-block;
|
|
115
|
+
overflow: hidden;
|
|
116
|
+
|
|
117
|
+
width: 100%;
|
|
118
|
+
|
|
119
|
+
white-space: nowrap;
|
|
120
|
+
text-overflow: ellipsis;
|
|
121
|
+
|
|
122
|
+
& a:focus-visible {
|
|
123
|
+
outline-width: 2px;
|
|
124
|
+
outline-offset: -2px;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
&__link_with-path {
|
|
129
|
+
color: var(--g-color-text-link);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
&__link_with-left-trim {
|
|
133
|
+
text-align: end;
|
|
134
|
+
direction: rtl;
|
|
135
|
+
|
|
136
|
+
.ydb-entity-name__name {
|
|
137
|
+
unicode-bidi: plaintext;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { LabelProps } from '@gravity-ui/uikit';
|
|
2
3
|
import { EFlag } from '../../types/api/enums';
|
|
3
|
-
import type { StatusIconMode, StatusIconSize } from '../StatusIcon/StatusIcon';
|
|
4
4
|
import './EntityStatus.scss';
|
|
5
|
+
interface EntityStatusLabelProps {
|
|
6
|
+
status: EFlag;
|
|
7
|
+
note?: React.ReactNode;
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
withStatusName?: boolean;
|
|
10
|
+
size?: LabelProps['size'];
|
|
11
|
+
iconSize?: number;
|
|
12
|
+
onClick?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
13
|
+
}
|
|
14
|
+
declare function EntityStatusLabel({ children, status, withStatusName, note, size, iconSize, onClick, }: EntityStatusLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
5
15
|
interface EntityStatusProps {
|
|
6
|
-
|
|
7
|
-
name?: string;
|
|
8
|
-
renderName?: (name?: string) => React.ReactNode;
|
|
9
|
-
path?: string;
|
|
10
|
-
size?: StatusIconSize;
|
|
11
|
-
mode?: StatusIconMode;
|
|
12
|
-
showStatus?: boolean;
|
|
13
|
-
externalLink?: boolean;
|
|
14
|
-
withLeftTrim?: boolean;
|
|
15
|
-
hasClipboardButton?: boolean;
|
|
16
|
-
infoPopoverContent?: React.ReactNode;
|
|
17
|
-
clipboardButtonAlwaysVisible?: boolean;
|
|
16
|
+
children?: React.ReactNode;
|
|
18
17
|
className?: string;
|
|
19
18
|
}
|
|
20
|
-
export declare function EntityStatus({
|
|
19
|
+
export declare function EntityStatus({ className, children }: EntityStatusProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare namespace EntityStatus {
|
|
21
|
+
var Label: typeof EntityStatusLabel;
|
|
22
|
+
var displayName: string;
|
|
23
|
+
}
|
|
21
24
|
export {};
|
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { CircleInfo } from '@gravity-ui/icons';
|
|
4
|
-
import { Button, ClipboardButton, Icon, Popover, Link as UIKitLink } from '@gravity-ui/uikit';
|
|
2
|
+
import { ActionTooltip, Flex, HelpMark, Label } from '@gravity-ui/uikit';
|
|
5
3
|
import { EFlag } from '../../types/api/enums';
|
|
6
4
|
import { cn } from '../../utils/cn';
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
5
|
+
import { StatusIcon } from '../StatusIconNew/StatusIcon';
|
|
6
|
+
import i18n from './i18n';
|
|
7
|
+
import { EFlagToDescription } from './utils';
|
|
10
8
|
import './EntityStatus.scss';
|
|
11
|
-
const b = cn('entity-status');
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const b = cn('ydb-entity-status');
|
|
10
|
+
const EFlagToLabelTheme = {
|
|
11
|
+
[EFlag.Red]: 'danger',
|
|
12
|
+
[EFlag.Blue]: 'info',
|
|
13
|
+
[EFlag.Green]: 'success',
|
|
14
|
+
[EFlag.Grey]: 'unknown',
|
|
15
|
+
[EFlag.Orange]: 'orange',
|
|
16
|
+
[EFlag.Yellow]: 'warning',
|
|
17
|
+
};
|
|
18
|
+
const EFlagToStatusName = {
|
|
19
|
+
get [EFlag.Red]() {
|
|
20
|
+
return i18n('title_red');
|
|
21
|
+
},
|
|
22
|
+
get [EFlag.Yellow]() {
|
|
23
|
+
return i18n('title_yellow');
|
|
24
|
+
},
|
|
25
|
+
get [EFlag.Orange]() {
|
|
26
|
+
return i18n('title_orange');
|
|
27
|
+
},
|
|
28
|
+
get [EFlag.Green]() {
|
|
29
|
+
return i18n('title_green');
|
|
30
|
+
},
|
|
31
|
+
get [EFlag.Grey]() {
|
|
32
|
+
return i18n('title_grey');
|
|
33
|
+
},
|
|
34
|
+
get [EFlag.Blue]() {
|
|
35
|
+
return i18n('title_blue');
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
function EntityStatusLabel({ children, status, withStatusName = true, note, size = 'm', iconSize = 14, onClick, }) {
|
|
39
|
+
const theme = EFlagToLabelTheme[status];
|
|
40
|
+
const isClickable = Boolean(onClick);
|
|
41
|
+
return (_jsx(ActionTooltip, { title: EFlagToDescription[status], disabled: Boolean(note), children: _jsx(Label, { theme: theme === 'orange' ? undefined : theme, icon: _jsx(StatusIcon, { size: iconSize, status: status }), size: size, className: b({ orange: theme === 'orange', clickable: isClickable }), onClick: onClick, interactive: isClickable, children: _jsxs(Flex, { gap: "2", wrap: "nowrap", children: [children, withStatusName ? EFlagToStatusName[status] : null, note && _jsx(HelpMark, { className: b('note'), children: note })] }) }) }));
|
|
14
42
|
}
|
|
15
|
-
export function EntityStatus({
|
|
16
|
-
|
|
17
|
-
const renderIcon = () => {
|
|
18
|
-
if (!showStatus) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
return _jsx(StatusIcon, { className: b('icon'), status: status, size: size, mode: mode });
|
|
22
|
-
};
|
|
23
|
-
const renderLink = () => {
|
|
24
|
-
if (path) {
|
|
25
|
-
if (externalLink) {
|
|
26
|
-
return (_jsx(UIKitLink, { className: b('name'), href: path, children: renderName(name) }));
|
|
27
|
-
}
|
|
28
|
-
return (_jsx(InternalLink, { className: b('name'), to: path, children: renderName(name) }));
|
|
29
|
-
}
|
|
30
|
-
return name && _jsx("span", { className: b('name'), children: renderName(name) });
|
|
31
|
-
};
|
|
32
|
-
return (_jsxs("div", { className: b(null, className), children: [renderIcon(), (path || name) && (_jsxs("div", { className: b('wrapper', {
|
|
33
|
-
'with-clipboard-button': hasClipboardButton,
|
|
34
|
-
'with-info-button': Boolean(infoPopoverContent),
|
|
35
|
-
'with-link': Boolean(path),
|
|
36
|
-
}), children: [_jsx("span", { className: b('link', {
|
|
37
|
-
'with-left-trim': withLeftTrim,
|
|
38
|
-
'with-path': Boolean(path),
|
|
39
|
-
}), title: name, children: renderLink() }), (hasClipboardButton || infoPopoverContent) && (_jsxs("div", { className: b('controls-wrapper', {
|
|
40
|
-
visible: clipboardButtonAlwaysVisible || infoIconHovered,
|
|
41
|
-
}), onClick: (e) => e.stopPropagation(), children: [infoPopoverContent && (_jsx(Popover, { className: YDB_POPOVER_CLASS_NAME, content: infoPopoverContent, placement: ['top-start', 'bottom-start'], onOpenChange: (visible) => setInfoIconHovered(visible), children: _jsx(Button, { view: "normal", size: "xs", className: b('info-icon', {
|
|
42
|
-
visible: clipboardButtonAlwaysVisible || infoIconHovered,
|
|
43
|
-
}), children: _jsx(Icon, { data: CircleInfo, size: "12" }) }) })), hasClipboardButton && (_jsx(ClipboardButton, { text: name, size: "xs", view: "normal", className: b('clipboard-button', {
|
|
44
|
-
visible: clipboardButtonAlwaysVisible || infoIconHovered,
|
|
45
|
-
}) }))] }))] }))] }));
|
|
43
|
+
export function EntityStatus({ className, children }) {
|
|
44
|
+
return (_jsx(Flex, { gap: "2", wrap: "nowrap", alignItems: "center", className: b(null, className), children: children }));
|
|
46
45
|
}
|
|
46
|
+
EntityStatus.Label = EntityStatusLabel;
|
|
47
|
+
EntityStatus.displayName = 'EntityStatus';
|
|
47
48
|
//# sourceMappingURL=EntityStatus.js.map
|