ydb-embedded-ui 5.4.0 → 5.5.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.
Files changed (192) hide show
  1. package/dist/components/DiskPageTitle/DiskPageTitle.d.ts +11 -0
  2. package/dist/components/DiskPageTitle/DiskPageTitle.js +8 -0
  3. package/dist/components/DiskPageTitle/DiskPageTitle.scss +17 -0
  4. package/dist/{containers/Storage → components}/DiskStateProgressBar/DiskStateProgressBar.js +3 -3
  5. package/dist/components/ErrorBoundary/ErrorBoundary.d.ts +1 -1
  6. package/dist/components/GroupInfo/GroupInfo.d.ts +8 -0
  7. package/dist/components/GroupInfo/GroupInfo.js +28 -0
  8. package/dist/components/GroupInfo/i18n/en.json +6 -0
  9. package/dist/components/GroupInfo/i18n/index.d.ts +1 -0
  10. package/dist/components/GroupInfo/i18n/index.js +4 -0
  11. package/dist/components/MetricChart/MetricChart.js +3 -1
  12. package/dist/components/MetricChart/types.d.ts +4 -0
  13. package/dist/components/MonacoEditor/MonacoEditor.d.ts +2 -0
  14. package/dist/components/MonacoEditor/MonacoEditor.js +7 -0
  15. package/dist/{containers/Storage → components}/PDiskPopup/PDiskPopup.d.ts +3 -3
  16. package/dist/{containers/Storage → components}/PDiskPopup/PDiskPopup.js +6 -5
  17. package/dist/components/PageMeta/PageMeta.d.ts +2 -1
  18. package/dist/components/PageMeta/PageMeta.js +9 -2
  19. package/dist/components/PageMeta/PageMeta.scss +9 -0
  20. package/dist/components/Stack/Stack.scss +2 -0
  21. package/dist/{containers/Storage → components}/VDisk/VDisk.d.ts +2 -2
  22. package/dist/{containers/Storage → components}/VDisk/VDisk.js +8 -8
  23. package/dist/{containers/Storage → components}/VDisk/VDisk.scss +1 -1
  24. package/dist/components/VDisk/VDiskWithDonorsStack.d.ts +12 -0
  25. package/dist/components/VDisk/VDiskWithDonorsStack.js +14 -0
  26. package/dist/components/VDiskInfo/VDiskInfo.d.ts +10 -0
  27. package/dist/components/VDiskInfo/VDiskInfo.js +113 -0
  28. package/dist/components/VDiskInfo/VDiskInfo.scss +8 -0
  29. package/dist/components/VDiskInfo/i18n/en.json +23 -0
  30. package/dist/components/VDiskInfo/i18n/index.d.ts +1 -0
  31. package/dist/components/VDiskInfo/i18n/index.js +4 -0
  32. package/dist/{containers/Storage → components}/VDiskPopup/VDiskPopup.d.ts +3 -3
  33. package/dist/{containers/Storage → components}/VDiskPopup/VDiskPopup.js +8 -7
  34. package/dist/components/VirtualTable/TableHead.d.ts +2 -1
  35. package/dist/components/VirtualTable/TableHead.js +6 -6
  36. package/dist/components/VirtualTable/constants.d.ts +1 -0
  37. package/dist/components/VirtualTable/constants.js +1 -0
  38. package/dist/containers/App/App.js +0 -2
  39. package/dist/containers/App/App.scss +3 -0
  40. package/dist/containers/App/Content.js +19 -5
  41. package/dist/containers/App/appSlots.d.ts +9 -3
  42. package/dist/containers/App/appSlots.js +2 -1
  43. package/dist/containers/Header/breadcrumbs.js +12 -0
  44. package/dist/containers/Header/i18n/en.json +1 -0
  45. package/dist/containers/Header/i18n/index.d.ts +1 -1
  46. package/dist/containers/Heatmap/HeatmapCanvas/HeatmapCanvas.js +2 -2
  47. package/dist/containers/Node/NodeStructure/NodeStructure.js +1 -1
  48. package/dist/containers/Node/NodeStructure/Pdisk.js +2 -2
  49. package/dist/containers/Node/NodeStructure/Vdisk.d.ts +6 -2
  50. package/dist/containers/Node/NodeStructure/Vdisk.js +5 -78
  51. package/dist/containers/Nodes/getNodesColumns.js +0 -1
  52. package/dist/containers/PDiskPage/PDiskPage.d.ts +3 -0
  53. package/dist/containers/{PDisk/PDisk.js → PDiskPage/PDiskPage.js} +9 -11
  54. package/dist/containers/{PDisk/PDisk.scss → PDiskPage/PDiskPage.scss} +0 -14
  55. package/dist/containers/Storage/PDisk/PDisk.js +4 -10
  56. package/dist/containers/Storage/PDisk/PDisk.scss +0 -2
  57. package/dist/containers/Storage/Storage.js +1 -2
  58. package/dist/containers/Storage/StorageGroups/StorageGroups.scss +1 -7
  59. package/dist/containers/Storage/StorageGroups/getStorageGroupsColumns.d.ts +1 -1
  60. package/dist/containers/Storage/StorageGroups/getStorageGroupsColumns.js +9 -17
  61. package/dist/containers/Storage/VirtualStorage.js +3 -7
  62. package/dist/containers/Tablet/TabletControls/TabletControls.js +2 -1
  63. package/dist/containers/TabletsFilters/TabletsFilters.d.ts +2 -2
  64. package/dist/containers/TabletsFilters/TabletsFilters.js +7 -6
  65. package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js +1 -1
  66. package/dist/containers/Tenant/Diagnostics/Network/Network.js +2 -2
  67. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js +1 -2
  68. package/dist/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.js +1 -1
  69. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/cpuDashboardConfig.js +4 -0
  70. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.js +5 -3
  71. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +6 -4
  72. package/dist/containers/Tenant/Query/SaveQuery/SaveQuery.js +2 -2
  73. package/dist/containers/Tenant/Tenant.js +10 -5
  74. package/dist/containers/Tenants/Tenants.js +3 -2
  75. package/dist/containers/VDiskPage/VDiskPage.d.ts +3 -0
  76. package/dist/containers/VDiskPage/VDiskPage.js +109 -0
  77. package/dist/containers/VDiskPage/VDiskPage.scss +32 -0
  78. package/dist/containers/VDiskPage/i18n/en.json +9 -0
  79. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -0
  80. package/dist/containers/VDiskPage/i18n/index.js +4 -0
  81. package/dist/containers/Versions/groupNodes.js +1 -1
  82. package/dist/routes.d.ts +3 -0
  83. package/dist/routes.js +5 -0
  84. package/dist/services/api.d.ts +11 -4
  85. package/dist/services/api.js +26 -4
  86. package/dist/store/configureStore.d.ts +4 -0
  87. package/dist/store/defaultStore.d.ts +2 -0
  88. package/dist/store/reducers/authentication/authentication.d.ts +3 -0
  89. package/dist/store/reducers/cluster/cluster.d.ts +1 -0
  90. package/dist/store/reducers/clusterNodes/clusterNodes.d.ts +1 -0
  91. package/dist/store/reducers/clusters/clusters.d.ts +1 -0
  92. package/dist/store/reducers/clusters/selectors.js +1 -1
  93. package/dist/store/reducers/describe.d.ts +2 -0
  94. package/dist/store/reducers/executeQuery.d.ts +1 -0
  95. package/dist/store/reducers/explainQuery.d.ts +2 -0
  96. package/dist/store/reducers/header/types.d.ts +4 -1
  97. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +1 -0
  98. package/dist/store/reducers/heatmap.d.ts +1 -0
  99. package/dist/store/reducers/host.d.ts +1 -0
  100. package/dist/store/reducers/index.d.ts +3 -0
  101. package/dist/store/reducers/index.js +2 -0
  102. package/dist/store/reducers/network/network.d.ts +1 -0
  103. package/dist/store/reducers/node/node.d.ts +2 -0
  104. package/dist/store/reducers/node/selectors.js +1 -1
  105. package/dist/store/reducers/nodes/nodes.d.ts +2 -0
  106. package/dist/store/reducers/nodesList.d.ts +1 -0
  107. package/dist/store/reducers/olapStats.d.ts +1 -0
  108. package/dist/store/reducers/overview/overview.d.ts +2 -0
  109. package/dist/store/reducers/partitions/partitions.d.ts +1 -0
  110. package/dist/store/reducers/pdisk/pdisk.d.ts +2 -0
  111. package/dist/store/reducers/pdisk/utils.js +1 -1
  112. package/dist/store/reducers/preview.d.ts +1 -0
  113. package/dist/store/reducers/schema/schema.d.ts +1 -0
  114. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +1 -0
  115. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +1 -0
  116. package/dist/store/reducers/storage/storage.d.ts +2 -0
  117. package/dist/store/reducers/storage/types.d.ts +3 -1
  118. package/dist/store/reducers/storage/utils.d.ts +1 -1
  119. package/dist/store/reducers/storage/utils.js +8 -9
  120. package/dist/store/reducers/tablet.d.ts +2 -0
  121. package/dist/store/reducers/tablets.d.ts +1 -0
  122. package/dist/store/reducers/tabletsFilters.d.ts +1 -0
  123. package/dist/store/reducers/tenant/tenant.d.ts +1 -0
  124. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +1 -0
  125. package/dist/store/reducers/tenantOverview/topNodesByCpu/topNodesByCpu.d.ts +1 -0
  126. package/dist/store/reducers/tenantOverview/topNodesByLoad/topNodesByLoad.d.ts +1 -0
  127. package/dist/store/reducers/tenantOverview/topNodesByMemory/topNodesByMemory.d.ts +1 -0
  128. package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.d.ts +1 -0
  129. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +1 -0
  130. package/dist/store/reducers/tenantOverview/topStorageGroups/topStorageGroups.d.ts +1 -0
  131. package/dist/store/reducers/tenants/selectors.js +1 -1
  132. package/dist/store/reducers/tenants/tenants.d.ts +1 -0
  133. package/dist/store/reducers/topic.d.ts +1 -0
  134. package/dist/store/reducers/vdisk/types.d.ts +25 -0
  135. package/dist/store/reducers/vdisk/utils.d.ts +11 -0
  136. package/dist/store/reducers/vdisk/utils.js +33 -0
  137. package/dist/store/reducers/vdisk/vdisk.d.ts +100 -0
  138. package/dist/store/reducers/vdisk/vdisk.js +64 -0
  139. package/dist/store/state-url-mapping.js +6 -4
  140. package/dist/types/api/storage.d.ts +2 -0
  141. package/dist/utils/bytesParsers/__test__/formatBytes.test.js +7 -7
  142. package/dist/utils/clusterVersionColors.js +1 -1
  143. package/dist/utils/dataFormatters/dataFormatters.js +1 -0
  144. package/dist/utils/disks/constants.js +2 -2
  145. package/dist/utils/disks/types.d.ts +5 -1
  146. package/dist/utils/filters.js +1 -1
  147. package/dist/utils/hooks/useTableResize.d.ts +1 -1
  148. package/dist/utils/hooks/useTableResize.js +5 -3
  149. package/dist/utils/lazyComponent.d.ts +4 -0
  150. package/dist/utils/lazyComponent.js +25 -0
  151. package/dist/utils/monaco/index.d.ts +1 -0
  152. package/dist/utils/monaco/index.js +4 -0
  153. package/dist/utils/monaco/s-expression/constants.d.ts +1 -0
  154. package/dist/utils/monaco/s-expression/constants.js +1 -0
  155. package/dist/utils/monaco/s-expression/registerLanguage.d.ts +1 -0
  156. package/dist/utils/{monaco.js → monaco/s-expression/registerLanguage.js} +2 -19
  157. package/dist/utils/{yqlSuggestions → monaco/yqlSuggestions}/generateSuggestions.d.ts +2 -2
  158. package/dist/utils/{yqlSuggestions → monaco/yqlSuggestions}/generateSuggestions.js +40 -11
  159. package/dist/utils/monaco/yqlSuggestions/registerCompletionItemProvider.d.ts +1 -0
  160. package/dist/utils/monaco/yqlSuggestions/registerCompletionItemProvider.js +15 -0
  161. package/dist/utils/{yqlSuggestions → monaco/yqlSuggestions}/yqlSuggestions.js +1 -1
  162. package/dist/utils/numeral.js +7 -1
  163. package/dist/utils/storage.d.ts +1 -0
  164. package/dist/utils/storage.js +1 -0
  165. package/dist/utils/timeParsers/parsers.js +1 -1
  166. package/package.json +3 -1
  167. package/dist/containers/PDisk/PDisk.d.ts +0 -3
  168. package/dist/containers/Storage/DiskStateProgressBar/index.d.ts +0 -1
  169. package/dist/containers/Storage/DiskStateProgressBar/index.js +0 -1
  170. package/dist/containers/Storage/PDiskPopup/index.d.ts +0 -1
  171. package/dist/containers/Storage/PDiskPopup/index.js +0 -1
  172. package/dist/containers/Storage/VDisk/index.d.ts +0 -1
  173. package/dist/containers/Storage/VDisk/index.js +0 -1
  174. package/dist/containers/Storage/VDiskPopup/index.d.ts +0 -1
  175. package/dist/containers/Storage/VDiskPopup/index.js +0 -1
  176. package/dist/containers/Storage/utils/types.d.ts +0 -5
  177. package/dist/utils/monaco.d.ts +0 -3
  178. /package/dist/{containers/Storage → components}/DiskStateProgressBar/DiskStateProgressBar.d.ts +0 -0
  179. /package/dist/{containers/Storage → components}/DiskStateProgressBar/DiskStateProgressBar.scss +0 -0
  180. /package/dist/{containers/Storage → components}/PDiskPopup/PDiskPopup.scss +0 -0
  181. /package/dist/{containers/Storage → components}/VDiskPopup/VDiskPopup.scss +0 -0
  182. /package/dist/containers/{PDisk → PDiskPage}/PDiskGroups.d.ts +0 -0
  183. /package/dist/containers/{PDisk → PDiskPage}/PDiskGroups.js +0 -0
  184. /package/dist/containers/{PDisk → PDiskPage}/i18n/en.json +0 -0
  185. /package/dist/containers/{PDisk → PDiskPage}/i18n/index.d.ts +0 -0
  186. /package/dist/containers/{PDisk → PDiskPage}/i18n/index.js +0 -0
  187. /package/dist/containers/{PDisk → PDiskPage}/shared.d.ts +0 -0
  188. /package/dist/containers/{PDisk → PDiskPage}/shared.js +0 -0
  189. /package/dist/{containers/Storage/utils → store/reducers/vdisk}/types.js +0 -0
  190. /package/dist/utils/{yqlSuggestions → monaco/yqlSuggestions}/constants.d.ts +0 -0
  191. /package/dist/utils/{yqlSuggestions → monaco/yqlSuggestions}/constants.js +0 -0
  192. /package/dist/utils/{yqlSuggestions → monaco/yqlSuggestions}/yqlSuggestions.d.ts +0 -0
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { EFlag } from '../../types/api/enums';
3
+ import './DiskPageTitle.scss';
4
+ interface DiskPageTitleProps {
5
+ entityName: ReactNode;
6
+ status: EFlag;
7
+ id: ReactNode;
8
+ className?: string;
9
+ }
10
+ export declare function DiskPageTitle({ entityName, status, id, className }: DiskPageTitleProps): JSX.Element;
11
+ export {};
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../utils/cn';
3
+ import { StatusIcon } from '../StatusIcon/StatusIcon';
4
+ import './DiskPageTitle.scss';
5
+ const b = cn('ydb-disk-page-title');
6
+ export function DiskPageTitle({ entityName, status, id, className }) {
7
+ return (_jsxs("div", Object.assign({ className: b(null, className) }, { children: [_jsx("span", Object.assign({ className: b('prefix') }, { children: entityName })), _jsx(StatusIcon, { status: status, size: "s" }), id] })));
8
+ }
@@ -0,0 +1,17 @@
1
+ @import '../../styles/mixins.scss';
2
+
3
+ .ydb-disk-page-title {
4
+ display: flex;
5
+ flex-flow: row nowrap;
6
+ align-items: baseline;
7
+
8
+ text-wrap: nowrap;
9
+
10
+ @include header-2-typography();
11
+
12
+ &__prefix {
13
+ margin-right: 6px;
14
+
15
+ color: var(--g-color-text-secondary);
16
+ }
17
+ }
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import cn from 'bem-cn-lite';
4
- import { INVERTED_DISKS_KEY } from '../../../utils/constants';
5
- import { useSetting } from '../../../utils/hooks';
6
- import { getSeverityColor } from '../../../utils/disks/helpers';
4
+ import { INVERTED_DISKS_KEY } from '../../utils/constants';
5
+ import { useSetting } from '../../utils/hooks';
6
+ import { getSeverityColor } from '../../utils/disks/helpers';
7
7
  import './DiskStateProgressBar.scss';
