ydb-embedded-ui 8.24.1 → 8.26.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 (363) hide show
  1. package/dist/assets/icons/overview.svg +1 -0
  2. package/dist/components/ConnectToDB/ConnectToDBDialog.js +17 -2
  3. package/dist/components/ConnectToDB/ConnectToDBDialog.js.map +1 -1
  4. package/dist/components/ConnectToDB/__test__/utils.test.d.ts +1 -0
  5. package/dist/components/ConnectToDB/__test__/utils.test.js +34 -0
  6. package/dist/components/ConnectToDB/__test__/utils.test.js.map +1 -0
  7. package/dist/components/ConnectToDB/snippets.d.ts +1 -1
  8. package/dist/components/ConnectToDB/snippets.js +6 -1
  9. package/dist/components/ConnectToDB/snippets.js.map +1 -1
  10. package/dist/components/ConnectToDB/utils.d.ts +1 -0
  11. package/dist/components/ConnectToDB/utils.js +19 -0
  12. package/dist/components/ConnectToDB/utils.js.map +1 -0
  13. package/dist/components/CopyLinkButton/CopyLinkButton.d.ts +6 -0
  14. package/dist/components/CopyLinkButton/CopyLinkButton.js +33 -0
  15. package/dist/components/CopyLinkButton/CopyLinkButton.js.map +1 -0
  16. package/dist/components/CopyLinkButton/CopyLinkButton.scss +6 -0
  17. package/dist/components/CopyLinkButton/i18n/en.json +4 -0
  18. package/dist/components/CopyLinkButton/i18n/index.d.ts +2 -0
  19. package/dist/components/CopyLinkButton/i18n/index.js +5 -0
  20. package/dist/components/CopyLinkButton/i18n/index.js.map +1 -0
  21. package/dist/components/DebouncedInput/DebouncedTextInput.d.ts +6 -0
  22. package/dist/components/DebouncedInput/DebouncedTextInput.js +8 -0
  23. package/dist/components/DebouncedInput/DebouncedTextInput.js.map +1 -0
  24. package/dist/components/DoughnutMetrics/DoughnutMetrics.d.ts +3 -1
  25. package/dist/components/DoughnutMetrics/DoughnutMetrics.js +13 -12
  26. package/dist/components/DoughnutMetrics/DoughnutMetrics.js.map +1 -1
  27. package/dist/components/DoughnutMetrics/DoughnutMetrics.scss +14 -7
  28. package/dist/components/Drawer/Drawer.d.ts +30 -0
  29. package/dist/components/Drawer/Drawer.js +83 -0
  30. package/dist/components/Drawer/Drawer.js.map +1 -0
  31. package/dist/components/Drawer/Drawer.scss +38 -0
  32. package/dist/components/Drawer/DrawerContext.d.ts +13 -0
  33. package/dist/components/Drawer/DrawerContext.js +47 -0
  34. package/dist/components/Drawer/DrawerContext.js.map +1 -0
  35. package/dist/components/Drawer/index.d.ts +3 -0
  36. package/dist/components/Drawer/index.js +3 -0
  37. package/dist/components/Drawer/index.js.map +1 -0
  38. package/dist/components/EmptyState/EmptyState.scss +3 -0
  39. package/dist/components/EntityStatusNew/EntityStatus.d.ts +23 -0
  40. package/dist/components/EntityStatusNew/EntityStatus.js +47 -0
  41. package/dist/components/EntityStatusNew/EntityStatus.js.map +1 -0
  42. package/dist/components/EntityStatusNew/EntityStatus.scss +10 -0
  43. package/dist/components/EntityStatusNew/i18n/en.json +14 -0
  44. package/dist/components/EntityStatusNew/i18n/index.d.ts +2 -0
  45. package/dist/components/EntityStatusNew/i18n/index.js +5 -0
  46. package/dist/components/EntityStatusNew/i18n/index.js.map +1 -0
  47. package/dist/components/EntityStatusNew/utils.d.ts +2 -0
  48. package/dist/components/EntityStatusNew/utils.js +23 -0
  49. package/dist/components/EntityStatusNew/utils.js.map +1 -0
  50. package/dist/components/HoverPopup/HoverPopup.d.ts +2 -2
  51. package/dist/components/HoverPopup/HoverPopup.js +3 -3
  52. package/dist/components/HoverPopup/HoverPopup.js.map +1 -1
  53. package/dist/components/JsonViewer/JsonViewer.d.ts +7 -3
  54. package/dist/components/JsonViewer/JsonViewer.js +11 -1
  55. package/dist/components/JsonViewer/JsonViewer.js.map +1 -1
  56. package/dist/components/JsonViewer/unipika/unipika.js +9 -1
  57. package/dist/components/JsonViewer/unipika/unipika.js.map +1 -1
  58. package/dist/components/MemoryViewer/MemoryViewer.js +2 -2
  59. package/dist/components/MemoryViewer/MemoryViewer.js.map +1 -1
  60. package/dist/components/MetricChart/getDefaultDataFormatter.js +4 -11
  61. package/dist/components/MetricChart/getDefaultDataFormatter.js.map +1 -1
  62. package/dist/components/MultilineTableHeader/MultilineTableHeader.d.ts +6 -0
  63. package/dist/components/MultilineTableHeader/MultilineTableHeader.js +11 -0
  64. package/dist/components/MultilineTableHeader/MultilineTableHeader.js.map +1 -0
  65. package/dist/components/MultilineTableHeader/MultilineTableHeader.scss +3 -0
  66. package/dist/components/PaginatedTable/PaginatedTable.d.ts +5 -3
  67. package/dist/components/PaginatedTable/PaginatedTable.js +17 -8
  68. package/dist/components/PaginatedTable/PaginatedTable.js.map +1 -1
  69. package/dist/components/PaginatedTable/PaginatedTable.scss +33 -14
  70. package/dist/components/PaginatedTable/TableChunk.d.ts +4 -3
  71. package/dist/components/PaginatedTable/TableChunk.js +10 -5
  72. package/dist/components/PaginatedTable/TableChunk.js.map +1 -1
  73. package/dist/components/PaginatedTable/TableHead.js +7 -1
  74. package/dist/components/PaginatedTable/TableHead.js.map +1 -1
  75. package/dist/components/PaginatedTable/TableRow.d.ts +2 -4
  76. package/dist/components/PaginatedTable/TableRow.js +6 -5
  77. package/dist/components/PaginatedTable/TableRow.js.map +1 -1
  78. package/dist/components/PaginatedTable/types.d.ts +1 -1
  79. package/dist/components/PaginatedTable/useScrollBasedChunks.js +7 -0
  80. package/dist/components/PaginatedTable/useScrollBasedChunks.js.map +1 -1
  81. package/dist/components/Search/Search.d.ts +2 -1
  82. package/dist/components/Search/Search.js +3 -21
  83. package/dist/components/Search/Search.js.map +1 -1
  84. package/dist/components/StatusIcon/StatusIcon.js +3 -1
  85. package/dist/components/StatusIcon/StatusIcon.js.map +1 -1
  86. package/dist/components/StatusIcon/StatusIcon.scss +6 -0
  87. package/dist/components/StatusIconNew/StatusIcon.d.ts +7 -0
  88. package/dist/components/StatusIconNew/StatusIcon.js +19 -0
  89. package/dist/components/StatusIconNew/StatusIcon.js.map +1 -0
  90. package/dist/components/SyntaxHighlighter/YDBSyntaxHighlighter.js +12 -1
  91. package/dist/components/SyntaxHighlighter/YDBSyntaxHighlighter.js.map +1 -1
  92. package/dist/components/Tags/Tags.d.ts +1 -3
  93. package/dist/components/Tags/Tags.js +3 -5
  94. package/dist/components/Tags/Tags.js.map +1 -1
  95. package/dist/components/VDisk/VDisk.js +1 -1
  96. package/dist/components/VDisk/VDisk.js.map +1 -1
  97. package/dist/components/nodesColumns/columns.js +1 -0
  98. package/dist/components/nodesColumns/columns.js.map +1 -1
  99. package/dist/containers/Cluster/Cluster.js +8 -6
  100. package/dist/containers/Cluster/Cluster.js.map +1 -1
  101. package/dist/containers/Cluster/Cluster.scss +7 -8
  102. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.d.ts +4 -2
  103. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +27 -17
  104. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
  105. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.scss +2 -8
  106. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.d.ts +8 -0
  107. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.js +41 -0
  108. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.js.map +1 -0
  109. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.scss +14 -0
  110. package/dist/containers/Cluster/ClusterInfo/utils/utils.d.ts +3 -0
  111. package/dist/containers/Cluster/ClusterInfo/utils/utils.js +21 -11
  112. package/dist/containers/Cluster/ClusterInfo/utils/utils.js.map +1 -1
  113. package/dist/containers/Cluster/{ClusterDashboard/ClusterDashboard.d.ts → ClusterOverview/ClusterOverview.d.ts} +6 -3
  114. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.js +63 -0
  115. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.js.map +1 -0
  116. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.scss +70 -0
  117. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCard.d.ts +21 -0
  118. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCard.js +32 -0
  119. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCard.js.map +1 -0
  120. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCores.d.ts +5 -0
  121. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCores.js +30 -0
  122. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCores.js.map +1 -0
  123. package/dist/containers/Cluster/{ClusterDashboard → ClusterOverview}/components/ClusterMetricsMemory.d.ts +1 -1
  124. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsMemory.js +24 -0
  125. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsMemory.js.map +1 -0
  126. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsNetwork.d.ts +7 -0
  127. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsNetwork.js +28 -0
  128. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsNetwork.js.map +1 -0
  129. package/dist/containers/Cluster/{ClusterDashboard → ClusterOverview}/components/ClusterMetricsStorage.d.ts +2 -1
  130. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsStorage.js +24 -0
  131. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsStorage.js.map +1 -0
  132. package/dist/containers/Cluster/{ClusterDashboard → ClusterOverview}/shared.d.ts +6 -3
  133. package/dist/containers/Cluster/ClusterOverview/shared.js.map +1 -0
  134. package/dist/containers/Cluster/ClusterOverview/utils.d.ts +19 -0
  135. package/dist/containers/Cluster/ClusterOverview/utils.js +32 -0
  136. package/dist/containers/Cluster/ClusterOverview/utils.js.map +1 -0
  137. package/dist/containers/Cluster/i18n/en.json +19 -9
  138. package/dist/containers/Cluster/i18n/index.d.ts +1 -1
  139. package/dist/containers/Cluster/utils.d.ts +2 -4
  140. package/dist/containers/Cluster/utils.js +9 -6
  141. package/dist/containers/Cluster/utils.js.map +1 -1
  142. package/dist/containers/Header/Header.js +4 -5
  143. package/dist/containers/Header/Header.js.map +1 -1
  144. package/dist/containers/Header/breadcrumbs.js +1 -4
  145. package/dist/containers/Header/breadcrumbs.js.map +1 -1
  146. package/dist/containers/Nodes/NodesTable.js +3 -2
  147. package/dist/containers/Nodes/NodesTable.js.map +1 -1
  148. package/dist/containers/Nodes/shared.d.ts +1 -2
  149. package/dist/containers/Nodes/shared.js +0 -9
  150. package/dist/containers/Nodes/shared.js.map +1 -1
  151. package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js +3 -3
  152. package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js.map +1 -1
  153. package/dist/containers/Storage/EmptyFilter/EmptyFilter.d.ts +2 -1
  154. package/dist/containers/Storage/EmptyFilter/EmptyFilter.js +1 -1
  155. package/dist/containers/Storage/EmptyFilter/EmptyFilter.js.map +1 -1
  156. package/dist/containers/Storage/PDisk/PDisk.d.ts +2 -1
  157. package/dist/containers/Storage/PDisk/PDisk.js +2 -2
  158. package/dist/containers/Storage/PDisk/PDisk.js.map +1 -1
  159. package/dist/containers/Storage/PDisk/PDisk.scss +5 -1
  160. package/dist/containers/Storage/PaginatedStorageGroups.js +2 -1
  161. package/dist/containers/Storage/PaginatedStorageGroups.js.map +1 -1
  162. package/dist/containers/Storage/PaginatedStorageNodes.js +19 -5
  163. package/dist/containers/Storage/PaginatedStorageNodes.js.map +1 -1
  164. package/dist/containers/Storage/StorageGroups/PaginatedStorageGroupsTable.js +1 -1
  165. package/dist/containers/Storage/StorageGroups/PaginatedStorageGroupsTable.js.map +1 -1
  166. package/dist/containers/Storage/StorageNodes/PaginatedStorageNodesTable.d.ts +4 -3
  167. package/dist/containers/Storage/StorageNodes/PaginatedStorageNodesTable.js +2 -2
  168. package/dist/containers/Storage/StorageNodes/PaginatedStorageNodesTable.js.map +1 -1
  169. package/dist/containers/Storage/StorageNodes/columns/StorageNodesColumns.scss +1 -4
  170. package/dist/containers/Storage/StorageNodes/columns/columns.d.ts +1 -1
  171. package/dist/containers/Storage/StorageNodes/columns/columns.js +6 -11
  172. package/dist/containers/Storage/StorageNodes/columns/columns.js.map +1 -1
  173. package/dist/containers/Storage/StorageNodes/columns/hooks.d.ts +1 -1
  174. package/dist/containers/Storage/StorageNodes/columns/hooks.js +8 -3
  175. package/dist/containers/Storage/StorageNodes/columns/hooks.js.map +1 -1
  176. package/dist/containers/Storage/StorageNodes/columns/types.d.ts +5 -0
  177. package/dist/containers/Storage/StorageNodes/getNodes.js +1 -0
  178. package/dist/containers/Storage/StorageNodes/getNodes.js.map +1 -1
  179. package/dist/containers/Storage/shared.d.ts +0 -2
  180. package/dist/containers/Storage/shared.js +0 -9
  181. package/dist/containers/Storage/shared.js.map +1 -1
  182. package/dist/containers/Storage/types.d.ts +8 -0
  183. package/dist/containers/Storage/utils/index.d.ts +1 -0
  184. package/dist/containers/Storage/utils/index.js +1 -0
  185. package/dist/containers/Storage/utils/index.js.map +1 -1
  186. package/dist/containers/Storage/utils/useStorageColumnsSettings.d.ts +6 -0
  187. package/dist/containers/Storage/utils/useStorageColumnsSettings.js +35 -0
  188. package/dist/containers/Storage/utils/useStorageColumnsSettings.js.map +1 -0
  189. package/dist/containers/Tablet/components/TabletInfo/i18n/index.d.ts +1 -1
  190. package/dist/containers/Tenant/Diagnostics/Diagnostics.js +16 -17
  191. package/dist/containers/Tenant/Diagnostics/Diagnostics.js.map +1 -1
  192. package/dist/containers/Tenant/Diagnostics/Diagnostics.scss +8 -2
  193. package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.d.ts +6 -33
  194. package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js +40 -6
  195. package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js.map +1 -1
  196. package/dist/containers/Tenant/Diagnostics/Partitions/Headers/Headers.d.ts +0 -5
  197. package/dist/containers/Tenant/Diagnostics/Partitions/Headers/Headers.js +0 -1
  198. package/dist/containers/Tenant/Diagnostics/Partitions/Headers/Headers.js.map +1 -1
  199. package/dist/containers/Tenant/Diagnostics/Partitions/Headers/Headers.scss +0 -4
  200. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js +2 -1
  201. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js.map +1 -1
  202. package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.scss +1 -15
  203. package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js +24 -10
  204. package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js.map +1 -1
  205. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +3 -3
  206. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
  207. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +2 -1
  208. package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
  209. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +3 -1
  210. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
  211. package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.js +7 -1
  212. package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.js.map +1 -1
  213. package/dist/containers/Tenant/Diagnostics/TopQueries/columns/constants.js +1 -0
  214. package/dist/containers/Tenant/Diagnostics/TopQueries/columns/constants.js.map +1 -1
  215. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useRunningQueriesSort.d.ts +9 -0
  216. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useRunningQueriesSort.js +37 -0
  217. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useRunningQueriesSort.js.map +1 -0
  218. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useSortParam.d.ts +10 -0
  219. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useSortParam.js +50 -0
  220. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useSortParam.js.map +1 -0
  221. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useTopQueriesSort.d.ts +9 -0
  222. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useTopQueriesSort.js +40 -0
  223. package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useTopQueriesSort.js.map +1 -0
  224. package/dist/containers/Tenant/Diagnostics/TopQueries/utils.d.ts +0 -10
  225. package/dist/containers/Tenant/Diagnostics/TopQueries/utils.js +0 -29
  226. package/dist/containers/Tenant/Diagnostics/TopQueries/utils.js.map +1 -1
  227. package/dist/containers/Tenant/Diagnostics/TopicData/FullValue.d.ts +7 -0
  228. package/dist/containers/Tenant/Diagnostics/TopicData/FullValue.js +14 -0
  229. package/dist/containers/Tenant/Diagnostics/TopicData/FullValue.js.map +1 -0
  230. package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.d.ts +9 -0
  231. package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js +140 -0
  232. package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js.map +1 -0
  233. package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.scss +28 -0
  234. package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.d.ts +14 -0
  235. package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js +68 -0
  236. package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js.map +1 -0
  237. package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.d.ts +1 -0
  238. package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js +122 -0
  239. package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js.map +1 -0
  240. package/dist/containers/Tenant/Diagnostics/TopicData/columns/Columns.scss +22 -0
  241. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.d.ts +7 -0
  242. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js +154 -0
  243. package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js.map +1 -0
  244. package/dist/containers/Tenant/Diagnostics/TopicData/getData.d.ts +15 -0
  245. package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +54 -0
  246. package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -0
  247. package/dist/containers/Tenant/Diagnostics/TopicData/i18n/en.json +28 -0
  248. package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.d.ts +2 -0
  249. package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.js +5 -0
  250. package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.js.map +1 -0
  251. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicDataQueryParams.d.ts +11 -0
  252. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicDataQueryParams.js +34 -0
  253. package/dist/containers/Tenant/Diagnostics/TopicData/useTopicDataQueryParams.js.map +1 -0
  254. package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.d.ts +7 -0
  255. package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js +51 -0
  256. package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js.map +1 -0
  257. package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.d.ts +30 -0
  258. package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js +30 -0
  259. package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js.map +1 -0
  260. package/dist/containers/Tenant/ObjectSummary/ObjectTree.js +8 -2
  261. package/dist/containers/Tenant/ObjectSummary/ObjectTree.js.map +1 -1
  262. package/dist/containers/Tenant/ObjectSummary/SchemaTree/SchemaTree.js +2 -3
  263. package/dist/containers/Tenant/ObjectSummary/SchemaTree/SchemaTree.js.map +1 -1
  264. package/dist/containers/Tenant/TenantPages.d.ts +2 -1
  265. package/dist/containers/Tenant/TenantPages.js.map +1 -1
  266. package/dist/containers/Tenant/utils/schema.d.ts +1 -0
  267. package/dist/containers/Tenant/utils/schema.js +1 -0
  268. package/dist/containers/Tenant/utils/schema.js.map +1 -1
  269. package/dist/containers/Tenants/Tenants.js +1 -1
  270. package/dist/containers/Tenants/Tenants.js.map +1 -1
  271. package/dist/containers/Tenants/Tenants.scss +0 -4
  272. package/dist/containers/UserSettings/i18n/en.json +1 -0
  273. package/dist/containers/UserSettings/i18n/index.d.ts +1 -1
  274. package/dist/containers/UserSettings/settings.d.ts +1 -0
  275. package/dist/containers/UserSettings/settings.js +11 -2
  276. package/dist/containers/UserSettings/settings.js.map +1 -1
  277. package/dist/services/api/meta.d.ts +4 -1
  278. package/dist/services/api/meta.js +2 -1
  279. package/dist/services/api/meta.js.map +1 -1
  280. package/dist/services/api/viewer.d.ts +5 -2
  281. package/dist/services/api/viewer.js +7 -1
  282. package/dist/services/api/viewer.js.map +1 -1
  283. package/dist/services/settings.d.ts +2 -0
  284. package/dist/services/settings.js +3 -1
  285. package/dist/services/settings.js.map +1 -1
  286. package/dist/store/reducers/capabilities/hooks.d.ts +1 -0
  287. package/dist/store/reducers/capabilities/hooks.js +3 -0
  288. package/dist/store/reducers/capabilities/hooks.js.map +1 -1
  289. package/dist/store/reducers/cluster/cluster.d.ts +2 -2
  290. package/dist/store/reducers/cluster/cluster.js +13 -6
  291. package/dist/store/reducers/cluster/cluster.js.map +1 -1
  292. package/dist/store/reducers/executeTopQueries/executeTopQueries.js +4 -2
  293. package/dist/store/reducers/executeTopQueries/executeTopQueries.js.map +1 -1
  294. package/dist/store/reducers/storage/types.d.ts +6 -2
  295. package/dist/store/reducers/storage/utils.d.ts +2 -2
  296. package/dist/store/reducers/storage/utils.js +10 -9
  297. package/dist/store/reducers/storage/utils.js.map +1 -1
  298. package/dist/store/reducers/tenant/constants.d.ts +1 -0
  299. package/dist/store/reducers/tenant/constants.js +1 -0
  300. package/dist/store/reducers/tenant/constants.js.map +1 -1
  301. package/dist/store/reducers/tenant/tenant.d.ts +1 -0
  302. package/dist/store/reducers/tenant/tenant.js +8 -2
  303. package/dist/store/reducers/tenant/tenant.js.map +1 -1
  304. package/dist/store/reducers/tenants/tenants.js +2 -2
  305. package/dist/store/reducers/tenants/tenants.js.map +1 -1
  306. package/dist/store/reducers/topic.d.ts +12 -0
  307. package/dist/store/reducers/topic.js +16 -0
  308. package/dist/store/reducers/topic.js.map +1 -1
  309. package/dist/styles/mixins.scss +0 -20
  310. package/dist/types/api/capabilities.d.ts +1 -1
  311. package/dist/types/api/cluster.d.ts +8 -1
  312. package/dist/types/api/cluster.js +7 -3
  313. package/dist/types/api/cluster.js.map +1 -1
  314. package/dist/types/api/topic.d.ts +117 -0
  315. package/dist/utils/constants.d.ts +2 -0
  316. package/dist/utils/constants.js +2 -0
  317. package/dist/utils/constants.js.map +1 -1
  318. package/dist/utils/dataFormatters/dataFormatters.js +1 -1
  319. package/dist/utils/dataFormatters/dataFormatters.js.map +1 -1
  320. package/dist/utils/hooks/useDebouncedValue.d.ts +5 -0
  321. package/dist/utils/hooks/useDebouncedValue.js +22 -0
  322. package/dist/utils/hooks/useDebouncedValue.js.map +1 -0
  323. package/dist/utils/renderPaginatedTableErrorMessage.d.ts +2 -0
  324. package/dist/utils/renderPaginatedTableErrorMessage.js +10 -0
  325. package/dist/utils/renderPaginatedTableErrorMessage.js.map +1 -0
  326. package/dist/utils/utils.d.ts +1 -0
  327. package/dist/utils/utils.js +7 -0
  328. package/dist/utils/utils.js.map +1 -1
  329. package/package.json +1 -1
  330. package/dist/assets/icons/user-check.svg +0 -1
  331. package/dist/components/Tag/Tag.d.ts +0 -9
  332. package/dist/components/Tag/Tag.js +0 -8
  333. package/dist/components/Tag/Tag.js.map +0 -1
  334. package/dist/components/Tag/Tag.scss +0 -18
  335. package/dist/components/Tag/index.d.ts +0 -1
  336. package/dist/components/Tag/index.js +0 -2
  337. package/dist/components/Tag/index.js.map +0 -1
  338. package/dist/containers/Cluster/ClusterDashboard/ClusterDashboard.js +0 -71
  339. package/dist/containers/Cluster/ClusterDashboard/ClusterDashboard.js.map +0 -1
  340. package/dist/containers/Cluster/ClusterDashboard/ClusterDashboard.scss +0 -52
  341. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsCard.d.ts +0 -17
  342. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsCard.js +0 -20
  343. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsCard.js.map +0 -1
  344. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsCores.d.ts +0 -5
  345. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsCores.js +0 -26
  346. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsCores.js.map +0 -1
  347. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsMemory.js +0 -20
  348. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsMemory.js.map +0 -1
  349. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsStorage.js +0 -20
  350. package/dist/containers/Cluster/ClusterDashboard/components/ClusterMetricsStorage.js.map +0 -1
  351. package/dist/containers/Cluster/ClusterDashboard/shared.js.map +0 -1
  352. package/dist/containers/Cluster/ClusterDashboard/utils.d.ts +0 -19
  353. package/dist/containers/Cluster/ClusterDashboard/utils.js +0 -63
  354. package/dist/containers/Cluster/ClusterDashboard/utils.js.map +0 -1
  355. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStatsBars.d.ts +0 -8
  356. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStatsBars.js +0 -42
  357. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStatsBars.js.map +0 -1
  358. package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStatsBars.scss +0 -6
  359. package/dist/containers/Cluster/ClusterInfo/components/NodesState/NodesState.d.ts +0 -8
  360. package/dist/containers/Cluster/ClusterInfo/components/NodesState/NodesState.js +0 -8
  361. package/dist/containers/Cluster/ClusterInfo/components/NodesState/NodesState.js.map +0 -1
  362. package/dist/containers/Cluster/ClusterInfo/components/NodesState/NodesState.scss +0 -17
  363. /package/dist/containers/Cluster/{ClusterDashboard → ClusterOverview}/shared.js +0 -0
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 16 15" ><path fill-rule="evenodd" clip-rule="evenodd" d="M14.9801 1.82618C15.2983 1.56101 15.3413 1.08809 15.0762 0.769881C14.811 0.451673 14.3381 0.40868 14.0199 0.673853L10.3757 3.71062C10.0432 3.98775 9.59091 4.07309 9.18023 3.93619L7.02502 3.21779C5.95599 2.86145 4.77774 3.19335 4.05189 4.0553L0.926317 7.76692C0.659507 8.08375 0.700062 8.55689 1.0169 8.8237C1.33373 9.09051 1.80687 9.04996 2.07368 8.73312L5.19926 5.0215C5.52919 4.62971 6.06476 4.47884 6.55068 4.64082L8.70589 5.35922C9.60939 5.66039 10.6044 5.47264 11.336 4.86295L14.9801 1.82618ZM13.5 8.00002H11.5C11.2239 8.00002 11 8.22388 11 8.50002V10.5V13C11 13.2762 11.2239 13.5 11.5 13.5H13H13.5C13.7761 13.5 14 13.2762 14 13V8.50002C14 8.22388 13.7761 8.00002 13.5 8.00002ZM9.5 13C9.5 13.2762 9.27614 13.5 9 13.5H7C6.72386 13.5 6.5 13.2762 6.5 13V12.5V10.5C6.5 10.2239 6.72386 10 7 10H9C9.27614 10 9.5 10.2239 9.5 10.5V13ZM5 13C5 13.2762 4.77614 13.5 4.5 13.5H3.5H2.5C2.22386 13.5 2 13.2762 2 13V12.5C2 12.2239 2.22386 12 2.5 12H4.5C4.77614 12 5 12.2239 5 12.5V13ZM2.5 15H3.5H4.5H7H9H11.5H13H13.5C14.6046 15 15.5 14.1046 15.5 13V8.50002C15.5 7.39545 14.6046 6.50002 13.5 6.50002H11.5C10.3954 6.50002 9.5 7.39545 9.5 8.50002V8.56303C9.34019 8.5219 9.17265 8.50002 9 8.50002H7C5.89543 8.50002 5 9.39545 5 10.5V10.563C4.84019 10.5219 4.67265 10.5 4.5 10.5H2.5C1.39543 10.5 0.5 11.3954 0.5 12.5V13C0.5 14.1046 1.39543 15 2.5 15Z" fill="currentColor" /></svg>
@@ -2,8 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import NiceModal from '@ebay/nice-modal-react';
4
4
  import { Dialog, Tabs } from '@gravity-ui/uikit';
5
+ import { skipToken } from '@reduxjs/toolkit/query';
6
+ import { tenantApi } from '../../store/reducers/tenant/tenant';
5
7
  import { cn } from '../../utils/cn';
8
+ import { useTypedSelector } from '../../utils/hooks';
9
+ import { useClusterNameFromQuery } from '../../utils/hooks/useDatabaseFromQuery';
6
10
  import { LinkWithIcon } from '../LinkWithIcon/LinkWithIcon';
11
+ import { LoaderWrapper } from '../LoaderWrapper/LoaderWrapper';
7
12
  import { YDBSyntaxHighlighterLazy } from '../SyntaxHighlighter/lazy';
8
13
  import { getDocsLink } from './getDocsLink';
9
14
  import i18n from './i18n';
@@ -20,11 +25,21 @@ const connectionTabs = [
20
25
  { id: 'php', title: 'PHP' },
21
26
  { id: 'python', title: 'Python' },
22
27
  ];
23
- function ConnectToDBDialog({ open, onClose, database, endpoint }) {
28
+ function ConnectToDBDialog({ open, onClose, database, endpoint: endpointFromProps, }) {
29
+ var _a;
24
30
  const [activeTab, setActiveTab] = React.useState('bash');
31
+ const clusterName = useClusterNameFromQuery();
32
+ const singleClusterMode = useTypedSelector((state) => state.singleClusterMode);
33
+ // If there is endpoint from props, we don't need to request tenant data
34
+ // Also we should not request tenant data if we are in single cluster mode
35
+ // Since there is no ControlPlane data in this case
36
+ const shouldRequestTenantData = database && !endpointFromProps && !singleClusterMode;
37
+ const params = shouldRequestTenantData ? { path: database, clusterName } : skipToken;
38
+ const { currentData: tenantData, isLoading: isTenantDataLoading } = tenantApi.useGetTenantInfoQuery(params);
39
+ const endpoint = endpointFromProps !== null && endpointFromProps !== void 0 ? endpointFromProps : (_a = tenantData === null || tenantData === void 0 ? void 0 : tenantData.ControlPlane) === null || _a === void 0 ? void 0 : _a.endpoint;
25
40
  const snippet = getSnippetCode(activeTab, { database, endpoint });
26
41
  const docsLink = getDocsLink(activeTab);
27
- return (_jsxs(Dialog, { open: open, hasCloseButton: true, onClose: onClose, size: "l", children: [_jsx(Dialog.Header, { caption: i18n('header') }), _jsxs(Dialog.Body, { children: [_jsx("div", { children: i18n('connection-info-message') }), _jsx(Tabs, { size: "m", allowNotSelected: false, activeTab: activeTab, items: connectionTabs, onSelectTab: (tab) => setActiveTab(tab), className: b('dialog-tabs') }), _jsx("div", { className: b('snippet-container'), children: _jsx(YDBSyntaxHighlighterLazy, { language: activeTab, text: snippet, transparentBackground: false, withClipboardButton: { alwaysVisible: true } }) }), docsLink ? (_jsx(LinkWithIcon, { className: b('docs'), title: i18n('documentation'), url: docsLink })) : null] }), _jsx(Dialog.Footer, { onClickButtonCancel: onClose, textButtonCancel: i18n('close') })] }));
42
+ return (_jsxs(Dialog, { open: open, hasCloseButton: true, onClose: onClose, size: "l", children: [_jsx(Dialog.Header, { caption: i18n('header') }), _jsxs(Dialog.Body, { children: [_jsx("div", { children: i18n('connection-info-message') }), _jsx(Tabs, { size: "m", allowNotSelected: false, activeTab: activeTab, items: connectionTabs, onSelectTab: (tab) => setActiveTab(tab), className: b('dialog-tabs') }), _jsx("div", { className: b('snippet-container'), children: _jsx(LoaderWrapper, { loading: isTenantDataLoading, children: _jsx(YDBSyntaxHighlighterLazy, { language: activeTab, text: snippet, transparentBackground: false, withClipboardButton: { alwaysVisible: true } }) }) }), docsLink ? (_jsx(LinkWithIcon, { className: b('docs'), title: i18n('documentation'), url: docsLink })) : null] }), _jsx(Dialog.Footer, { onClickButtonCancel: onClose, textButtonCancel: i18n('close') })] }));
28
43
  }
29
44
  const ConnectToDBDialogNiceModal = NiceModal.create((props) => {
30
45
  const modal = NiceModal.useModal();
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectToDBDialog.js","sourceRoot":"","sources":["../../../src/components/ConnectToDB/ConnectToDBDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAC,wBAAwB,EAAC,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAG1C,OAAO,oBAAoB,CAAC;AAE5B,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;AAElC,MAAM,cAAc,GAA2C;IAC3D,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC;IAC3B,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC;IACzB,EAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC;IAClC,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;IACvB,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC;IAC3B,EAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAC;IACpC,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC;IACzB,EAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC;CAClC,CAAC;AAOF,SAAS,iBAAiB,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAyB;IAClF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAkB,MAAM,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAExC,OAAO,CACH,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,GAAG,aAChE,KAAC,MAAM,CAAC,MAAM,IAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAI,EAC1C,MAAC,MAAM,CAAC,IAAI,eACR,wBAAM,IAAI,CAAC,yBAAyB,CAAC,GAAO,EAC5C,KAAC,IAAI,IACD,IAAI,EAAC,GAAG,EACR,gBAAgB,EAAE,KAAK,EACvB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAsB,CAAC,EAC1D,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,GAC7B,EACF,cAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,YAClC,KAAC,wBAAwB,IACrB,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAE,OAAO,EACb,qBAAqB,EAAE,KAAK,EAC5B,mBAAmB,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,GAC5C,GACA,EACL,QAAQ,CAAC,CAAC,CAAC,CACR,KAAC,YAAY,IACT,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,EAC5B,GAAG,EAAE,QAAQ,GACf,CACL,CAAC,CAAC,CAAC,IAAI,IACE,EACd,KAAC,MAAM,CAAC,MAAM,IAAC,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAI,IAC3E,CACZ,CAAC;AACN,CAAC;AAED,MAAM,0BAA0B,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAoB,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IAEnC,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,iBAAiB,OACV,KAAK,EACT,OAAO,EAAE,GAAG,EAAE;YACV,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrB,WAAW,EAAE,CAAC;QAClB,CAAC,EACD,IAAI,EAAE,KAAK,CAAC,OAAO,GACrB,CACL,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAEpD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAqB;IAC5D,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE;QAC9C,EAAE,EAAE,oBAAoB;QACxB,GAAG,MAAM;KACZ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"ConnectToDBDialog.js","sourceRoot":"","sources":["../../../src/components/ConnectToDB/ConnectToDBDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { prepareEndpoint } from '../utils';
2
+ describe('prepareEndpoint', () => {
3
+ test('should remove all search params', () => {
4
+ const input = 'grpc://example.com:2139/?database=/root/test&param=value';
5
+ const expected = 'grpc://example.com:2139';
6
+ expect(prepareEndpoint(input)).toBe(expected);
7
+ });
8
+ test('should handle URL without path or params', () => {
9
+ const input = 'grpc://example.com:2139';
10
+ const expected = 'grpc://example.com:2139';
11
+ expect(prepareEndpoint(input)).toBe(expected);
12
+ });
13
+ test('should remove trailing slash from path', () => {
14
+ const input = 'grpc://example.com:2139/';
15
+ const expected = 'grpc://example.com:2139';
16
+ expect(prepareEndpoint(input)).toBe(expected);
17
+ });
18
+ test('should handle complex paths', () => {
19
+ const input = 'grpc://example.com:2139/multi/level/path/?database=/root/test';
20
+ const expected = 'grpc://example.com:2139/multi/level/path';
21
+ expect(prepareEndpoint(input)).toBe(expected);
22
+ });
23
+ test('should handle empty string', () => {
24
+ expect(prepareEndpoint('')).toBeUndefined();
25
+ });
26
+ test('should handle undefined input', () => {
27
+ expect(prepareEndpoint()).toBeUndefined();
28
+ });
29
+ test('should return undefined for invalid URL', () => {
30
+ const input = 'invalid-url';
31
+ expect(prepareEndpoint(input)).toBeUndefined();
32
+ });
33
+ });
34
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/components/ConnectToDB/__test__/utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AAEzC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,0DAA0D,CAAC;QACzE,MAAM,QAAQ,GAAG,yBAAyB,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,KAAK,GAAG,yBAAyB,CAAC;QACxC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACzC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,KAAK,GAAG,+DAA+D,CAAC;QAC9E,MAAM,QAAQ,GAAG,0CAA0C,CAAC;QAC5D,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,aAAa,CAAC;QAC5B,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -7,4 +7,4 @@ export declare function getJavaSnippetCode({ database, endpoint }: SnippetParams
7
7
  export declare function getNodeJSSnippetCode({ database, endpoint }: SnippetParams): string;
8
8
  export declare function getPHPSnippetCode({ database, endpoint }: SnippetParams): string;
9
9
  export declare function getPythonSnippetCode({ database, endpoint }: SnippetParams): string;
10
- export declare function getSnippetCode(lang: SnippetLanguage, params: SnippetParams): string;
10
+ export declare function getSnippetCode(lang: SnippetLanguage, rawParams: SnippetParams): string;
@@ -1,3 +1,4 @@
1
+ import { prepareEndpoint } from './utils';
1
2
  export function getBashSnippetCode({ database, endpoint }) {
2
3
  return `ydb -e ${endpoint || '<endpoint>'} --token-file ~/my_token
3
4
  -d ${database !== null && database !== void 0 ? database : '/<database>'} table query execute -q 'SELECT "Hello, world!"'`;
@@ -188,7 +189,11 @@ with ydb.Driver(driver_config) as driver:
188
189
  print("Last reported errors by discovery:")
189
190
  print(driver.discovery_debug_details())`;
190
191
  }
191
- export function getSnippetCode(lang, params) {
192
+ export function getSnippetCode(lang, rawParams) {
193
+ const params = {
194
+ ...rawParams,
195
+ endpoint: prepareEndpoint(rawParams.endpoint),
196
+ };
192
197
  switch (lang) {
193
198
  case 'cpp': {
194
199
  return getCPPSnippetCode(params);
@@ -1 +1 @@
1
- {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../../src/components/ConnectToDB/snippets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../../src/components/ConnectToDB/snippets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function prepareEndpoint(connectionString?: string): string | undefined;
@@ -0,0 +1,19 @@
1
+ // We have endpoint in format grpc://example.com:2139/?database=/root/test
2
+ // We need it to be like grpc://example.com:2139 to make code in snippets work
3
+ // We pass database to snippets as a separate param
4
+ export function prepareEndpoint(connectionString = '') {
5
+ try {
6
+ const urlObj = new URL(connectionString);
7
+ urlObj.search = '';
8
+ let endpoint = urlObj.toString();
9
+ // Remove trailing slash if present
10
+ if (endpoint.endsWith('/')) {
11
+ endpoint = endpoint.slice(0, -1);
12
+ }
13
+ return endpoint;
14
+ }
15
+ catch (_a) {
16
+ return undefined;
17
+ }
18
+ }
19
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/ConnectToDB/utils.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8EAA8E;AAC9E,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,gBAAgB,GAAG,EAAE;IACjD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QAEnB,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEjC,mCAAmC;QACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ButtonProps } from '@gravity-ui/uikit';
2
+ import './CopyLinkButton.scss';
3
+ export interface CopyLinkButtonProps extends ButtonProps {
4
+ text: string;
5
+ }
6
+ export declare function CopyLinkButton(props: CopyLinkButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { Link } from '@gravity-ui/icons';
4
+ import { ActionTooltip, Button, CopyToClipboard, Icon } from '@gravity-ui/uikit';
5
+ import { cn } from '../../utils/cn';
6
+ import i18n from './i18n';
7
+ import './CopyLinkButton.scss';
8
+ const b = cn('ydb-copy-link-button');
9
+ const DEFAULT_TIMEOUT = 1200;
10
+ const TOOLTIP_ANIMATION = 200;
11
+ const LinkButtonComponent = (props) => {
12
+ const { size = 'm', hasTooltip = true, status, closeDelay, title, ...rest } = props;
13
+ const baseTitle = title !== null && title !== void 0 ? title : i18n('description_copy');
14
+ return (_jsx(ActionTooltip, { title: status === 'success' ? i18n('description_copied') : baseTitle, disabled: !hasTooltip, closeDelay: closeDelay, children: _jsx(Button, { view: "flat", size: size, ...rest, children: _jsx(Button.Icon, { className: b('icon'), children: _jsx(Icon, { data: Link, size: 16 }) }) }) }));
15
+ };
16
+ export function CopyLinkButton(props) {
17
+ const { text, ...buttonProps } = props;
18
+ const timerIdRef = React.useRef();
19
+ const [tooltipCloseDelay, setTooltipCloseDelay] = React.useState(undefined);
20
+ const [tooltipDisabled, setTooltipDisabled] = React.useState(false);
21
+ const timeout = DEFAULT_TIMEOUT;
22
+ React.useEffect(() => window.clearTimeout(timerIdRef.current), []);
23
+ const handleCopy = React.useCallback(() => {
24
+ setTooltipDisabled(false);
25
+ setTooltipCloseDelay(timeout);
26
+ window.clearTimeout(timerIdRef.current);
27
+ timerIdRef.current = window.setTimeout(() => {
28
+ setTooltipDisabled(true);
29
+ }, timeout - TOOLTIP_ANIMATION);
30
+ }, [timeout]);
31
+ return (_jsx(CopyToClipboard, { text: text, timeout: timeout, onCopy: handleCopy, children: (status) => (_jsx(LinkButtonComponent, { ...buttonProps, closeDelay: tooltipCloseDelay, hasTooltip: !tooltipDisabled, status: status })) }));
32
+ }
33
+ //# sourceMappingURL=CopyLinkButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyLinkButton.js","sourceRoot":"","sources":["../../../src/components/CopyLinkButton/CopyLinkButton.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAElC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,uBAAuB,CAAC;AAE/B,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAUrC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IAC5D,MAAM,EAAC,IAAI,GAAG,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,EAAC,GAAG,KAAK,CAAC;IAElF,MAAM,SAAS,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEpD,OAAO,CACH,KAAC,aAAa,IACV,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,EACpE,QAAQ,EAAE,CAAC,UAAU,EACrB,UAAU,EAAE,UAAU,YAEtB,KAAC,MAAM,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,KAAM,IAAI,YACpC,KAAC,MAAM,CAAC,IAAI,IAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YAC7B,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,GACpB,GACT,GACG,CACnB,CAAC;AACN,CAAC,CAAC;AAMF,MAAM,UAAU,cAAc,CAAC,KAA0B;IACrD,MAAM,EAAC,IAAI,EAAE,GAAG,WAAW,EAAC,GAAG,KAAK,CAAC;IAErC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAU,CAAC;IAC1C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAChG,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,eAAe,CAAC;IAEhC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAExC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACxC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACH,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,YAC5D,CAAC,MAAM,EAAE,EAAE,CAAC,CACT,KAAC,mBAAmB,OACZ,WAAW,EACf,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,CAAC,eAAe,EAC5B,MAAM,EAAE,MAAM,GAChB,CACL,GACa,CACrB,CAAC;AACN,CAAC"}
@@ -0,0 +1,6 @@
1
+ .ydb-copy-link-button {
2
+ &__icon {
3
+ // prevent button icon from firing onMouseEnter/onFocus through parent button's handler
4
+ pointer-events: none;
5
+ }
6
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "description_copy": "Copy link to clipboard",
3
+ "description_copied": "Copied to clipboard"
4
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (key: "description_copy" | "description_copied", params?: import("@gravity-ui/i18n").Params) => string;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import { registerKeysets } from '../../../utils/i18n';
2
+ import en from './en.json';
3
+ const COMPONENT = 'ydb-copy-link-button';
4
+ export default registerKeysets(COMPONENT, { en });
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/CopyLinkButton/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC,eAAe,eAAe,CAAC,SAAS,EAAE,EAAC,EAAE,EAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TextInputProps } from '@gravity-ui/uikit';
2
+ interface DebouncedInputProps extends TextInputProps {
3
+ debounce?: number;
4
+ }
5
+ export declare const DebouncedInput: ({ onUpdate, value, debounce, ...rest }: DebouncedInputProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { TextInput } from '@gravity-ui/uikit';
3
+ import { useDebouncedValue } from '../../utils/hooks/useDebouncedValue';
4
+ export const DebouncedInput = ({ onUpdate, value = '', debounce = 200, ...rest }) => {
5
+ const [currentValue, handleUpdate] = useDebouncedValue({ value, onUpdate, debounce });
6
+ return _jsx(TextInput, { value: currentValue, onUpdate: handleUpdate, ...rest });
7
+ };
8
+ //# sourceMappingURL=DebouncedTextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebouncedTextInput.js","sourceRoot":"","sources":["../../../src/components/DebouncedInput/DebouncedTextInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qCAAqC,CAAC;AAMtE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC3B,QAAQ,EACR,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,GAAG,EACd,GAAG,IAAI,EACW,EAAE,EAAE;IACtB,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,iBAAiB,CAAS,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IAE5F,OAAO,KAAC,SAAS,IAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,KAAM,IAAI,GAAI,CAAC;AAChF,CAAC,CAAC"}
@@ -5,6 +5,8 @@ import './DoughnutMetrics.scss';
5
5
  interface LegendProps {
6
6
  children?: React.ReactNode;
7
7
  variant?: TextProps['variant'];
8
+ color?: TextProps['color'];
9
+ note?: React.ReactNode;
8
10
  }
9
11
  interface DoughnutProps {
10
12
  status: ProgressStatus;
@@ -14,7 +16,7 @@ interface DoughnutProps {
14
16
  }
15
17
  export declare function DoughnutMetrics({ status, fillWidth, children, className }: DoughnutProps): import("react/jsx-runtime").JSX.Element;
16
18
  export declare namespace DoughnutMetrics {
17
- var Legend: ({ children, variant }: LegendProps) => import("react/jsx-runtime").JSX.Element;
19
+ var Legend: ({ children, variant, color, note }: LegendProps) => import("react/jsx-runtime").JSX.Element;
18
20
  var Value: ({ children, variant }: LegendProps) => import("react/jsx-runtime").JSX.Element;
19
21
  }
20
22
  export {};
@@ -1,24 +1,25 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from '@gravity-ui/uikit';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Flex, HelpMark, Text } from '@gravity-ui/uikit';
3
3
  import { cn } from '../../utils/cn';
4
4
  import './DoughnutMetrics.scss';
5
5
  const b = cn('ydb-doughnut-metrics');
6
- function Legend({ children, variant = 'subheader-3' }) {
7
- return (_jsx(Text, { variant: variant, color: "secondary", className: b('legend'), children: children }));
6
+ function Legend({ children, variant = 'subheader-3', color = 'primary', note }) {
7
+ return (_jsxs(Flex, { gap: 1, alignItems: "center", children: [_jsx(Text, { variant: variant, color: color, className: b('legend'), as: "div", children: children }), note && _jsx(HelpMark, { className: b('legend-note'), children: note })] }));
8
8
  }
9
9
  function Value({ children, variant = 'subheader-2' }) {
10
- return (_jsx(Text, { variant: variant, color: "secondary", className: b('value'), children: children }));
10
+ return (_jsx(Text, { variant: variant, className: b('value'), children: children }));
11
11
  }
12
12
  export function DoughnutMetrics({ status, fillWidth, children, className }) {
13
- let gradientFill = 'var(--g-color-line-generic-solid)';
14
- let filledDegrees = fillWidth * 3.6 - 90;
15
- if (fillWidth > 50) {
16
- gradientFill = 'var(--doughnut-color)';
17
- filledDegrees = fillWidth * 3.6 + 90;
13
+ let filledDegrees = fillWidth * 3.6;
14
+ let doughnutFillVar = 'var(--doughnut-color)';
15
+ let doughnutBackdropVar = 'var(--doughnut-backdrop-color)';
16
+ if (filledDegrees > 360) {
17
+ filledDegrees -= 360;
18
+ doughnutBackdropVar = 'var(--doughnut-color)';
19
+ doughnutFillVar = 'var(--doughnut-overlap-color)';
18
20
  }
19
- const gradientDegrees = filledDegrees;
20
21
  return (_jsx("div", { className: b(null, className), children: _jsx("div", { style: {
21
- backgroundImage: `linear-gradient(${gradientDegrees}deg, transparent 50%, ${gradientFill} 50%), linear-gradient(-90deg, var(--g-color-line-generic-solid) 50%, transparent 50%)`,
22
+ background: `conic-gradient(${doughnutFillVar} 0deg ${filledDegrees}deg, ${doughnutBackdropVar} ${filledDegrees}deg 360deg)`,
22
23
  }, className: b('doughnut', { status }), children: _jsx("div", { className: b('text-wrapper'), children: children }) }) }));
23
24
  }
24
25
  DoughnutMetrics.Legend = Legend;
@@ -1 +1 @@
1
- {"version":3,"file":"DoughnutMetrics.js","sourceRoot":"","sources":["../../../src/components/DoughnutMetrics/DoughnutMetrics.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAGlC,OAAO,wBAAwB,CAAC;AAEhC,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAOrC,SAAS,MAAM,CAAC,EAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,EAAc;IAC5D,OAAO,CACH,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,WAAW,EAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YAC3D,QAAQ,GACN,CACV,CAAC;AACN,CAAC;AACD,SAAS,KAAK,CAAC,EAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,EAAc;IAC3D,OAAO,CACH,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,WAAW,EAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAC1D,QAAQ,GACN,CACV,CAAC;AACN,CAAC;AASD,MAAM,UAAU,eAAe,CAAC,EAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAgB;IACnF,IAAI,YAAY,GAAG,mCAAmC,CAAC;IACvD,IAAI,aAAa,GAAG,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC;IAEzC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;QACjB,YAAY,GAAG,uBAAuB,CAAC;QACvC,aAAa,GAAG,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,eAAe,GAAG,aAAa,CAAC;IACtC,OAAO,CACH,cAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,YAC9B,cACI,KAAK,EAAE;gBACH,eAAe,EAAE,mBAAmB,eAAe,yBAAyB,YAAY,wFAAwF;aACnL,EACD,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,CAAC,YAElC,cAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,YAAG,QAAQ,GAAO,GACjD,GACJ,CACT,CAAC;AACN,CAAC;AAED,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"DoughnutMetrics.js","sourceRoot":"","sources":["../../../src/components/DoughnutMetrics/DoughnutMetrics.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAGlC,OAAO,wBAAwB,CAAC;AAEhC,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;AASrC,SAAS,MAAM,CAAC,EAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,EAAc;IACrF,OAAO,CACH,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,aAC7B,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAC,KAAK,YACjE,QAAQ,GACN,EACN,IAAI,IAAI,KAAC,QAAQ,IAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,YAAG,IAAI,GAAY,IAC9D,CACV,CAAC;AACN,CAAC;AACD,SAAS,KAAK,CAAC,EAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,EAAc;IAC3D,OAAO,CACH,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YACxC,QAAQ,GACN,CACV,CAAC;AACN,CAAC;AASD,MAAM,UAAU,eAAe,CAAC,EAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAgB;IACnF,IAAI,aAAa,GAAG,SAAS,GAAG,GAAG,CAAC;IACpC,IAAI,eAAe,GAAG,uBAAuB,CAAC;IAC9C,IAAI,mBAAmB,GAAG,gCAAgC,CAAC;IAE3D,IAAI,aAAa,GAAG,GAAG,EAAE,CAAC;QACtB,aAAa,IAAI,GAAG,CAAC;QACrB,mBAAmB,GAAG,uBAAuB,CAAC;QAC9C,eAAe,GAAG,+BAA+B,CAAC;IACtD,CAAC;IAED,OAAO,CACH,cAAK,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,YAC9B,cACI,KAAK,EAAE;gBACH,UAAU,EAAE,kBAAkB,eAAe,SAAS,aAAa,QAAQ,mBAAmB,IAAI,aAAa,aAAa;aAC/H,EACD,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,CAAC,YAElC,cAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,YAAG,QAAQ,GAAO,GACjD,GACJ,CACT,CAAC;AACN,CAAC;AAED,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC"}
@@ -1,14 +1,17 @@
1
1
  .ydb-doughnut-metrics {
2
- --doughnut-border: 11px;
2
+ --doughnut-border: 16px;
3
3
  --doughnut-color: var(--ydb-color-status-green);
4
+ --doughnut-backdrop-color: var(--g-color-base-positive-light);
5
+ --doughnut-overlap-color: var(--g-color-base-positive-heavy-hover);
4
6
  &__doughnut {
5
7
  position: relative;
6
8
 
7
- width: 172px;
9
+ width: 100px;
8
10
  aspect-ratio: 1;
9
11
 
10
12
  border-radius: 50%;
11
- background-color: var(--doughnut-color);
13
+
14
+ transform: rotate(180deg);
12
15
  &::before {
13
16
  display: block;
14
17
 
@@ -25,9 +28,13 @@
25
28
  }
26
29
  &__doughnut_status_warning {
27
30
  --doughnut-color: var(--ydb-color-status-yellow);
31
+ --doughnut-backdrop-color: var(--g-color-base-warning-light);
32
+ --doughnut-overlap-color: var(--g-color-base-warning-heavy-hover);
28
33
  }
29
34
  &__doughnut_status_danger {
30
35
  --doughnut-color: var(--ydb-color-status-red);
36
+ --doughnut-backdrop-color: var(--g-color-base-danger-light);
37
+ --doughnut-overlap-color: var(--g-color-base-danger-heavy-hover);
31
38
  }
32
39
  &__text-wrapper {
33
40
  --wrapper-indent: calc(var(--doughnut-border) + 5px);
@@ -44,15 +51,15 @@
44
51
  width: calc(100% - calc(var(--wrapper-indent) * 2));
45
52
 
46
53
  text-align: center;
54
+
55
+ transform: rotate(180deg);
47
56
  aspect-ratio: 1;
48
57
  }
49
58
  &__value {
50
59
  position: absolute;
51
60
  bottom: 20px;
52
61
  }
53
- &__legend {
54
- height: 50%;
55
-
56
- white-space: pre-wrap;
62
+ &__legend-note {
63
+ display: flex;
57
64
  }
58
65
  }
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import './Drawer.scss';
3
+ type DrawerControl = {
4
+ type: 'close';
5
+ } | {
6
+ type: 'copyLink';
7
+ link: string;
8
+ } | {
9
+ type: 'custom';
10
+ node: React.ReactNode;
11
+ key: string;
12
+ };
13
+ interface DrawerPaneProps {
14
+ children: React.ReactNode;
15
+ renderDrawerContent: () => React.ReactNode;
16
+ isDrawerVisible: boolean;
17
+ onCloseDrawer: () => void;
18
+ drawerId?: string;
19
+ storageKey?: string;
20
+ defaultWidth?: number;
21
+ direction?: 'left' | 'right';
22
+ className?: string;
23
+ detectClickOutside?: boolean;
24
+ isPercentageWidth?: boolean;
25
+ drawerControls?: DrawerControl[];
26
+ title?: React.ReactNode;
27
+ headerClassName?: string;
28
+ }
29
+ export declare const DrawerWrapper: ({ children, renderDrawerContent, isDrawerVisible, onCloseDrawer, drawerId, storageKey, defaultWidth, direction, className, detectClickOutside, isPercentageWidth, drawerControls, title, headerClassName, }: DrawerPaneProps) => import("react/jsx-runtime").JSX.Element;
30
+ export {};
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { Xmark } from '@gravity-ui/icons';
4
+ import { DrawerItem, Drawer as GravityDrawer } from '@gravity-ui/navigation';
5
+ import { ActionTooltip, Button, Flex, Icon, Text } from '@gravity-ui/uikit';
6
+ import { cn } from '../../utils/cn';
7
+ import { isNumeric } from '../../utils/utils';
8
+ import { CopyLinkButton } from '../CopyLinkButton/CopyLinkButton';
9
+ import { useDrawerContext } from './DrawerContext';
10
+ const DEFAULT_DRAWER_WIDTH_PERCENTS = 60;
11
+ const DEFAULT_DRAWER_WIDTH = 600;
12
+ const DRAWER_WIDTH_KEY = 'drawer-width';
13
+ const b = cn('ydb-drawer');
14
+ import './Drawer.scss';
15
+ const DrawerPaneContentWrapper = ({ isVisible, onClose, children, drawerId = 'drawer', storageKey = DRAWER_WIDTH_KEY, defaultWidth, direction = 'right', className, detectClickOutside = false, isPercentageWidth, }) => {
16
+ const [drawerWidth, setDrawerWidth] = React.useState(() => {
17
+ const savedWidth = localStorage.getItem(storageKey);
18
+ return isNumeric(savedWidth) ? Number(savedWidth) : defaultWidth;
19
+ });
20
+ const drawerRef = React.useRef(null);
21
+ const { containerWidth } = useDrawerContext();
22
+ // Calculate drawer width based on container width percentage if specified
23
+ const calculatedWidth = React.useMemo(() => {
24
+ if (isPercentageWidth && containerWidth > 0) {
25
+ return Math.round((containerWidth * (drawerWidth || DEFAULT_DRAWER_WIDTH_PERCENTS)) / 100);
26
+ }
27
+ return drawerWidth || DEFAULT_DRAWER_WIDTH;
28
+ }, [containerWidth, isPercentageWidth, drawerWidth]);
29
+ React.useEffect(() => {
30
+ if (!detectClickOutside) {
31
+ return undefined;
32
+ }
33
+ const handleClickOutside = (event) => {
34
+ if (isVisible &&
35
+ drawerRef.current &&
36
+ !drawerRef.current.contains(event.target)) {
37
+ onClose();
38
+ }
39
+ };
40
+ document.addEventListener('click', handleClickOutside);
41
+ return () => {
42
+ document.removeEventListener('click', handleClickOutside);
43
+ };
44
+ }, [isVisible, onClose, detectClickOutside]);
45
+ const handleResizeDrawer = (width) => {
46
+ if (isPercentageWidth && containerWidth > 0) {
47
+ const percentageWidth = Math.round((width / containerWidth) * 100);
48
+ setDrawerWidth(percentageWidth);
49
+ localStorage.setItem(storageKey, percentageWidth.toString());
50
+ }
51
+ else {
52
+ setDrawerWidth(width);
53
+ localStorage.setItem(storageKey, width.toString());
54
+ }
55
+ };
56
+ return (_jsx(GravityDrawer, { onEscape: onClose, onVeilClick: onClose, hideVeil: true, className: b('container', className), children: _jsx(DrawerItem, { id: drawerId, visible: isVisible, resizable: true, maxResizeWidth: containerWidth, width: isPercentageWidth ? calculatedWidth : drawerWidth, onResize: handleResizeDrawer, direction: direction, className: b('item'), ref: detectClickOutside ? drawerRef : undefined, children: children }) }));
57
+ };
58
+ export const DrawerWrapper = ({ children, renderDrawerContent, isDrawerVisible, onCloseDrawer, drawerId, storageKey, defaultWidth, direction, className, detectClickOutside, isPercentageWidth, drawerControls = [], title, headerClassName, }) => {
59
+ React.useEffect(() => {
60
+ return () => {
61
+ onCloseDrawer();
62
+ };
63
+ }, [onCloseDrawer]);
64
+ const renderDrawerHeader = () => {
65
+ const controls = [];
66
+ for (const control of drawerControls) {
67
+ switch (control.type) {
68
+ case 'close':
69
+ controls.push(_jsx(ActionTooltip, { title: "Close", children: _jsx(Button, { view: "flat", onClick: onCloseDrawer, children: _jsx(Icon, { data: Xmark, size: 16 }) }) }, "close"));
70
+ break;
71
+ case 'copyLink':
72
+ controls.push(_jsx(CopyLinkButton, { text: control.link }, "copyLink"));
73
+ break;
74
+ case 'custom':
75
+ controls.push(_jsx(React.Fragment, { children: control.node }, control.key));
76
+ break;
77
+ }
78
+ }
79
+ return (_jsxs(Flex, { justifyContent: "space-between", className: b('header-wrapper', headerClassName), children: [_jsx(Text, { variant: "subheader-2", children: title }), _jsx(Flex, { className: b('controls'), children: controls })] }));
80
+ };
81
+ return (_jsxs(React.Fragment, { children: [children, _jsx(DrawerPaneContentWrapper, { isVisible: isDrawerVisible, onClose: onCloseDrawer, drawerId: drawerId, storageKey: storageKey, defaultWidth: defaultWidth, direction: direction, className: className, detectClickOutside: detectClickOutside, isPercentageWidth: isPercentageWidth, children: _jsxs("div", { className: b('content-wrapper'), children: [renderDrawerHeader(), renderDrawerContent()] }) })] }));
82
+ };
83
+ //# sourceMappingURL=Drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ .ydb-drawer {
2
+ &__drawer-container {
3
+ position: relative;
4
+
5
+ overflow: hidden;
6
+
7
+ height: 100%;
8
+ }
9
+
10
+ &__item {
11
+ z-index: 4;
12
+
13
+ height: 100%;
14
+ }
15
+
16
+ &__controls {
17
+ margin-left: auto;
18
+ }
19
+
20
+ &__header-wrapper {
21
+ position: sticky;
22
+ z-index: 3;
23
+ top: 0;
24
+ left: 0;
25
+
26
+ padding: var(--g-spacing-4) var(--g-spacing-4) 0 var(--g-spacing-6);
27
+
28
+ background-color: var(--g-color-base-background);
29
+ }
30
+
31
+ &__content-wrapper {
32
+ display: flex;
33
+ overflow: auto;
34
+ flex-direction: column;
35
+
36
+ height: 100%;
37
+ }
38
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import './Drawer.scss';
3
+ export interface DrawerContextType {
4
+ containerWidth: number;
5
+ setContainerWidth: React.Dispatch<React.SetStateAction<number>>;
6
+ }
7
+ interface DrawerContextProviderProps {
8
+ children: React.ReactNode;
9
+ className?: string;
10
+ }
11
+ export declare const DrawerContextProvider: ({ children, className }: DrawerContextProviderProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const useDrawerContext: () => DrawerContextType;
13
+ export {};