8
8
  const b = cn('storage-disk-progress-bar');
9
9
  export function DiskStateProgressBar({ diskAllocatedPercent = -1, severity, compact, }) {
@@ -12,7 +12,7 @@ export declare function ErrorBoundaryInner({ children, useRetry, onReportProblem
12
12
  interface ErrorBoundaryFallbackProps {
13
13
  error: Error;
14
14
  useRetry?: boolean;
15
- resetErrorBoundary: () => void;
15
+ resetErrorBoundary?: () => void;
16
16
  onReportProblem?: (error?: Error) => void;
17
17
  }
18
18
  export declare function ErrorBoundaryFallback({ error, resetErrorBoundary, useRetry, onReportProblem, }: ErrorBoundaryFallbackProps): JSX.Element;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { PreparedStorageGroup } from '../../store/reducers/storage/types';
3
+ import type { InfoViewerProps } from '../InfoViewer/InfoViewer';
4
+ interface GroupInfoProps<T extends Partial<PreparedStorageGroup>> extends Omit<InfoViewerProps, 'info'> {
5
+ data: T;
6
+ }
7
+ export declare function GroupInfo<T extends Partial<PreparedStorageGroup>>({ data, ...infoViewerProps }: GroupInfoProps<T>): JSX.Element;
8
+ export {};
@@ -0,0 +1,28 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { valueIsDefined } from '../../utils';
4
+ import { formatStorageValuesToGb } from '../../utils/dataFormatters/dataFormatters';
5
+ import { InfoViewer } from '../InfoViewer';
6
+ import { ProgressViewer } from '../ProgressViewer/ProgressViewer';
7
+ import { groupInfoKeyset } from './i18n';
8
+ export function GroupInfo(_a) {
9
+ var { data } = _a, infoViewerProps = __rest(_a, ["data"]);
10
+ const { GroupID, PoolName, Used, Limit, ErasureSpecies } = data;
11
+ const groupInfo = [];
12
+ if (valueIsDefined(GroupID)) {
13
+ groupInfo.push({ label: groupInfoKeyset('group-id'), value: GroupID });
14
+ }
15
+ if (valueIsDefined(PoolName)) {
16
+ groupInfo.push({ label: groupInfoKeyset('pool-name'), value: PoolName });
17
+ }
18
+ if (valueIsDefined(ErasureSpecies)) {
19
+ groupInfo.push({ label: groupInfoKeyset('erasure'), value: ErasureSpecies });
20
+ }
21
+ if (Number(Used) >= 0 && Number(Limit) >= 0) {
22
+ groupInfo.push({
23
+ label: groupInfoKeyset('size'),
24
+ value: (_jsx(ProgressViewer, { value: Used, capacity: Limit, formatValues: formatStorageValuesToGb, colorizeProgress: true })),
25
+ });
26
+ }
27
+ return _jsx(InfoViewer, Object.assign({ info: groupInfo }, infoViewerProps));
28
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "group-id": "Group ID",
3
+ "pool-name": "Storage Pool Name",
4
+ "size": "Size",
5
+ "erasure": "Erasure"
6
+ }
@@ -0,0 +1 @@
1
+ export declare const groupInfoKeyset: (key: "size" | "group-id" | "erasure" | "pool-name", params?: import("@gravity-ui/i18n").Params | undefined) => string;
@@ -0,0 +1,4 @@
1
+ import { registerKeysets } from '../../../utils/i18n';
2
+ import en from './en.json';
3
+ const COMPONENT = 'ydb-group-info';
4
+ export const groupInfoKeyset = registerKeysets(COMPONENT, { en });
@@ -16,7 +16,7 @@ import './MetricChart.scss';
16
16
  const b = cn('ydb-metric-chart');
17
17
  settings.set({ plugins: [YagrPlugin] });
18
18
  const prepareWidgetData = (data, options = {}) => {
19
- const { dataType } = options;
19
+ const { dataType, scaleRange } = options;
20
20
  const defaultDataFormatter = getDefaultDataFormatter(dataType);
21
21
  const isDataEmpty = !data.metrics.length;
22
22
  const graphs = data.metrics.map((metric, index) => {
@@ -56,6 +56,8 @@ const prepareWidgetData = (data, options = {}) => {
56
56
  y: {
57
57
  type: 'linear',
58
58
  range: 'nice',
59
+ min: (scaleRange === null || scaleRange === void 0 ? void 0 : scaleRange.min) || 0,
60
+ max: scaleRange === null || scaleRange === void 0 ? void 0 : scaleRange.max,
59
61
  },
60
62
  },
61
63
  axes: {
@@ -19,6 +19,10 @@ export type ChartValue = number | string | null;
19
19
  export type ChartDataType = 'ms' | 'size' | 'percent';
20
20
  export interface ChartOptions {
21
21
  dataType?: ChartDataType;
22
+ scaleRange?: {
23
+ min?: number;
24
+ max?: number;
25
+ };
22
26
  }
23
27
  export type ChartDataStatus = 'loading' | 'success' | 'error';
24
28
  export type OnChartDataStatusChange = (newStatus: ChartDataStatus) => void;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const MonacoEditor: import("react").ForwardRefExoticComponent<import("react-monaco-editor").MonacoEditorProps & import("react").RefAttributes<typeof import("react-monaco-editor/lib/editor").default>>;
@@ -0,0 +1,7 @@
1
+ import { lazyComponent } from '../../utils/lazyComponent';
2
+ export const MonacoEditor = lazyComponent(async () => {
3
+ const Editor = (await import('react-monaco-editor')).default;
4
+ const { registerLanguages } = await import('../../utils/monaco');
5
+ registerLanguages();
6
+ return { Editor };
7
+ }, 'Editor');
@@ -1,7 +1,7 @@
1
1
  import { PopupProps } from '@gravity-ui/uikit';
2
- import type { NodesMap } from '../../../types/store/nodesList';
3
- import { InfoViewerItem } from '../../../components/InfoViewer';
4
- import type { PreparedPDisk } from '../../../utils/disks/types';
2
+ import type { NodesMap } from '../../types/store/nodesList';
3
+ import type { PreparedPDisk } from '../../utils/disks/types';
4
+ import { InfoViewerItem } from '../InfoViewer';
5
5
  import './PDiskPopup.scss';
6
6
  export declare const preparePDiskData: (data: PreparedPDisk, nodes?: NodesMap) => InfoViewerItem[];
7
7
  interface PDiskPopupProps extends PopupProps {
@@ -3,17 +3,18 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useMemo } from 'react';
4
4
  import cn from 'bem-cn-lite';
5
5
  import { Popup } from '@gravity-ui/uikit';
6
- import { InfoViewer } from '../../../components/InfoViewer';
7
- import { EFlag } from '../../../types/api/enums';
8
- import { getPDiskId } from '../../../utils/dataFormatters/dataFormatters';
9
- import { bytesToGB } from '../../../utils/utils';
6
+ import { EFlag } from '../../types/api/enums';
7
+ import { getPDiskId } from '../../utils/dataFormatters/dataFormatters';
8
+ import { bytesToGB } from '../../utils/utils';
9
+ import { EMPTY_DATA_PLACEHOLDER } from '../../utils/constants';
10
+ import { InfoViewer } from '../InfoViewer';
10
11
  import './PDiskPopup.scss';
11
12
  const b = cn('pdisk-storage-popup');
12
13
  const errorColors = [EFlag.Orange, EFlag.Red, EFlag.Yellow];
13
14
  export const preparePDiskData = (data, nodes) => {
14
15
  const { AvailableSize, TotalSize, State, PDiskId, NodeId, Path, Realtime, Type, Device } = data;
15
16
  const pdiskData = [
16
- { label: 'PDisk', value: getPDiskId({ NodeId, PDiskId }) || '-' },
17
+ { label: 'PDisk', value: getPDiskId({ NodeId, PDiskId }) || EMPTY_DATA_PLACEHOLDER },
17
18
  { label: 'State', value: State || 'not available' },
18
19
  { label: 'Type', value: Type || 'unknown' },
19
20
  ];
@@ -3,6 +3,7 @@ import './PageMeta.scss';
3
3
  interface PageMetaProps {
4
4
  items: (string | undefined)[];
5
5
  className?: string;
6
+ loading?: boolean;
6
7
  }
7
- export declare function PageMeta({ items, className }: PageMetaProps): JSX.Element;
8
+ export declare function PageMeta({ items, loading, className }: PageMetaProps): JSX.Element;
8
9
  export {};
@@ -1,7 +1,14 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Skeleton } from '@gravity-ui/uikit';
2
3
  import { cn } from '../../utils/cn';
3
4
  import './PageMeta.scss';
4
5
  const b = cn('ydb-page-meta');
5
- export function PageMeta({ items, className }) {
6
- return (_jsx("div", Object.assign({ className: b(null, className) }, { children: items.filter((item) => Boolean(item)).join('\u00a0\u00a0\u00B7\u00a0\u00a0') })));
6
+ export function PageMeta({ items, loading, className }) {
7
+ const renderContent = () => {
8
+ if (loading) {
9
+ return _jsx(Skeleton, { className: b('skeleton') });
10
+ }
11
+ return items.filter((item) => Boolean(item)).join('\u00a0\u00a0\u00B7\u00a0\u00a0');
12
+ };
13
+ return _jsx("div", Object.assign({ className: b(null, className) }, { children: renderContent() }));
7
14
  }
@@ -4,7 +4,16 @@
4
4
  display: flex;
5
5
  flex-flow: row nowrap;
6
6
 
7
+ height: var(--g-text-body-2-line-height);
8
+
9
+ text-wrap: nowrap;
10
+
7
11
  color: var(--g-color-text-primary);
8
12
 
9
13
  @include body-2-typography();
14
+
15
+ &__skeleton {
16
+ width: 80%;
17
+ height: 80%;
18
+ }
10
19
  }
@@ -8,6 +8,8 @@
8
8
  position: relative;
9
9
 
10
10
  &__layer {
11
+ background: var(--g-color-base-background);
12
+
11
13
  transition: transform 0.1s ease-out;
12
14
 
13
15
  &:first-child {
@@ -1,5 +1,5 @@
1
- import type { NodesMap } from '../../../types/store/nodesList';
2
- import type { PreparedVDisk } from '../../../utils/disks/types';
1
+ import type { NodesMap } from '../../types/store/nodesList';
2
+ import type { PreparedVDisk } from '../../utils/disks/types';
3
3
  import './VDisk.scss';
4
4
  interface VDiskProps {
5
5
  data?: PreparedVDisk;
@@ -1,15 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useState, useRef } from 'react';
3
3
  import cn from 'bem-cn-lite';
4
- import { InternalLink } from '../../../components/InternalLink';
5
- import routes, { createHref } from '../../../routes';
6
- import { stringifyVdiskId } from '../../../utils/dataFormatters/dataFormatters';
7
- import { isFullVDiskData } from '../../../utils/disks/helpers';
8
- import { STRUCTURE } from '../../Node/NodePages';
9
- import { DiskStateProgressBar } from '../DiskStateProgressBar';
10
- import { VDiskPopup } from '../VDiskPopup';
4
+ import routes, { createHref } from '../../routes';
5
+ import { stringifyVdiskId } from '../../utils/dataFormatters/dataFormatters';
6
+ import { isFullVDiskData } from '../../utils/disks/helpers';
7
+ import { STRUCTURE } from '../../containers/Node/NodePages';
8
+ import { VDiskPopup } from '../VDiskPopup/VDiskPopup';
9
+ import { DiskStateProgressBar } from '../DiskStateProgressBar/DiskStateProgressBar';
10
+ import { InternalLink } from '../InternalLink';
11
11
  import './VDisk.scss';
12
- const b = cn('vdisk-storage');
12
+ const b = cn('ydb-vdisk-component');
13
13
  export const VDisk = ({ data = {}, nodes, compact }) => {
14
14
  var _a, _b;
15
15
  const isFullData = isFullVDiskData(data);
@@ -1,4 +1,4 @@
1
- .vdisk-storage {
1
+ .ydb-vdisk-component {
2
2
  border-radius: 4px; // to match interactive area with disk shape
3
3
 
4
4
  &__content {
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import type { NodesMap } from '../../types/store/nodesList';
3
+ import type { PreparedVDisk } from '../../utils/disks/types';
4
+ interface VDiskWithDonorsStackProps {
5
+ data?: PreparedVDisk;
6
+ nodes?: NodesMap;
7
+ compact?: boolean;
8
+ className?: string;
9
+ stackClassName?: string;
10
+ }
11
+ export declare function VDiskWithDonorsStack({ data, nodes, compact, className, stackClassName, }: VDiskWithDonorsStackProps): JSX.Element;
12
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { stringifyVdiskId } from '../../utils/dataFormatters/dataFormatters';
3
+ import { isFullVDiskData } from '../../utils/disks/helpers';
4
+ import { Stack } from '../Stack/Stack';
5
+ import { VDisk } from './VDisk';
6
+ export function VDiskWithDonorsStack({ data, nodes, compact, className, stackClassName, }) {
7
+ const donors = data === null || data === void 0 ? void 0 : data.Donors;
8
+ const content = donors && donors.length > 0 ? (_jsxs(Stack, Object.assign({ className: stackClassName }, { children: [_jsx(VDisk, { data: data, nodes: nodes, compact: compact }), donors.map((donor) => {
9
+ const isFullData = isFullVDiskData(donor);
10
+ // donor and acceptor are always in the same group
11
+ return (_jsx(VDisk, { data: donor, nodes: nodes, compact: compact }, stringifyVdiskId(isFullData ? donor.VDiskId : donor)));
12
+ })] }))) : (_jsx(VDisk, { data: data, nodes: nodes, compact: compact }));
13
+ return _jsx("div", Object.assign({ className: className }, { children: content }));
14
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { PreparedVDisk } from '../../utils/disks/types';
3
+ import type { InfoViewerProps } from '../InfoViewer/InfoViewer';
4
+ import './VDiskInfo.scss';
5
+ interface VDiskInfoProps<T extends PreparedVDisk> extends Omit<InfoViewerProps, 'info'> {
6
+ data: T;
7
+ isVDiskPage?: boolean;
8
+ }
9
+ export declare function VDiskInfo<T extends PreparedVDisk>({ data, isVDiskPage, ...infoViewerProps }: VDiskInfoProps<T>): JSX.Element;
10
+ export {};
@@ -0,0 +1,113 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { valueIsDefined } from '../../utils';
4
+ import { formatStorageValuesToGb } from '../../utils/dataFormatters/dataFormatters';
5
+ import { bytesToSpeed } from '../../utils/utils';
6
+ import { cn } from '../../utils/cn';
7
+ import { createVDiskDeveloperUILink } from '../../utils/developerUI/developerUI';
8
+ import { getVDiskPagePath } from '../../routes';
9
+ import { InfoViewer } from '../InfoViewer';
10
+ import { EntityStatus } from '../EntityStatus/EntityStatus';
11
+ import { LinkWithIcon } from '../LinkWithIcon/LinkWithIcon';
12
+ import { ProgressViewer } from '../ProgressViewer/ProgressViewer';
13
+ import { vDiskInfoKeyset } from './i18n';
14
+ import './VDiskInfo.scss';
15
+ const b = cn('ydb-vdisk-info');
16
+ // eslint-disable-next-line complexity
17
+ export function VDiskInfo(_a) {
18
+ var _b, _c, _d, _e;
19
+ var { data, isVDiskPage = false } = _a, infoViewerProps = __rest(_a, ["data", "isVDiskPage"]);
20
+ const { AllocatedSize, DiskSpace, FrontQueues, Guid, Replicated, VDiskState, VDiskSlotId, Kind, SatisfactionRank, AvailableSize, HasUnreadableBlobs, IncarnationGuid, InstanceGuid, StoragePoolName, ReadThroughput, WriteThroughput, PDiskId, NodeId, } = data;
21
+ const vdiskInfo = [];
22
+ if (valueIsDefined(VDiskSlotId)) {
23
+ vdiskInfo.push({ label: vDiskInfoKeyset('slot-id'), value: VDiskSlotId });
24
+ }
25
+ if (valueIsDefined(StoragePoolName)) {
26
+ vdiskInfo.push({ label: vDiskInfoKeyset('pool-name'), value: StoragePoolName });
27
+ }
28
+ if (valueIsDefined(VDiskState)) {
29
+ vdiskInfo.push({
30
+ label: vDiskInfoKeyset('state-status'),
31
+ value: VDiskState,
32
+ });
33
+ }
34
+ if (Number(AllocatedSize) >= 0 && Number(AvailableSize) >= 0) {
35
+ vdiskInfo.push({
36
+ label: vDiskInfoKeyset('size'),
37
+ value: (_jsx(ProgressViewer, { value: AllocatedSize, capacity: Number(AllocatedSize) + Number(AvailableSize), formatValues: formatStorageValuesToGb, colorizeProgress: true })),
38
+ });
39
+ }
40
+ if (valueIsDefined(Kind)) {
41
+ vdiskInfo.push({ label: vDiskInfoKeyset('kind'), value: Kind });
42
+ }
43
+ if (valueIsDefined(Guid)) {
44
+ vdiskInfo.push({ label: vDiskInfoKeyset('guid'), value: Guid });
45
+ }
46
+ if (valueIsDefined(IncarnationGuid)) {
47
+ vdiskInfo.push({ label: vDiskInfoKeyset('incarnation-guid'), value: IncarnationGuid });
48
+ }
49
+ if (valueIsDefined(InstanceGuid)) {
50
+ vdiskInfo.push({ label: vDiskInfoKeyset('instance-guid'), value: InstanceGuid });
51
+ }
52
+ if (valueIsDefined(Replicated)) {
53
+ vdiskInfo.push({
54
+ label: vDiskInfoKeyset('replication-status'),
55
+ value: Replicated ? vDiskInfoKeyset('yes') : vDiskInfoKeyset('no'),
56
+ });
57
+ }
58
+ if (valueIsDefined(DiskSpace)) {
59
+ vdiskInfo.push({
60
+ label: vDiskInfoKeyset('space-status'),
61
+ value: _jsx(EntityStatus, { status: DiskSpace }),
62
+ });
63
+ }
64
+ if (valueIsDefined((_b = SatisfactionRank === null || SatisfactionRank === void 0 ? void 0 : SatisfactionRank.FreshRank) === null || _b === void 0 ? void 0 : _b.Flag)) {
65
+ vdiskInfo.push({
66
+ label: vDiskInfoKeyset('fresh-rank-satisfaction'),
67
+ value: _jsx(EntityStatus, { status: (_c = SatisfactionRank === null || SatisfactionRank === void 0 ? void 0 : SatisfactionRank.FreshRank) === null || _c === void 0 ? void 0 : _c.Flag }),
68
+ });
69
+ }
70
+ if (valueIsDefined((_d = SatisfactionRank === null || SatisfactionRank === void 0 ? void 0 : SatisfactionRank.LevelRank) === null || _d === void 0 ? void 0 : _d.Flag)) {
71
+ vdiskInfo.push({
72
+ label: vDiskInfoKeyset('level-rank-satisfaction'),
73
+ value: _jsx(EntityStatus, { status: (_e = SatisfactionRank === null || SatisfactionRank === void 0 ? void 0 : SatisfactionRank.LevelRank) === null || _e === void 0 ? void 0 : _e.Flag }),
74
+ });
75
+ }
76
+ if (valueIsDefined(FrontQueues)) {
77
+ vdiskInfo.push({
78
+ label: vDiskInfoKeyset('front-queues'),
79
+ value: _jsx(EntityStatus, { status: FrontQueues }),
80
+ });
81
+ }
82
+ if (valueIsDefined(HasUnreadableBlobs)) {
83
+ vdiskInfo.push({
84
+ label: vDiskInfoKeyset('has-unreadable-blobs'),
85
+ value: HasUnreadableBlobs ? vDiskInfoKeyset('yes') : vDiskInfoKeyset('no'),
86
+ });
87
+ }
88
+ if (valueIsDefined(ReadThroughput)) {
89
+ vdiskInfo.push({
90
+ label: vDiskInfoKeyset('read-throughput'),
91
+ value: bytesToSpeed(ReadThroughput),
92
+ });
93
+ }
94
+ if (valueIsDefined(WriteThroughput)) {
95
+ vdiskInfo.push({
96
+ label: vDiskInfoKeyset('write-throughput'),
97
+ value: bytesToSpeed(WriteThroughput),
98
+ });
99
+ }
100
+ if (valueIsDefined(PDiskId) && valueIsDefined(NodeId) && valueIsDefined(VDiskSlotId)) {
101
+ const vDiskPagePath = getVDiskPagePath(VDiskSlotId, PDiskId, NodeId);
102
+ const vDiskInternalViewerPath = createVDiskDeveloperUILink({
103
+ nodeId: NodeId,
104
+ pDiskId: PDiskId,
105
+ vDiskSlotId: VDiskSlotId,
106
+ });
107
+ vdiskInfo.push({
108
+ label: vDiskInfoKeyset('links'),
109
+ value: (_jsxs("span", Object.assign({ className: b('links') }, { children: [!isVDiskPage && (_jsx(LinkWithIcon, { title: vDiskInfoKeyset('vdisk-page'), url: vDiskPagePath, external: false })), _jsx(LinkWithIcon, { title: vDiskInfoKeyset('developer-ui'), url: vDiskInternalViewerPath })] }))),
110
+ });
111
+ }
112
+ return _jsx(InfoViewer, Object.assign({ info: vdiskInfo }, infoViewerProps));
113
+ }
@@ -0,0 +1,8 @@
1
+ .ydb-vdisk-info {
2
+ &__links {
3
+ display: flex;
4
+ flex-flow: row wrap;
5
+
6
+ gap: 12px;
7
+ }
8
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "slot-id": "VDisk Slot Id",
3
+ "pool-name": "Storage Pool Name",
4
+ "kind": "Kind",
5
+ "guid": "GUID",
6
+ "incarnation-guid": "Incarnation GUID",
7
+ "instance-guid": "Instance GUID",
8
+ "replication-status": "Replicated",
9
+ "state-status": "VDisk State",
10
+ "space-status": "Disk Space",
11
+ "fresh-rank-satisfaction": "Fresh Rank Satisfaction",
12
+ "level-rank-satisfaction": "Level Rank Satisfaction",
13
+ "front-queues": "Front Queues",
14
+ "has-unreadable-blobs": "Has Unreadable Blobs",
15
+ "size": "Size",
16
+ "read-throughput": "Read Throughput",
17
+ "write-throughput": "Write Throughput",
18
+ "links": "Links",
19
+ "vdisk-page": "VDisk Page",
20
+ "developer-ui": "Developer UI",
21
+ "yes": "Yes",
22
+ "no": "No"
23
+ }
@@ -0,0 +1 @@
1
+ export declare const vDiskInfoKeyset: (key: "size" | "kind" | "yes" | "no" | "links" | "guid" | "developer-ui" | "slot-id" | "pool-name" | "incarnation-guid" | "instance-guid" | "replication-status" | "state-status" | "space-status" | "fresh-rank-satisfaction" | "level-rank-satisfaction" | "front-queues" | "has-unreadable-blobs" | "read-throughput" | "write-throughput" | "vdisk-page", params?: import("@gravity-ui/i18n").Params | undefined) => string;
@@ -0,0 +1,4 @@
1
+ import { registerKeysets } from '../../../utils/i18n';
2
+ import en from './en.json';
3
+ const COMPONENT = 'ydb-vDisk-info';
4
+ export const vDiskInfoKeyset = registerKeysets(COMPONENT, { en });
@@ -1,7 +1,7 @@
1
1
  import { PopupProps } from '@gravity-ui/uikit';
2
- import type { NodesMap } from '../../../types/store/nodesList';
3
- import type { TVDiskStateInfo } from '../../../types/api/vdisk';
4
- import type { UnavailableDonor } from '../utils/types';
2
+ import type { NodesMap } from '../../types/store/nodesList';
3
+ import type { TVDiskStateInfo } from '../../types/api/vdisk';
4
+ import type { UnavailableDonor } from '../../utils/disks/types';
5
5
  import './VDiskPopup.scss';
6
6
  interface VDiskPopupProps extends PopupProps {
7
7
  data: TVDiskStateInfo | UnavailableDonor;
@@ -3,12 +3,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useMemo } from 'react';
4
4
  import cn from 'bem-cn-lite';
5
5
  import { Label, Popup } from '@gravity-ui/uikit';
6
- import { InfoViewer } from '../../../components/InfoViewer';
7
- import { EFlag } from '../../../types/api/enums';
8
- import { stringifyVdiskId } from '../../../utils/dataFormatters/dataFormatters';
9
- import { bytesToGB, bytesToSpeed } from '../../../utils/utils';
10
- import { isFullVDiskData } from '../../../utils/disks/helpers';
11
- import { preparePDiskData } from '../PDiskPopup';
6
+ import { EFlag } from '../../types/api/enums';
7
+ import { stringifyVdiskId } from '../../utils/dataFormatters/dataFormatters';
8
+ import { bytesToGB, bytesToSpeed } from '../../utils/utils';
9
+ import { isFullVDiskData } from '../../utils/disks/helpers';
10
+ import { EMPTY_DATA_PLACEHOLDER } from '../../utils/constants';
11
+ import { preparePDiskData } from '../PDiskPopup/PDiskPopup';
12
+ import { InfoViewer } from '../InfoViewer';
12
13
  import './VDiskPopup.scss';
13
14
  const b = cn('vdisk-storage-popup');
14
15
  const prepareUnavailableVDiskData = (data) => {
@@ -17,7 +18,7 @@ const prepareUnavailableVDiskData = (data) => {
17
18
  if (StoragePoolName) {
18
19
  vdiskData.push({ label: 'StoragePool', value: StoragePoolName });
19
20
  }
20
- vdiskData.push({ label: 'NodeId', value: NodeId !== null && NodeId !== void 0 ? NodeId : '–' }, { label: 'PDiskId', value: PDiskId !== null && PDiskId !== void 0 ? PDiskId : '–' }, { label: 'VSlotId', value: VSlotId !== null && VSlotId !== void 0 ? VSlotId : '–' });
21
+ vdiskData.push({ label: 'NodeId', value: NodeId !== null && NodeId !== void 0 ? NodeId : EMPTY_DATA_PLACEHOLDER }, { label: 'PDiskId', value: PDiskId !== null && PDiskId !== void 0 ? PDiskId : EMPTY_DATA_PLACEHOLDER }, { label: 'VSlotId', value: VSlotId !== null && VSlotId !== void 0 ? VSlotId : EMPTY_DATA_PLACEHOLDER });
21
22
  return vdiskData;
22
23
  };
23
24
  const prepareVDiskData = (data) => {
@@ -2,6 +2,7 @@ import type { HandleTableColumnsResize } from '../../utils/hooks/useTableResize'
2
2
  import type { Column, OnSort, SortOrderType } from './types';
3
3
  interface TableHeadCellProps<T> {
4
4
  column: Column<T>;
5
+ resizeable?: boolean;
5
6
  sortOrder?: SortOrderType;
6
7
  defaultSortOrder: SortOrderType;
7
8
  onSort?: (columnName: string) => void;
@@ -9,7 +10,7 @@ interface TableHeadCellProps<T> {
9
10
  onCellMount?: (element: Element) => void;
10
11
  onCellUnMount?: (element: Element) => void;
11
12
  }
12
- export declare const TableHeadCell: <T>({ column, sortOrder, defaultSortOrder, onSort, rowHeight, onCellMount, onCellUnMount, }: TableHeadCellProps<T>) => JSX.Element;
13
+ export declare const TableHeadCell: <T>({ column, resizeable, sortOrder, defaultSortOrder, onSort, rowHeight, onCellMount, onCellUnMount, }: TableHeadCellProps<T>) => JSX.Element;
13
14
  interface TableHeadProps<T> {
14
15
  columns: Column<T>[];
15
16
  onSort?: OnSort;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
- import { ASCENDING, DEFAULT_SORT_ORDER, DEFAULT_TABLE_ROW_HEIGHT, DESCENDING } from './constants';
3
+ import { ASCENDING, DEFAULT_RESIZEABLE, DEFAULT_SORT_ORDER, DEFAULT_TABLE_ROW_HEIGHT, DESCENDING, } from './constants';
4
4
  import { b } from './shared';
5
5
  const COLUMN_NAME_HTML_ATTRIBUTE = 'data-columnname';
6
6
  // Icon similar to original DataTable icons to keep the same tables across diferent pages and tabs
@@ -15,7 +15,7 @@ const ColumnSortIcon = ({ sortOrder, sortable, defaultSortOrder }) => {
15
15
  return null;
16
16
  }
17
17
  };
18
- export const TableHeadCell = ({ column, sortOrder, defaultSortOrder, onSort, rowHeight, onCellMount, onCellUnMount, }) => {
18
+ export const TableHeadCell = ({ column, resizeable, sortOrder, defaultSortOrder, onSort, rowHeight, onCellMount, onCellUnMount, }) => {
19
19
  var _a;
20
20
  const cellWrapperRef = useRef(null);
21
21
  useEffect(() => {
@@ -30,9 +30,7 @@ export const TableHeadCell = ({ column, sortOrder, defaultSortOrder, onSort, row
30
30
  };
31
31
  }, [onCellMount, onCellUnMount]);
32
32
  const content = (_a = column.header) !== null && _a !== void 0 ? _a : column.name;
33
- return (_jsx("th", { children: _jsx("div", Object.assign({ ref: cellWrapperRef, className: b('head-cell-wrapper', {
34
- resizeable: column.resizeable,
35
- }), style: {
33
+ return (_jsx("th", { children: _jsx("div", Object.assign({ ref: cellWrapperRef, className: b('head-cell-wrapper', { resizeable }), style: {
36
34
  height: `${rowHeight}px`,
37
35
  width: `${column.width}px`,
38
36
  } }, {
@@ -101,8 +99,10 @@ export const TableHead = ({ columns, onSort, onColumnsResize, defaultSortOrder =
101
99
  };
102
100
  const renderTableHead = () => {
103
101
  return (_jsx("thead", Object.assign({ className: b('head') }, { children: _jsx("tr", { children: columns.map((column) => {
102
+ var _a;
104
103
  const sortOrder = sortParams.columnId === column.name ? sortParams.sortOrder : undefined;
105
- return (_jsx(TableHeadCell, { column: column, sortOrder: sortOrder, defaultSortOrder: defaultSortOrder, onSort: handleSort, rowHeight: rowHeight, onCellMount: handleCellMount, onCellUnMount: handleCellUnMount }, column.name));
104
+ const resizeable = onColumnsResize && ((_a = column.resizeable) !== null && _a !== void 0 ? _a : DEFAULT_RESIZEABLE);
105
+ return (_jsx(TableHeadCell, { column: column, resizeable: resizeable, sortOrder: sortOrder, defaultSortOrder: defaultSortOrder, onSort: handleSort, rowHeight: rowHeight, onCellMount: handleCellMount, onCellUnMount: handleCellUnMount }, column.name));
106
106
  }) }) })));
107
107
  };
108
108
  return (_jsxs(_Fragment, { children: [renderTableColGroups(), renderTableHead()] }));
@@ -2,6 +2,7 @@ export declare const LEFT = "left";
2
2
  export declare const CENTER = "center";
3
3
  export declare const RIGHT = "right";
4
4
  export declare const DEFAULT_ALIGN = "left";
5
+ export declare const DEFAULT_RESIZEABLE = true;
5
6
  export declare const ASCENDING = 1;
6
7
  export declare const DESCENDING = -1;
7
8
  export declare const DEFAULT_SORT_ORDER = -1;
@@ -2,6 +2,7 @@ export const LEFT = 'left';
2
2
  export const CENTER = 'center';
3
3
  export const RIGHT = 'right';
4
4
  export const DEFAULT_ALIGN = LEFT;
5
+ export const DEFAULT_RESIZEABLE = true;
5
6
  export const ASCENDING = 1;
6
7
  export const DESCENDING = -1;
7
8
  export const DEFAULT_SORT_ORDER = DESCENDING;