@gravity-ui/querieskit 1.2.0 → 1.3.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 (676) hide show
  1. package/.agents/skills/code-review-checklist/SKILL.md +62 -103
  2. package/AGENTS.md +12 -0
  3. package/CHANGELOG.md +17 -0
  4. package/CODEOWNERS +2 -1
  5. package/build/cjs/components/AttachmentList/AttachmentList.css +22 -0
  6. package/build/cjs/components/AttachmentList/AttachmentList.css.map +1 -0
  7. package/build/cjs/components/AttachmentList/AttachmentList.d.ts +17 -0
  8. package/build/cjs/components/AttachmentList/AttachmentList.js +75 -0
  9. package/build/cjs/components/AttachmentList/AttachmentList.js.map +1 -0
  10. package/build/cjs/components/AttachmentList/AttachmentList.stories.d.ts +93 -0
  11. package/build/cjs/components/AttachmentList/AttachmentList.stories.js +323 -0
  12. package/build/cjs/components/AttachmentList/AttachmentList.stories.js.map +1 -0
  13. package/build/cjs/components/AttachmentList/helpers/getIconByAttachmentName.d.ts +2 -0
  14. package/build/cjs/components/AttachmentList/helpers/getIconByAttachmentName.js +36 -0
  15. package/build/cjs/components/AttachmentList/helpers/getIconByAttachmentName.js.map +1 -0
  16. package/build/cjs/components/AttachmentList/helpers/objectLinkValidator.d.ts +11 -0
  17. package/build/cjs/components/AttachmentList/helpers/objectLinkValidator.js +30 -0
  18. package/build/cjs/components/AttachmentList/helpers/objectLinkValidator.js.map +1 -0
  19. package/build/cjs/components/AttachmentList/helpers/stringRequiredValidator.d.ts +2 -0
  20. package/build/cjs/components/AttachmentList/helpers/stringRequiredValidator.js +26 -0
  21. package/build/cjs/components/AttachmentList/helpers/stringRequiredValidator.js.map +1 -0
  22. package/build/cjs/components/AttachmentList/hooks/useKeyDownFormControl.d.ts +4 -0
  23. package/build/cjs/components/AttachmentList/hooks/useKeyDownFormControl.js +27 -0
  24. package/build/cjs/components/AttachmentList/hooks/useKeyDownFormControl.js.map +1 -0
  25. package/build/cjs/components/AttachmentList/hooks/useLabelRef.d.ts +4 -0
  26. package/build/cjs/components/AttachmentList/hooks/useLabelRef.js +35 -0
  27. package/build/cjs/components/AttachmentList/hooks/useLabelRef.js.map +1 -0
  28. package/build/cjs/components/AttachmentList/i18n/dicts.d.ts +23 -0
  29. package/build/cjs/components/AttachmentList/i18n/dicts.js +14 -0
  30. package/build/cjs/components/AttachmentList/i18n/dicts.js.map +1 -0
  31. package/build/cjs/components/AttachmentList/i18n/en.json +10 -0
  32. package/build/cjs/components/AttachmentList/i18n/index.d.ts +6 -0
  33. package/build/cjs/components/AttachmentList/i18n/index.js +11 -0
  34. package/build/cjs/components/AttachmentList/i18n/index.js.map +1 -0
  35. package/build/cjs/components/AttachmentList/i18n/ru.json +10 -0
  36. package/build/cjs/components/AttachmentList/index.d.ts +4 -0
  37. package/build/cjs/components/AttachmentList/index.js +40 -0
  38. package/build/cjs/components/AttachmentList/index.js.map +1 -0
  39. package/build/cjs/components/AttachmentList/internal/AttachmentItem/AttachmentItem.css +18 -0
  40. package/build/cjs/components/AttachmentList/internal/AttachmentItem/AttachmentItem.css.map +1 -0
  41. package/build/cjs/components/AttachmentList/internal/AttachmentItem/AttachmentItem.d.ts +16 -0
  42. package/build/cjs/components/AttachmentList/internal/AttachmentItem/AttachmentItem.js +106 -0
  43. package/build/cjs/components/AttachmentList/internal/AttachmentItem/AttachmentItem.js.map +1 -0
  44. package/build/cjs/components/AttachmentList/internal/AttachmentItem/index.d.ts +2 -0
  45. package/build/cjs/components/AttachmentList/internal/AttachmentItem/index.js +13 -0
  46. package/build/cjs/components/AttachmentList/internal/AttachmentItem/index.js.map +1 -0
  47. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.d.ts +9 -0
  48. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.js +22 -0
  49. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.js.map +1 -0
  50. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.css +17 -0
  51. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.css.map +1 -0
  52. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.d.ts +24 -0
  53. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.js +175 -0
  54. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.js.map +1 -0
  55. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/FileEdit.d.ts +12 -0
  56. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/FileEdit.js +91 -0
  57. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/FileEdit.js.map +1 -0
  58. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/index.d.ts +4 -0
  59. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/index.js +13 -0
  60. package/build/cjs/components/AttachmentList/internal/EditAttachmentItem/index.js.map +1 -0
  61. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.css +4 -0
  62. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.css.map +1 -0
  63. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.d.ts +13 -0
  64. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js +75 -0
  65. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js.map +1 -0
  66. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.d.ts +29 -0
  67. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.js +36 -0
  68. package/build/cjs/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.js.map +1 -0
  69. package/build/cjs/components/AttachmentListPlaceholder/i18n/dicts.d.ts +17 -0
  70. package/build/cjs/components/AttachmentListPlaceholder/i18n/dicts.js +14 -0
  71. package/build/cjs/components/AttachmentListPlaceholder/i18n/dicts.js.map +1 -0
  72. package/build/cjs/components/AttachmentListPlaceholder/i18n/en.json +7 -0
  73. package/build/cjs/components/AttachmentListPlaceholder/i18n/index.d.ts +6 -0
  74. package/build/cjs/components/AttachmentListPlaceholder/i18n/index.js +11 -0
  75. package/build/cjs/components/AttachmentListPlaceholder/i18n/index.js.map +1 -0
  76. package/build/cjs/components/AttachmentListPlaceholder/i18n/ru.json +7 -0
  77. package/build/cjs/components/AttachmentListPlaceholder/index.d.ts +2 -0
  78. package/build/cjs/components/AttachmentListPlaceholder/index.js +13 -0
  79. package/build/cjs/components/AttachmentListPlaceholder/index.js.map +1 -0
  80. package/build/cjs/components/DataTable/DataTable.css +0 -7
  81. package/build/cjs/components/DataTable/DataTable.css.map +1 -1
  82. package/build/cjs/components/DataTable/DataTable.js +12 -5
  83. package/build/cjs/components/DataTable/DataTable.js.map +1 -1
  84. package/build/cjs/components/ErrorTree/ErrorTree.d.ts +3 -0
  85. package/build/cjs/components/ErrorTree/ErrorTree.js +35 -0
  86. package/build/cjs/components/ErrorTree/ErrorTree.js.map +1 -0
  87. package/build/cjs/components/ErrorTree/ErrorTree.stories.d.ts +8 -0
  88. package/build/cjs/components/ErrorTree/ErrorTree.stories.js +101 -0
  89. package/build/cjs/components/ErrorTree/ErrorTree.stories.js.map +1 -0
  90. package/build/cjs/components/ErrorTree/helpers/formatAttributes.d.ts +2 -0
  91. package/build/cjs/components/ErrorTree/helpers/formatAttributes.js +16 -0
  92. package/build/cjs/components/ErrorTree/helpers/formatAttributes.js.map +1 -0
  93. package/build/cjs/components/ErrorTree/helpers/getIntermediateChain.d.ts +6 -0
  94. package/build/cjs/components/ErrorTree/helpers/getIntermediateChain.js +22 -0
  95. package/build/cjs/components/ErrorTree/helpers/getIntermediateChain.js.map +1 -0
  96. package/build/cjs/components/ErrorTree/i18n/dicts.d.ts +27 -0
  97. package/build/cjs/components/ErrorTree/i18n/dicts.js +14 -0
  98. package/build/cjs/components/ErrorTree/i18n/dicts.js.map +1 -0
  99. package/build/cjs/components/ErrorTree/i18n/en.json +11 -0
  100. package/build/cjs/components/ErrorTree/i18n/index.d.ts +6 -0
  101. package/build/cjs/components/ErrorTree/i18n/index.js +11 -0
  102. package/build/cjs/components/ErrorTree/i18n/index.js.map +1 -0
  103. package/build/cjs/components/ErrorTree/i18n/ru.json +13 -0
  104. package/build/cjs/components/ErrorTree/index.d.ts +1 -0
  105. package/build/cjs/components/ErrorTree/index.js +13 -0
  106. package/build/cjs/components/ErrorTree/index.js.map +1 -0
  107. package/build/cjs/components/ErrorTree/internal/ErrorTreeChildren.css +4 -0
  108. package/build/cjs/components/ErrorTree/internal/ErrorTreeChildren.css.map +1 -0
  109. package/build/cjs/components/ErrorTree/internal/ErrorTreeChildren.d.ts +10 -0
  110. package/build/cjs/components/ErrorTree/internal/ErrorTreeChildren.js +32 -0
  111. package/build/cjs/components/ErrorTree/internal/ErrorTreeChildren.js.map +1 -0
  112. package/build/cjs/components/ErrorTree/internal/ErrorTreeNode.css +80 -0
  113. package/build/cjs/components/ErrorTree/internal/ErrorTreeNode.css.map +1 -0
  114. package/build/cjs/components/ErrorTree/internal/ErrorTreeNode.d.ts +13 -0
  115. package/build/cjs/components/ErrorTree/internal/ErrorTreeNode.js +274 -0
  116. package/build/cjs/components/ErrorTree/internal/ErrorTreeNode.js.map +1 -0
  117. package/build/cjs/components/ErrorTree/internal/IntermediateMessages.css +10 -0
  118. package/build/cjs/components/ErrorTree/internal/IntermediateMessages.css.map +1 -0
  119. package/build/cjs/components/ErrorTree/internal/IntermediateMessages.d.ts +9 -0
  120. package/build/cjs/components/ErrorTree/internal/IntermediateMessages.js +118 -0
  121. package/build/cjs/components/ErrorTree/internal/IntermediateMessages.js.map +1 -0
  122. package/build/cjs/components/Icons/LogoCPlusPlus.d.ts +2 -0
  123. package/build/cjs/components/Icons/LogoCPlusPlus.js +35 -0
  124. package/build/cjs/components/Icons/LogoCPlusPlus.js.map +1 -0
  125. package/build/cjs/components/Icons/index.d.ts +1 -0
  126. package/build/cjs/components/Icons/index.js +13 -0
  127. package/build/cjs/components/Icons/index.js.map +1 -0
  128. package/build/cjs/components/QueryResultsTable/QueryResultsTable.css +53 -0
  129. package/build/cjs/components/QueryResultsTable/QueryResultsTable.css.map +1 -0
  130. package/build/cjs/components/QueryResultsTable/QueryResultsTable.d.ts +24 -0
  131. package/build/cjs/components/QueryResultsTable/QueryResultsTable.js +104 -0
  132. package/build/cjs/components/QueryResultsTable/QueryResultsTable.js.map +1 -0
  133. package/build/cjs/components/QueryResultsTable/helpers/formatQueryResultType.d.ts +3 -0
  134. package/build/cjs/components/QueryResultsTable/helpers/formatQueryResultType.js +90 -0
  135. package/build/cjs/components/QueryResultsTable/helpers/formatQueryResultType.js.map +1 -0
  136. package/build/cjs/components/QueryResultsTable/helpers/formatQueryResultValue.d.ts +11 -0
  137. package/build/cjs/components/QueryResultsTable/helpers/formatQueryResultValue.js +40 -0
  138. package/build/cjs/components/QueryResultsTable/helpers/formatQueryResultValue.js.map +1 -0
  139. package/build/cjs/components/QueryResultsTable/i18n/dicts.d.ts +13 -0
  140. package/build/cjs/components/QueryResultsTable/i18n/dicts.js +14 -0
  141. package/build/cjs/components/QueryResultsTable/i18n/dicts.js.map +1 -0
  142. package/build/cjs/components/QueryResultsTable/i18n/en.json +5 -0
  143. package/build/cjs/components/QueryResultsTable/i18n/index.d.ts +6 -0
  144. package/build/cjs/components/QueryResultsTable/i18n/index.js +11 -0
  145. package/build/cjs/components/QueryResultsTable/i18n/index.js.map +1 -0
  146. package/build/cjs/components/QueryResultsTable/i18n/ru.json +5 -0
  147. package/build/cjs/components/QueryResultsTable/index.d.ts +3 -0
  148. package/build/cjs/components/QueryResultsTable/index.js +20 -0
  149. package/build/cjs/components/QueryResultsTable/index.js.map +1 -0
  150. package/build/cjs/components/QueryResultsTable/internal/QueryResultCell.d.ts +11 -0
  151. package/build/cjs/components/QueryResultsTable/internal/QueryResultCell.js +79 -0
  152. package/build/cjs/components/QueryResultsTable/internal/QueryResultCell.js.map +1 -0
  153. package/build/cjs/components/index.d.ts +5 -0
  154. package/build/cjs/components/index.js +48 -1
  155. package/build/cjs/components/index.js.map +1 -1
  156. package/build/cjs/helpers/createUuid.d.ts +1 -0
  157. package/build/cjs/helpers/createUuid.js +12 -0
  158. package/build/cjs/helpers/createUuid.js.map +1 -0
  159. package/build/cjs/helpers/isObjectEqual.d.ts +1 -0
  160. package/build/cjs/helpers/isObjectEqual.js +30 -0
  161. package/build/cjs/helpers/isObjectEqual.js.map +1 -0
  162. package/build/cjs/helpers/useDebouncedValue.d.ts +2 -0
  163. package/build/cjs/helpers/useDebouncedValue.js +27 -0
  164. package/build/cjs/helpers/useDebouncedValue.js.map +1 -0
  165. package/build/cjs/index.d.ts +3 -0
  166. package/build/cjs/index.js +33 -0
  167. package/build/cjs/index.js.map +1 -1
  168. package/build/cjs/modules/Attachments/Attachments.css +8 -0
  169. package/build/cjs/modules/Attachments/Attachments.css.map +1 -0
  170. package/build/cjs/modules/Attachments/Attachments.d.ts +22 -0
  171. package/build/cjs/modules/Attachments/Attachments.js +381 -0
  172. package/build/cjs/modules/Attachments/Attachments.js.map +1 -0
  173. package/build/cjs/modules/Attachments/Attachments.stories.d.ts +41 -0
  174. package/build/cjs/modules/Attachments/Attachments.stories.js +123 -0
  175. package/build/cjs/modules/Attachments/Attachments.stories.js.map +1 -0
  176. package/build/cjs/modules/Attachments/i18n/dicts.d.ts +13 -0
  177. package/build/cjs/modules/Attachments/i18n/dicts.js +14 -0
  178. package/build/cjs/modules/Attachments/i18n/dicts.js.map +1 -0
  179. package/build/cjs/modules/Attachments/i18n/en.json +5 -0
  180. package/build/cjs/modules/Attachments/i18n/index.d.ts +6 -0
  181. package/build/cjs/modules/Attachments/i18n/index.js +11 -0
  182. package/build/cjs/modules/Attachments/i18n/index.js.map +1 -0
  183. package/build/cjs/modules/Attachments/i18n/ru.json +5 -0
  184. package/build/cjs/modules/Attachments/index.d.ts +2 -0
  185. package/build/cjs/modules/Attachments/index.js +13 -0
  186. package/build/cjs/modules/Attachments/index.js.map +1 -0
  187. package/build/cjs/modules/NavigationPreview/NavigationPreview.css +7 -1
  188. package/build/cjs/modules/NavigationPreview/NavigationPreview.css.map +1 -1
  189. package/build/cjs/modules/NavigationPreview/NavigationPreview.d.ts +2 -2
  190. package/build/cjs/modules/NavigationPreview/NavigationPreview.js +37 -7
  191. package/build/cjs/modules/NavigationPreview/NavigationPreview.js.map +1 -1
  192. package/build/cjs/modules/NavigationPreview/story/NavigationPreview.stories.d.ts +1 -0
  193. package/build/cjs/modules/NavigationPreview/story/NavigationPreview.stories.js +25 -1
  194. package/build/cjs/modules/NavigationPreview/story/NavigationPreview.stories.js.map +1 -1
  195. package/build/cjs/modules/NavigationPreview/story/mockData.d.ts +2 -2
  196. package/build/cjs/modules/NavigationPreview/story/mockData.js +16 -4
  197. package/build/cjs/modules/NavigationPreview/story/mockData.js.map +1 -1
  198. package/build/cjs/modules/QueryStatistics/QueryStatistics.css +4 -0
  199. package/build/cjs/modules/QueryStatistics/QueryStatistics.css.map +1 -0
  200. package/build/cjs/modules/QueryStatistics/QueryStatistics.d.ts +4 -0
  201. package/build/cjs/modules/QueryStatistics/QueryStatistics.js +151 -0
  202. package/build/cjs/modules/QueryStatistics/QueryStatistics.js.map +1 -0
  203. package/build/cjs/modules/QueryStatistics/helpers.d.ts +15 -0
  204. package/build/cjs/modules/QueryStatistics/helpers.js +118 -0
  205. package/build/cjs/modules/QueryStatistics/helpers.js.map +1 -0
  206. package/build/cjs/modules/QueryStatistics/i18n/dicts.d.ts +35 -0
  207. package/build/cjs/modules/QueryStatistics/i18n/dicts.js +14 -0
  208. package/build/cjs/modules/QueryStatistics/i18n/dicts.js.map +1 -0
  209. package/build/cjs/modules/QueryStatistics/i18n/en.json +16 -0
  210. package/build/cjs/modules/QueryStatistics/i18n/index.d.ts +6 -0
  211. package/build/cjs/modules/QueryStatistics/i18n/index.js +11 -0
  212. package/build/cjs/modules/QueryStatistics/i18n/index.js.map +1 -0
  213. package/build/cjs/modules/QueryStatistics/i18n/ru.json +16 -0
  214. package/build/cjs/modules/QueryStatistics/index.d.ts +2 -0
  215. package/build/cjs/modules/QueryStatistics/index.js +13 -0
  216. package/build/cjs/modules/QueryStatistics/index.js.map +1 -0
  217. package/build/cjs/modules/QueryStatistics/internal/MetricCell.css +36 -0
  218. package/build/cjs/modules/QueryStatistics/internal/MetricCell.css.map +1 -0
  219. package/build/cjs/modules/QueryStatistics/internal/MetricCell.d.ts +9 -0
  220. package/build/cjs/modules/QueryStatistics/internal/MetricCell.js +121 -0
  221. package/build/cjs/modules/QueryStatistics/internal/MetricCell.js.map +1 -0
  222. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsTable.css +21 -0
  223. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsTable.css.map +1 -0
  224. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsTable.d.ts +20 -0
  225. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsTable.js +140 -0
  226. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsTable.js.map +1 -0
  227. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsToolbar.css +5 -0
  228. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsToolbar.css.map +1 -0
  229. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsToolbar.d.ts +10 -0
  230. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsToolbar.js +55 -0
  231. package/build/cjs/modules/QueryStatistics/internal/QueryStatisticsToolbar.js.map +1 -0
  232. package/build/cjs/modules/QueryStatistics/story/QueryStatistics.stories.d.ts +8 -0
  233. package/build/cjs/modules/QueryStatistics/story/QueryStatistics.stories.js +112 -0
  234. package/build/cjs/modules/QueryStatistics/story/QueryStatistics.stories.js.map +1 -0
  235. package/build/cjs/modules/index.d.ts +3 -0
  236. package/build/cjs/modules/index.js +20 -0
  237. package/build/cjs/modules/index.js.map +1 -1
  238. package/build/cjs/types/declarations.d.ts +10 -0
  239. package/build/cjs/types/errorTree.d.ts +23 -0
  240. package/build/cjs/types/errorTree.js +6 -0
  241. package/build/cjs/types/errorTree.js.map +1 -0
  242. package/build/cjs/types/navigation.d.ts +8 -1
  243. package/build/cjs/types/navigation.js.map +1 -1
  244. package/build/cjs/types/queryResults.d.ts +34 -0
  245. package/build/cjs/types/queryResults.js +6 -0
  246. package/build/cjs/types/queryResults.js.map +1 -0
  247. package/build/cjs/types/queryStatistics.d.ts +54 -0
  248. package/build/cjs/types/queryStatistics.js +6 -0
  249. package/build/cjs/types/queryStatistics.js.map +1 -0
  250. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.stories.js +40 -35
  251. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.stories.js.map +1 -1
  252. package/build/cjs/widgets/QueriesNavigation/i18n/index.d.ts +2 -2
  253. package/build/cjs/widgets/QueryResults/QueryResults.css +19 -0
  254. package/build/cjs/widgets/QueryResults/QueryResults.css.map +1 -0
  255. package/build/cjs/widgets/QueryResults/QueryResults.d.ts +23 -0
  256. package/build/cjs/widgets/QueryResults/QueryResults.js +119 -0
  257. package/build/cjs/widgets/QueryResults/QueryResults.js.map +1 -0
  258. package/build/cjs/widgets/QueryResults/QueryResults.stories.d.ts +19 -0
  259. package/build/cjs/widgets/QueryResults/QueryResults.stories.js +199 -0
  260. package/build/cjs/widgets/QueryResults/QueryResults.stories.js.map +1 -0
  261. package/build/cjs/widgets/QueryResults/i18n/dicts.d.ts +25 -0
  262. package/build/cjs/widgets/QueryResults/i18n/dicts.js +14 -0
  263. package/build/cjs/widgets/QueryResults/i18n/dicts.js.map +1 -0
  264. package/build/cjs/widgets/QueryResults/i18n/en.json +10 -0
  265. package/build/cjs/widgets/QueryResults/i18n/index.d.ts +6 -0
  266. package/build/cjs/widgets/QueryResults/i18n/index.js +11 -0
  267. package/build/cjs/widgets/QueryResults/i18n/index.js.map +1 -0
  268. package/build/cjs/widgets/QueryResults/i18n/ru.json +12 -0
  269. package/build/cjs/widgets/QueryResults/index.d.ts +2 -0
  270. package/build/cjs/widgets/QueryResults/index.js +13 -0
  271. package/build/cjs/widgets/QueryResults/index.js.map +1 -0
  272. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.d.ts +7 -0
  273. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.js +49 -0
  274. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.js.map +1 -0
  275. package/build/cjs/widgets/index.d.ts +2 -0
  276. package/build/cjs/widgets/index.js +7 -0
  277. package/build/cjs/widgets/index.js.map +1 -1
  278. package/build/esm/components/AttachmentList/AttachmentList.css +22 -0
  279. package/build/esm/components/AttachmentList/AttachmentList.css.map +1 -0
  280. package/build/esm/components/AttachmentList/AttachmentList.d.ts +17 -0
  281. package/build/esm/components/AttachmentList/AttachmentList.js +67 -0
  282. package/build/esm/components/AttachmentList/AttachmentList.js.map +1 -0
  283. package/build/esm/components/AttachmentList/AttachmentList.scss +25 -0
  284. package/build/esm/components/AttachmentList/AttachmentList.stories.d.ts +93 -0
  285. package/build/esm/components/AttachmentList/AttachmentList.stories.js +315 -0
  286. package/build/esm/components/AttachmentList/AttachmentList.stories.js.map +1 -0
  287. package/build/esm/components/AttachmentList/helpers/getIconByAttachmentName.d.ts +2 -0
  288. package/build/esm/components/AttachmentList/helpers/getIconByAttachmentName.js +30 -0
  289. package/build/esm/components/AttachmentList/helpers/getIconByAttachmentName.js.map +1 -0
  290. package/build/esm/components/AttachmentList/helpers/objectLinkValidator.d.ts +11 -0
  291. package/build/esm/components/AttachmentList/helpers/objectLinkValidator.js +24 -0
  292. package/build/esm/components/AttachmentList/helpers/objectLinkValidator.js.map +1 -0
  293. package/build/esm/components/AttachmentList/helpers/stringRequiredValidator.d.ts +2 -0
  294. package/build/esm/components/AttachmentList/helpers/stringRequiredValidator.js +19 -0
  295. package/build/esm/components/AttachmentList/helpers/stringRequiredValidator.js.map +1 -0
  296. package/build/esm/components/AttachmentList/hooks/useKeyDownFormControl.d.ts +4 -0
  297. package/build/esm/components/AttachmentList/hooks/useKeyDownFormControl.js +21 -0
  298. package/build/esm/components/AttachmentList/hooks/useKeyDownFormControl.js.map +1 -0
  299. package/build/esm/components/AttachmentList/hooks/useLabelRef.d.ts +4 -0
  300. package/build/esm/components/AttachmentList/hooks/useLabelRef.js +28 -0
  301. package/build/esm/components/AttachmentList/hooks/useLabelRef.js.map +1 -0
  302. package/build/esm/components/AttachmentList/i18n/dicts.d.ts +23 -0
  303. package/build/esm/components/AttachmentList/i18n/dicts.js +7 -0
  304. package/build/esm/components/AttachmentList/i18n/dicts.js.map +1 -0
  305. package/build/esm/components/AttachmentList/i18n/en.json +10 -0
  306. package/build/esm/components/AttachmentList/i18n/index.d.ts +6 -0
  307. package/build/esm/components/AttachmentList/i18n/index.js +4 -0
  308. package/build/esm/components/AttachmentList/i18n/index.js.map +1 -0
  309. package/build/esm/components/AttachmentList/i18n/ru.json +10 -0
  310. package/build/esm/components/AttachmentList/index.d.ts +4 -0
  311. package/build/esm/components/AttachmentList/index.js +4 -0
  312. package/build/esm/components/AttachmentList/index.js.map +1 -0
  313. package/build/esm/components/AttachmentList/internal/AttachmentItem/AttachmentItem.css +18 -0
  314. package/build/esm/components/AttachmentList/internal/AttachmentItem/AttachmentItem.css.map +1 -0
  315. package/build/esm/components/AttachmentList/internal/AttachmentItem/AttachmentItem.d.ts +16 -0
  316. package/build/esm/components/AttachmentList/internal/AttachmentItem/AttachmentItem.js +98 -0
  317. package/build/esm/components/AttachmentList/internal/AttachmentItem/AttachmentItem.js.map +1 -0
  318. package/build/esm/components/AttachmentList/internal/AttachmentItem/AttachmentItem.scss +23 -0
  319. package/build/esm/components/AttachmentList/internal/AttachmentItem/index.d.ts +2 -0
  320. package/build/esm/components/AttachmentList/internal/AttachmentItem/index.js +2 -0
  321. package/build/esm/components/AttachmentList/internal/AttachmentItem/index.js.map +1 -0
  322. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.d.ts +9 -0
  323. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.js +15 -0
  324. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.js.map +1 -0
  325. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.css +17 -0
  326. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.css.map +1 -0
  327. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.d.ts +24 -0
  328. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.js +167 -0
  329. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.js.map +1 -0
  330. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.scss +21 -0
  331. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/FileEdit.d.ts +12 -0
  332. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/FileEdit.js +83 -0
  333. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/FileEdit.js.map +1 -0
  334. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/index.d.ts +4 -0
  335. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/index.js +2 -0
  336. package/build/esm/components/AttachmentList/internal/EditAttachmentItem/index.js.map +1 -0
  337. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.css +4 -0
  338. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.css.map +1 -0
  339. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.d.ts +13 -0
  340. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js +68 -0
  341. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.js.map +1 -0
  342. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.scss +5 -0
  343. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.d.ts +29 -0
  344. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.js +29 -0
  345. package/build/esm/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.js.map +1 -0
  346. package/build/esm/components/AttachmentListPlaceholder/i18n/dicts.d.ts +17 -0
  347. package/build/esm/components/AttachmentListPlaceholder/i18n/dicts.js +7 -0
  348. package/build/esm/components/AttachmentListPlaceholder/i18n/dicts.js.map +1 -0
  349. package/build/esm/components/AttachmentListPlaceholder/i18n/en.json +7 -0
  350. package/build/esm/components/AttachmentListPlaceholder/i18n/index.d.ts +6 -0
  351. package/build/esm/components/AttachmentListPlaceholder/i18n/index.js +4 -0
  352. package/build/esm/components/AttachmentListPlaceholder/i18n/index.js.map +1 -0
  353. package/build/esm/components/AttachmentListPlaceholder/i18n/ru.json +7 -0
  354. package/build/esm/components/AttachmentListPlaceholder/index.d.ts +2 -0
  355. package/build/esm/components/AttachmentListPlaceholder/index.js +2 -0
  356. package/build/esm/components/AttachmentListPlaceholder/index.js.map +1 -0
  357. package/build/esm/components/DataTable/DataTable.css +0 -7
  358. package/build/esm/components/DataTable/DataTable.css.map +1 -1
  359. package/build/esm/components/DataTable/DataTable.js +12 -5
  360. package/build/esm/components/DataTable/DataTable.js.map +1 -1
  361. package/build/esm/components/DataTable/DataTable.scss +18 -26
  362. package/build/esm/components/ErrorTree/ErrorTree.d.ts +3 -0
  363. package/build/esm/components/ErrorTree/ErrorTree.js +28 -0
  364. package/build/esm/components/ErrorTree/ErrorTree.js.map +1 -0
  365. package/build/esm/components/ErrorTree/ErrorTree.stories.d.ts +8 -0
  366. package/build/esm/components/ErrorTree/ErrorTree.stories.js +94 -0
  367. package/build/esm/components/ErrorTree/ErrorTree.stories.js.map +1 -0
  368. package/build/esm/components/ErrorTree/helpers/formatAttributes.d.ts +2 -0
  369. package/build/esm/components/ErrorTree/helpers/formatAttributes.js +10 -0
  370. package/build/esm/components/ErrorTree/helpers/formatAttributes.js.map +1 -0
  371. package/build/esm/components/ErrorTree/helpers/getIntermediateChain.d.ts +6 -0
  372. package/build/esm/components/ErrorTree/helpers/getIntermediateChain.js +16 -0
  373. package/build/esm/components/ErrorTree/helpers/getIntermediateChain.js.map +1 -0
  374. package/build/esm/components/ErrorTree/i18n/dicts.d.ts +27 -0
  375. package/build/esm/components/ErrorTree/i18n/dicts.js +7 -0
  376. package/build/esm/components/ErrorTree/i18n/dicts.js.map +1 -0
  377. package/build/esm/components/ErrorTree/i18n/en.json +11 -0
  378. package/build/esm/components/ErrorTree/i18n/index.d.ts +6 -0
  379. package/build/esm/components/ErrorTree/i18n/index.js +4 -0
  380. package/build/esm/components/ErrorTree/i18n/index.js.map +1 -0
  381. package/build/esm/components/ErrorTree/i18n/ru.json +13 -0
  382. package/build/esm/components/ErrorTree/index.d.ts +1 -0
  383. package/build/esm/components/ErrorTree/index.js +2 -0
  384. package/build/esm/components/ErrorTree/index.js.map +1 -0
  385. package/build/esm/components/ErrorTree/internal/ErrorTreeChildren.css +4 -0
  386. package/build/esm/components/ErrorTree/internal/ErrorTreeChildren.css.map +1 -0
  387. package/build/esm/components/ErrorTree/internal/ErrorTreeChildren.d.ts +10 -0
  388. package/build/esm/components/ErrorTree/internal/ErrorTreeChildren.js +25 -0
  389. package/build/esm/components/ErrorTree/internal/ErrorTreeChildren.js.map +1 -0
  390. package/build/esm/components/ErrorTree/internal/ErrorTreeChildren.scss +5 -0
  391. package/build/esm/components/ErrorTree/internal/ErrorTreeNode.css +80 -0
  392. package/build/esm/components/ErrorTree/internal/ErrorTreeNode.css.map +1 -0
  393. package/build/esm/components/ErrorTree/internal/ErrorTreeNode.d.ts +13 -0
  394. package/build/esm/components/ErrorTree/internal/ErrorTreeNode.js +266 -0
  395. package/build/esm/components/ErrorTree/internal/ErrorTreeNode.js.map +1 -0
  396. package/build/esm/components/ErrorTree/internal/ErrorTreeNode.scss +95 -0
  397. package/build/esm/components/ErrorTree/internal/IntermediateMessages.css +10 -0
  398. package/build/esm/components/ErrorTree/internal/IntermediateMessages.css.map +1 -0
  399. package/build/esm/components/ErrorTree/internal/IntermediateMessages.d.ts +9 -0
  400. package/build/esm/components/ErrorTree/internal/IntermediateMessages.js +110 -0
  401. package/build/esm/components/ErrorTree/internal/IntermediateMessages.js.map +1 -0
  402. package/build/esm/components/ErrorTree/internal/IntermediateMessages.scss +13 -0
  403. package/build/esm/components/Icons/LogoCPlusPlus.d.ts +2 -0
  404. package/build/esm/components/Icons/LogoCPlusPlus.js +28 -0
  405. package/build/esm/components/Icons/LogoCPlusPlus.js.map +1 -0
  406. package/build/esm/components/Icons/index.d.ts +1 -0
  407. package/build/esm/components/Icons/index.js +2 -0
  408. package/build/esm/components/Icons/index.js.map +1 -0
  409. package/build/esm/components/QueryResultsTable/QueryResultsTable.css +53 -0
  410. package/build/esm/components/QueryResultsTable/QueryResultsTable.css.map +1 -0
  411. package/build/esm/components/QueryResultsTable/QueryResultsTable.d.ts +24 -0
  412. package/build/esm/components/QueryResultsTable/QueryResultsTable.js +96 -0
  413. package/build/esm/components/QueryResultsTable/QueryResultsTable.js.map +1 -0
  414. package/build/esm/components/QueryResultsTable/QueryResultsTable.scss +65 -0
  415. package/build/esm/components/QueryResultsTable/helpers/formatQueryResultType.d.ts +3 -0
  416. package/build/esm/components/QueryResultsTable/helpers/formatQueryResultType.js +82 -0
  417. package/build/esm/components/QueryResultsTable/helpers/formatQueryResultType.js.map +1 -0
  418. package/build/esm/components/QueryResultsTable/helpers/formatQueryResultValue.d.ts +11 -0
  419. package/build/esm/components/QueryResultsTable/helpers/formatQueryResultValue.js +33 -0
  420. package/build/esm/components/QueryResultsTable/helpers/formatQueryResultValue.js.map +1 -0
  421. package/build/esm/components/QueryResultsTable/i18n/dicts.d.ts +13 -0
  422. package/build/esm/components/QueryResultsTable/i18n/dicts.js +7 -0
  423. package/build/esm/components/QueryResultsTable/i18n/dicts.js.map +1 -0
  424. package/build/esm/components/QueryResultsTable/i18n/en.json +5 -0
  425. package/build/esm/components/QueryResultsTable/i18n/index.d.ts +6 -0
  426. package/build/esm/components/QueryResultsTable/i18n/index.js +4 -0
  427. package/build/esm/components/QueryResultsTable/i18n/index.js.map +1 -0
  428. package/build/esm/components/QueryResultsTable/i18n/ru.json +5 -0
  429. package/build/esm/components/QueryResultsTable/index.d.ts +3 -0
  430. package/build/esm/components/QueryResultsTable/index.js +3 -0
  431. package/build/esm/components/QueryResultsTable/index.js.map +1 -0
  432. package/build/esm/components/QueryResultsTable/internal/QueryResultCell.d.ts +11 -0
  433. package/build/esm/components/QueryResultsTable/internal/QueryResultCell.js +71 -0
  434. package/build/esm/components/QueryResultsTable/internal/QueryResultCell.js.map +1 -0
  435. package/build/esm/components/index.d.ts +5 -0
  436. package/build/esm/components/index.js +4 -0
  437. package/build/esm/components/index.js.map +1 -1
  438. package/build/esm/helpers/createUuid.d.ts +1 -0
  439. package/build/esm/helpers/createUuid.js +6 -0
  440. package/build/esm/helpers/createUuid.js.map +1 -0
  441. package/build/esm/helpers/isObjectEqual.d.ts +1 -0
  442. package/build/esm/helpers/isObjectEqual.js +23 -0
  443. package/build/esm/helpers/isObjectEqual.js.map +1 -0
  444. package/build/esm/helpers/useDebouncedValue.d.ts +2 -0
  445. package/build/esm/helpers/useDebouncedValue.js +21 -0
  446. package/build/esm/helpers/useDebouncedValue.js.map +1 -0
  447. package/build/esm/index.d.ts +3 -0
  448. package/build/esm/index.js +3 -0
  449. package/build/esm/index.js.map +1 -1
  450. package/build/esm/modules/Attachments/Attachments.css +8 -0
  451. package/build/esm/modules/Attachments/Attachments.css.map +1 -0
  452. package/build/esm/modules/Attachments/Attachments.d.ts +22 -0
  453. package/build/esm/modules/Attachments/Attachments.js +373 -0
  454. package/build/esm/modules/Attachments/Attachments.js.map +1 -0
  455. package/build/esm/modules/Attachments/Attachments.scss +10 -0
  456. package/build/esm/modules/Attachments/Attachments.stories.d.ts +41 -0
  457. package/build/esm/modules/Attachments/Attachments.stories.js +115 -0
  458. package/build/esm/modules/Attachments/Attachments.stories.js.map +1 -0
  459. package/build/esm/modules/Attachments/i18n/dicts.d.ts +13 -0
  460. package/build/esm/modules/Attachments/i18n/dicts.js +7 -0
  461. package/build/esm/modules/Attachments/i18n/dicts.js.map +1 -0
  462. package/build/esm/modules/Attachments/i18n/en.json +5 -0
  463. package/build/esm/modules/Attachments/i18n/index.d.ts +6 -0
  464. package/build/esm/modules/Attachments/i18n/index.js +4 -0
  465. package/build/esm/modules/Attachments/i18n/index.js.map +1 -0
  466. package/build/esm/modules/Attachments/i18n/ru.json +5 -0
  467. package/build/esm/modules/Attachments/index.d.ts +2 -0
  468. package/build/esm/modules/Attachments/index.js +2 -0
  469. package/build/esm/modules/Attachments/index.js.map +1 -0
  470. package/build/esm/modules/NavigationPreview/NavigationPreview.css +7 -1
  471. package/build/esm/modules/NavigationPreview/NavigationPreview.css.map +1 -1
  472. package/build/esm/modules/NavigationPreview/NavigationPreview.d.ts +2 -2
  473. package/build/esm/modules/NavigationPreview/NavigationPreview.js +38 -8
  474. package/build/esm/modules/NavigationPreview/NavigationPreview.js.map +1 -1
  475. package/build/esm/modules/NavigationPreview/NavigationPreview.scss +25 -17
  476. package/build/esm/modules/NavigationPreview/story/NavigationPreview.stories.d.ts +1 -0
  477. package/build/esm/modules/NavigationPreview/story/NavigationPreview.stories.js +24 -0
  478. package/build/esm/modules/NavigationPreview/story/NavigationPreview.stories.js.map +1 -1
  479. package/build/esm/modules/NavigationPreview/story/mockData.d.ts +2 -2
  480. package/build/esm/modules/NavigationPreview/story/mockData.js +16 -4
  481. package/build/esm/modules/NavigationPreview/story/mockData.js.map +1 -1
  482. package/build/esm/modules/QueryStatistics/QueryStatistics.css +4 -0
  483. package/build/esm/modules/QueryStatistics/QueryStatistics.css.map +1 -0
  484. package/build/esm/modules/QueryStatistics/QueryStatistics.d.ts +4 -0
  485. package/build/esm/modules/QueryStatistics/QueryStatistics.js +143 -0
  486. package/build/esm/modules/QueryStatistics/QueryStatistics.js.map +1 -0
  487. package/build/esm/modules/QueryStatistics/QueryStatistics.scss +3 -0
  488. package/build/esm/modules/QueryStatistics/helpers.d.ts +15 -0
  489. package/build/esm/modules/QueryStatistics/helpers.js +106 -0
  490. package/build/esm/modules/QueryStatistics/helpers.js.map +1 -0
  491. package/build/esm/modules/QueryStatistics/i18n/dicts.d.ts +35 -0
  492. package/build/esm/modules/QueryStatistics/i18n/dicts.js +7 -0
  493. package/build/esm/modules/QueryStatistics/i18n/dicts.js.map +1 -0
  494. package/build/esm/modules/QueryStatistics/i18n/en.json +16 -0
  495. package/build/esm/modules/QueryStatistics/i18n/index.d.ts +6 -0
  496. package/build/esm/modules/QueryStatistics/i18n/index.js +4 -0
  497. package/build/esm/modules/QueryStatistics/i18n/index.js.map +1 -0
  498. package/build/esm/modules/QueryStatistics/i18n/ru.json +16 -0
  499. package/build/esm/modules/QueryStatistics/index.d.ts +2 -0
  500. package/build/esm/modules/QueryStatistics/index.js +2 -0
  501. package/build/esm/modules/QueryStatistics/index.js.map +1 -0
  502. package/build/esm/modules/QueryStatistics/internal/MetricCell.css +36 -0
  503. package/build/esm/modules/QueryStatistics/internal/MetricCell.css.map +1 -0
  504. package/build/esm/modules/QueryStatistics/internal/MetricCell.d.ts +9 -0
  505. package/build/esm/modules/QueryStatistics/internal/MetricCell.js +114 -0
  506. package/build/esm/modules/QueryStatistics/internal/MetricCell.js.map +1 -0
  507. package/build/esm/modules/QueryStatistics/internal/MetricCell.scss +12 -0
  508. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsTable.css +21 -0
  509. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsTable.css.map +1 -0
  510. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsTable.d.ts +20 -0
  511. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsTable.js +132 -0
  512. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsTable.js.map +1 -0
  513. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsTable.scss +8 -0
  514. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsToolbar.css +5 -0
  515. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsToolbar.css.map +1 -0
  516. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsToolbar.d.ts +10 -0
  517. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsToolbar.js +48 -0
  518. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsToolbar.js.map +1 -0
  519. package/build/esm/modules/QueryStatistics/internal/QueryStatisticsToolbar.scss +1 -0
  520. package/build/esm/modules/QueryStatistics/story/QueryStatistics.stories.d.ts +8 -0
  521. package/build/esm/modules/QueryStatistics/story/QueryStatistics.stories.js +105 -0
  522. package/build/esm/modules/QueryStatistics/story/QueryStatistics.stories.js.map +1 -0
  523. package/build/esm/modules/index.d.ts +3 -0
  524. package/build/esm/modules/index.js +2 -0
  525. package/build/esm/modules/index.js.map +1 -1
  526. package/build/esm/types/declarations.d.ts +10 -0
  527. package/build/esm/types/errorTree.d.ts +23 -0
  528. package/build/esm/types/errorTree.js +2 -0
  529. package/build/esm/types/errorTree.js.map +1 -0
  530. package/build/esm/types/navigation.d.ts +8 -1
  531. package/build/esm/types/navigation.js.map +1 -1
  532. package/build/esm/types/queryResults.d.ts +34 -0
  533. package/build/esm/types/queryResults.js +2 -0
  534. package/build/esm/types/queryResults.js.map +1 -0
  535. package/build/esm/types/queryStatistics.d.ts +54 -0
  536. package/build/esm/types/queryStatistics.js +2 -0
  537. package/build/esm/types/queryStatistics.js.map +1 -0
  538. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.stories.js +40 -35
  539. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.stories.js.map +1 -1
  540. package/build/esm/widgets/QueriesNavigation/i18n/index.d.ts +2 -2
  541. package/build/esm/widgets/QueryResults/QueryResults.css +19 -0
  542. package/build/esm/widgets/QueryResults/QueryResults.css.map +1 -0
  543. package/build/esm/widgets/QueryResults/QueryResults.d.ts +23 -0
  544. package/build/esm/widgets/QueryResults/QueryResults.js +111 -0
  545. package/build/esm/widgets/QueryResults/QueryResults.js.map +1 -0
  546. package/build/esm/widgets/QueryResults/QueryResults.scss +25 -0
  547. package/build/esm/widgets/QueryResults/QueryResults.stories.d.ts +19 -0
  548. package/build/esm/widgets/QueryResults/QueryResults.stories.js +191 -0
  549. package/build/esm/widgets/QueryResults/QueryResults.stories.js.map +1 -0
  550. package/build/esm/widgets/QueryResults/i18n/dicts.d.ts +25 -0
  551. package/build/esm/widgets/QueryResults/i18n/dicts.js +7 -0
  552. package/build/esm/widgets/QueryResults/i18n/dicts.js.map +1 -0
  553. package/build/esm/widgets/QueryResults/i18n/en.json +10 -0
  554. package/build/esm/widgets/QueryResults/i18n/index.d.ts +6 -0
  555. package/build/esm/widgets/QueryResults/i18n/index.js +4 -0
  556. package/build/esm/widgets/QueryResults/i18n/index.js.map +1 -0
  557. package/build/esm/widgets/QueryResults/i18n/ru.json +12 -0
  558. package/build/esm/widgets/QueryResults/index.d.ts +2 -0
  559. package/build/esm/widgets/QueryResults/index.js +2 -0
  560. package/build/esm/widgets/QueryResults/index.js.map +1 -0
  561. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.d.ts +7 -0
  562. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.js +41 -0
  563. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.js.map +1 -0
  564. package/build/esm/widgets/index.d.ts +2 -0
  565. package/build/esm/widgets/index.js +1 -0
  566. package/build/esm/widgets/index.js.map +1 -1
  567. package/package.json +1 -1
  568. package/plans/styles-rules.md +137 -0
  569. package/src/components/AttachmentList/AttachmentList.scss +25 -0
  570. package/src/components/AttachmentList/AttachmentList.stories.tsx +243 -0
  571. package/src/components/AttachmentList/AttachmentList.tsx +67 -0
  572. package/src/components/AttachmentList/helpers/getIconByAttachmentName.ts +36 -0
  573. package/src/components/AttachmentList/helpers/objectLinkValidator.ts +40 -0
  574. package/src/components/AttachmentList/helpers/stringRequiredValidator.ts +24 -0
  575. package/src/components/AttachmentList/hooks/useKeyDownFormControl.ts +22 -0
  576. package/src/components/AttachmentList/hooks/useLabelRef.ts +25 -0
  577. package/src/components/AttachmentList/i18n/dicts.ts +4 -0
  578. package/src/components/AttachmentList/i18n/en.json +10 -0
  579. package/src/components/AttachmentList/i18n/index.ts +5 -0
  580. package/src/components/AttachmentList/i18n/ru.json +10 -0
  581. package/src/components/AttachmentList/index.ts +4 -0
  582. package/src/components/AttachmentList/internal/AttachmentItem/AttachmentItem.scss +23 -0
  583. package/src/components/AttachmentList/internal/AttachmentItem/AttachmentItem.tsx +75 -0
  584. package/src/components/AttachmentList/internal/AttachmentItem/index.ts +2 -0
  585. package/src/components/AttachmentList/internal/EditAttachmentItem/EditAttachmentItem.tsx +21 -0
  586. package/src/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.scss +21 -0
  587. package/src/components/AttachmentList/internal/EditAttachmentItem/EditLinkItem.tsx +194 -0
  588. package/src/components/AttachmentList/internal/EditAttachmentItem/FileEdit.tsx +92 -0
  589. package/src/components/AttachmentList/internal/EditAttachmentItem/index.ts +4 -0
  590. package/src/components/AttachmentListPlaceholder/AttachmentListPlaceholder.scss +5 -0
  591. package/src/components/AttachmentListPlaceholder/AttachmentListPlaceholder.stories.tsx +30 -0
  592. package/src/components/AttachmentListPlaceholder/AttachmentListPlaceholder.tsx +72 -0
  593. package/src/components/AttachmentListPlaceholder/assets/empty-attachments.svg +14 -0
  594. package/src/components/AttachmentListPlaceholder/i18n/dicts.ts +4 -0
  595. package/src/components/AttachmentListPlaceholder/i18n/en.json +7 -0
  596. package/src/components/AttachmentListPlaceholder/i18n/index.ts +5 -0
  597. package/src/components/AttachmentListPlaceholder/i18n/ru.json +7 -0
  598. package/src/components/AttachmentListPlaceholder/index.ts +2 -0
  599. package/src/components/DataTable/DataTable.scss +18 -26
  600. package/src/components/DataTable/DataTable.tsx +23 -4
  601. package/src/components/ErrorTree/ErrorTree.stories.tsx +94 -0
  602. package/src/components/ErrorTree/ErrorTree.tsx +30 -0
  603. package/src/components/ErrorTree/helpers/formatAttributes.ts +9 -0
  604. package/src/components/ErrorTree/helpers/getIntermediateChain.ts +21 -0
  605. package/src/components/ErrorTree/i18n/dicts.ts +4 -0
  606. package/src/components/ErrorTree/i18n/en.json +11 -0
  607. package/src/components/ErrorTree/i18n/index.ts +5 -0
  608. package/src/components/ErrorTree/i18n/ru.json +13 -0
  609. package/src/components/ErrorTree/index.ts +1 -0
  610. package/src/components/ErrorTree/internal/ErrorTreeChildren.scss +5 -0
  611. package/src/components/ErrorTree/internal/ErrorTreeChildren.tsx +25 -0
  612. package/src/components/ErrorTree/internal/ErrorTreeNode.scss +95 -0
  613. package/src/components/ErrorTree/internal/ErrorTreeNode.tsx +178 -0
  614. package/src/components/ErrorTree/internal/IntermediateMessages.scss +13 -0
  615. package/src/components/ErrorTree/internal/IntermediateMessages.tsx +127 -0
  616. package/src/components/Icons/LogoCPlusPlus.tsx +34 -0
  617. package/src/components/Icons/index.ts +1 -0
  618. package/src/components/QueryResultsTable/QueryResultsTable.scss +65 -0
  619. package/src/components/QueryResultsTable/QueryResultsTable.tsx +112 -0
  620. package/src/components/QueryResultsTable/helpers/formatQueryResultType.ts +76 -0
  621. package/src/components/QueryResultsTable/helpers/formatQueryResultValue.ts +38 -0
  622. package/src/components/QueryResultsTable/i18n/dicts.ts +4 -0
  623. package/src/components/QueryResultsTable/i18n/en.json +5 -0
  624. package/src/components/QueryResultsTable/i18n/index.ts +4 -0
  625. package/src/components/QueryResultsTable/i18n/ru.json +5 -0
  626. package/src/components/QueryResultsTable/index.ts +3 -0
  627. package/src/components/QueryResultsTable/internal/QueryResultCell.tsx +63 -0
  628. package/src/components/index.ts +5 -0
  629. package/src/helpers/createUuid.ts +3 -0
  630. package/src/helpers/isObjectEqual.ts +15 -0
  631. package/src/helpers/useDebouncedValue.ts +14 -0
  632. package/src/index.ts +3 -0
  633. package/src/modules/Attachments/Attachments.scss +10 -0
  634. package/src/modules/Attachments/Attachments.stories.tsx +112 -0
  635. package/src/modules/Attachments/Attachments.tsx +336 -0
  636. package/src/modules/Attachments/i18n/dicts.ts +4 -0
  637. package/src/modules/Attachments/i18n/en.json +5 -0
  638. package/src/modules/Attachments/i18n/index.ts +5 -0
  639. package/src/modules/Attachments/i18n/ru.json +5 -0
  640. package/src/modules/Attachments/index.ts +2 -0
  641. package/src/modules/NavigationPreview/NavigationPreview.scss +25 -17
  642. package/src/modules/NavigationPreview/NavigationPreview.tsx +62 -17
  643. package/src/modules/NavigationPreview/story/NavigationPreview.stories.tsx +26 -1
  644. package/src/modules/NavigationPreview/story/mockData.ts +10 -5
  645. package/src/modules/QueryStatistics/QueryStatistics.scss +3 -0
  646. package/src/modules/QueryStatistics/QueryStatistics.tsx +125 -0
  647. package/src/modules/QueryStatistics/helpers.ts +96 -0
  648. package/src/modules/QueryStatistics/i18n/dicts.ts +4 -0
  649. package/src/modules/QueryStatistics/i18n/en.json +16 -0
  650. package/src/modules/QueryStatistics/i18n/index.ts +4 -0
  651. package/src/modules/QueryStatistics/i18n/ru.json +16 -0
  652. package/src/modules/QueryStatistics/index.ts +13 -0
  653. package/src/modules/QueryStatistics/internal/MetricCell.scss +12 -0
  654. package/src/modules/QueryStatistics/internal/MetricCell.tsx +99 -0
  655. package/src/modules/QueryStatistics/internal/QueryStatisticsTable.scss +8 -0
  656. package/src/modules/QueryStatistics/internal/QueryStatisticsTable.tsx +135 -0
  657. package/src/modules/QueryStatistics/internal/QueryStatisticsToolbar.scss +1 -0
  658. package/src/modules/QueryStatistics/internal/QueryStatisticsToolbar.tsx +61 -0
  659. package/src/modules/QueryStatistics/story/QueryStatistics.stories.tsx +71 -0
  660. package/src/modules/index.ts +14 -0
  661. package/src/types/declarations.d.ts +10 -0
  662. package/src/types/errorTree.ts +30 -0
  663. package/src/types/navigation.ts +11 -1
  664. package/src/types/queryResults.ts +48 -0
  665. package/src/types/queryStatistics.ts +67 -0
  666. package/src/widgets/QueriesNavigation/QueriesNavigation.stories.tsx +42 -33
  667. package/src/widgets/QueryResults/QueryResults.scss +25 -0
  668. package/src/widgets/QueryResults/QueryResults.stories.tsx +155 -0
  669. package/src/widgets/QueryResults/QueryResults.tsx +121 -0
  670. package/src/widgets/QueryResults/i18n/dicts.ts +4 -0
  671. package/src/widgets/QueryResults/i18n/en.json +10 -0
  672. package/src/widgets/QueryResults/i18n/index.ts +4 -0
  673. package/src/widgets/QueryResults/i18n/ru.json +12 -0
  674. package/src/widgets/QueryResults/index.ts +2 -0
  675. package/src/widgets/QueryResults/internal/QueryResultsSchema.tsx +41 -0
  676. package/src/widgets/index.ts +2 -0
@@ -0,0 +1,243 @@
1
+ import React, {useState} from 'react';
2
+ import type {Meta, StoryObj} from '@storybook/react';
3
+ import {Text} from '@gravity-ui/uikit';
4
+ import {EditAttachmentItem, EditLinkValues} from './internal/EditAttachmentItem';
5
+ import {fn} from 'storybook/test';
6
+
7
+ import {AttachmentList, type AttachmentListProps} from './AttachmentList';
8
+
9
+ const attachments: AttachmentListProps['attachments'] = [
10
+ {id: 'readme', name: 'README'},
11
+ {id: 'javascript', name: 'index.js'},
12
+ {id: 'python', name: 'main.py'},
13
+ {id: 'csv', name: 'sales.csv'},
14
+ {id: 'link-image', name: 'https://home/tutorial', link: 'https://home/tutorial'},
15
+ {id: 'excel', name: 'forecast.xlsx'},
16
+ {id: 'cpp', name: 'processor.cpp'},
17
+ {id: 'ql', name: 'analytics.ql'},
18
+ {id: 'yql', name: 'events.yql'},
19
+ {id: 'sql', name: 'report.sql'},
20
+ {id: 'link', name: 'link to file.cpp', link: 'link/to/file.cpp'},
21
+ ];
22
+
23
+ const meta = {
24
+ title: 'Components/AttachmentList',
25
+ component: AttachmentList,
26
+ tags: ['autodocs'],
27
+ parameters: {
28
+ layout: 'padded',
29
+ },
30
+ decorators: [
31
+ (Story) => (
32
+ <div style={{width: 360, height: 360}}>
33
+ <Story />
34
+ </div>
35
+ ),
36
+ ],
37
+ args: {
38
+ attachments,
39
+ onDelete: fn(),
40
+ onEdit: fn(),
41
+ },
42
+ } satisfies Meta<typeof AttachmentList>;
43
+
44
+ export default meta;
45
+ type Story = StoryObj<typeof meta>;
46
+
47
+ /** Attachments with supported extensions use their corresponding icons. Row actions appear on hover. */
48
+ export const Default: Story = {};
49
+
50
+ /** `wasAddedIds` and `wasEditedIds` highlight attachments with their current change state. */
51
+ export const ChangeStates: Story = {
52
+ args: {
53
+ wasAddedIds: ['javascript', 'csv'],
54
+ wasEditedIds: ['python', 'sql'],
55
+ },
56
+ };
57
+
58
+ /** The inherited List filtering API can be enabled when a consumer needs local attachment search. */
59
+ export const Filterable: Story = {
60
+ args: {
61
+ filterable: true,
62
+ filterPlaceholder: 'Filter by attachment name',
63
+ filterItem: (filter) => (attachment) =>
64
+ (attachment as AttachmentListProps['attachments'][number]).name
65
+ .toLocaleLowerCase()
66
+ .includes(filter.toLocaleLowerCase()),
67
+ },
68
+ };
69
+
70
+ const InteractiveAttachmentList = (props: AttachmentListProps) => {
71
+ const [currentAttachments, setCurrentAttachments] = useState(props.attachments);
72
+ const [editedIds, setEditedIds] = useState<string[]>([]);
73
+
74
+ return (
75
+ <AttachmentList
76
+ {...props}
77
+ attachments={currentAttachments}
78
+ wasEditedIds={editedIds}
79
+ onDelete={(attachment) => {
80
+ props.onDelete?.(attachment);
81
+ setCurrentAttachments((current) =>
82
+ current.filter((item) => item.id !== attachment.id),
83
+ );
84
+ setEditedIds((current) => current.filter((id) => id !== attachment.id));
85
+ }}
86
+ onEdit={(attachment) => {
87
+ props.onEdit?.(attachment);
88
+ setEditedIds((current) =>
89
+ current.includes(attachment.id)
90
+ ? current.filter((id) => id !== attachment.id)
91
+ : [...current, attachment.id],
92
+ );
93
+ }}
94
+ />
95
+ );
96
+ };
97
+
98
+ /** Hover a row: edit toggles its edited state and delete removes it from the list. */
99
+ export const InteractiveActions: Story = {
100
+ render: (args) => <InteractiveAttachmentList {...args} />,
101
+ };
102
+
103
+ const EditableAttachmentList = (props: AttachmentListProps) => {
104
+ const [currentAttachments, setCurrentAttachments] = useState(props.attachments);
105
+ const [editingId, setEditingId] = useState<string>();
106
+ const [draftName, setDraftName] = useState('');
107
+ const [draftLink, setDraftLink] = useState<EditLinkValues>({
108
+ link: '',
109
+ token: '',
110
+ name: '',
111
+ });
112
+
113
+ const handleAcceptDraft = () => {
114
+ setCurrentAttachments((prevState) => {
115
+ return prevState.map((attach) => {
116
+ if (attach.id === editingId && attach.link === undefined) {
117
+ return {
118
+ ...attach,
119
+ name: draftName,
120
+ };
121
+ }
122
+ if (attach.id === editingId && typeof attach.link === 'string') {
123
+ return {
124
+ ...attach,
125
+ name: draftLink.name,
126
+ link: draftLink.link,
127
+ };
128
+ }
129
+ return attach;
130
+ });
131
+ });
132
+ setDraftName('');
133
+ setEditingId('');
134
+ };
135
+
136
+ return (
137
+ <AttachmentList
138
+ {...props}
139
+ attachments={currentAttachments}
140
+ editingIds={editingId ? [editingId] : []}
141
+ onDelete={(attach) =>
142
+ setCurrentAttachments((list) => list.filter((l) => l.id !== attach.id))
143
+ }
144
+ onEdit={(attachment) => {
145
+ props.onEdit?.(attachment);
146
+ setEditingId(attachment.id);
147
+ setDraftName(attachment.name);
148
+ if (typeof attachment.link === 'string') {
149
+ setDraftLink({...draftLink, name: attachment.name, link: attachment.link});
150
+ }
151
+ }}
152
+ renderEditForm={(attachment) => {
153
+ const isLink = typeof attachment.link === 'string';
154
+
155
+ if (isLink) {
156
+ return (
157
+ <EditAttachmentItem
158
+ onCancel={() => setEditingId('')}
159
+ onAccept={handleAcceptDraft}
160
+ values={draftLink}
161
+ onChange={setDraftLink}
162
+ tokens={[
163
+ {value: 'default_database_logs', title: 'default_database_logs'},
164
+ {value: 'default_yt', title: 'default_yt'},
165
+ {value: 'default_yql', title: 'default_yql'},
166
+ {
167
+ value: 'default_long_token_title',
168
+ title: 'default_long_token_title',
169
+ },
170
+ ]}
171
+ type={'link'}
172
+ />
173
+ );
174
+ }
175
+
176
+ return (
177
+ <EditAttachmentItem
178
+ fileName={draftName}
179
+ onChangeFileName={setDraftName}
180
+ onCancel={() => setEditingId('')}
181
+ onAccept={handleAcceptDraft}
182
+ type={'file'}
183
+ />
184
+ );
185
+ }}
186
+ />
187
+ );
188
+ };
189
+
190
+ /** Hover a row and click edit to replace it with a consumer-provided rename form. */
191
+ export const CustomEditForm: Story = {
192
+ render: (args) => <EditableAttachmentList {...args} />,
193
+ };
194
+
195
+ const SortableAttachmentList = (props: AttachmentListProps) => {
196
+ const [orderedAttachments, setOrderedAttachments] = useState(props.attachments);
197
+
198
+ return (
199
+ <AttachmentList
200
+ {...props}
201
+ attachments={orderedAttachments}
202
+ onSortEnd={({oldIndex, newIndex}) => {
203
+ props.onSortEnd?.({oldIndex, newIndex});
204
+ setOrderedAttachments((current) => {
205
+ const next = [...current];
206
+ const [movedAttachment] = next.splice(oldIndex, 1);
207
+
208
+ if (movedAttachment) {
209
+ next.splice(newIndex, 0, movedAttachment);
210
+ }
211
+
212
+ return next;
213
+ });
214
+ }}
215
+ />
216
+ );
217
+ };
218
+
219
+ /** Drag attachments by the handle to reorder them using the inherited List sorting API. */
220
+ export const Sortable: Story = {
221
+ args: {
222
+ sortable: true,
223
+ sortHandleAlign: 'left',
224
+ onSortEnd: fn(),
225
+ },
226
+ render: (args) => <SortableAttachmentList {...args} />,
227
+ };
228
+
229
+ /** Consumer-provided content is displayed when the attachment array is empty. */
230
+ export const Empty: Story = {
231
+ args: {
232
+ attachments: [],
233
+ emptyPlaceholder: <Text color="secondary">No attachments yet</Text>,
234
+ },
235
+ };
236
+
237
+ /** The inherited loading state can be used while the attachment collection is being fetched. */
238
+ export const Loading: Story = {
239
+ args: {
240
+ attachments: [],
241
+ loading: true,
242
+ },
243
+ };
@@ -0,0 +1,67 @@
1
+ import React, {ReactNode, useMemo} from 'react';
2
+ import {Flex, List, ListProps} from '@gravity-ui/uikit';
3
+ import {AttachmentItem, AttachmentItemProps} from './internal/AttachmentItem/AttachmentItem';
4
+ import './AttachmentList.scss';
5
+
6
+ export type AttachmentListProps = Omit<ListProps, 'items' | 'selectedItemIndex' | 'virtualized'> & {
7
+ attachments: AttachmentItemProps['attachment'][];
8
+ className?: string;
9
+ onDelete?: (attachment: AttachmentItemProps['attachment']) => void;
10
+ onEdit?: (attachment: AttachmentItemProps['attachment']) => void;
11
+ onRevert?: (attachment: AttachmentItemProps['attachment']) => void;
12
+
13
+ renderEditForm?: (attachment: AttachmentItemProps['attachment']) => ReactNode;
14
+
15
+ wasAddedIds?: string[];
16
+ wasEditedIds?: string[];
17
+
18
+ editingIds?: string[];
19
+
20
+ isDeleted?: boolean;
21
+ };
22
+
23
+ export const AttachmentList = ({
24
+ attachments,
25
+ onEdit,
26
+ onDelete,
27
+ onRevert,
28
+ wasAddedIds,
29
+ wasEditedIds,
30
+ editingIds,
31
+ renderEditForm,
32
+ className,
33
+ isDeleted,
34
+ ...listProps
35
+ }: AttachmentListProps) => {
36
+ const addedIdsSet = useMemo(() => new Set(wasAddedIds), [wasAddedIds]);
37
+ const editedIdsSet = useMemo(() => new Set(wasEditedIds), [wasEditedIds]);
38
+ const editingIdsSet = useMemo(() => new Set(editingIds), [editingIds]);
39
+
40
+ return (
41
+ <Flex className={className} width="100%" height="100%">
42
+ <List<AttachmentListProps['attachments'][number]>
43
+ filterable={false}
44
+ virtualized={false}
45
+ items={attachments}
46
+ renderItem={(attachment) => {
47
+ if (editingIdsSet.has(attachment.id)) {
48
+ return renderEditForm?.(attachment);
49
+ }
50
+
51
+ return (
52
+ <AttachmentItem
53
+ attachment={attachment}
54
+ wasAdded={addedIdsSet.has(attachment.id)}
55
+ wasEdited={editedIdsSet.has(attachment.id)}
56
+ onEdit={onEdit}
57
+ onRevert={onRevert}
58
+ onDelete={onDelete}
59
+ isDeleted={isDeleted}
60
+ />
61
+ );
62
+ }}
63
+ {...listProps}
64
+ />
65
+ </Flex>
66
+ );
67
+ };
@@ -0,0 +1,36 @@
1
+ import {AbbrQl, AbbrSql, FileCode, LayoutList, LogoNodejs, LogoPython} from '@gravity-ui/icons';
2
+ import {LogoCPlusPlus} from '../../Icons';
3
+
4
+ const iconMatcher = {
5
+ js: LogoNodejs,
6
+ ql: AbbrQl,
7
+ sql: AbbrSql,
8
+ yql: AbbrSql,
9
+ py: LogoPython,
10
+ csv: LayoutList,
11
+ xls: LayoutList,
12
+ xlsx: LayoutList,
13
+ cpp: LogoCPlusPlus,
14
+ unknown: FileCode,
15
+ } as const;
16
+
17
+ export const getAttachmentExtension = (attachmentName: string) => {
18
+ const name = attachmentName.split('/').pop();
19
+
20
+ if (name === undefined) return 'unknown';
21
+
22
+ const index = name?.lastIndexOf('.');
23
+
24
+ if (index === undefined) return 'unknown';
25
+
26
+ const extension = index > 0 ? name.slice(index + 1) : '';
27
+
28
+ if (extension in iconMatcher) return extension as keyof typeof iconMatcher;
29
+
30
+ return 'unknown';
31
+ };
32
+
33
+ export const getAttachmentIcon = (attachmentName: string) => {
34
+ const extension = getAttachmentExtension(attachmentName);
35
+ return iconMatcher[extension];
36
+ };
@@ -0,0 +1,40 @@
1
+ import {stringRequiredValidator} from './stringRequiredValidator';
2
+
3
+ export type EditLinkErrors = Partial<{
4
+ link: string;
5
+ token: string;
6
+ name: string;
7
+ }>;
8
+
9
+ export type ObjectLinkValidator = (
10
+ values: Record<string, unknown>,
11
+ isTokenRequired?: boolean,
12
+ ) => EditLinkErrors | null;
13
+
14
+ export const objectLinkValidator = (values: Record<string, unknown>, isTokenRequired?: boolean) => {
15
+ const patchErrors: Partial<EditLinkErrors> = {};
16
+
17
+ const linkError = stringRequiredValidator(values.link);
18
+
19
+ if (linkError) {
20
+ patchErrors['link'] = linkError;
21
+ }
22
+
23
+ const tokenError = isTokenRequired ? stringRequiredValidator(values.token) : null;
24
+
25
+ if (tokenError) {
26
+ patchErrors['token'] = tokenError;
27
+ }
28
+
29
+ const nameError = stringRequiredValidator(values.name);
30
+
31
+ if (nameError) {
32
+ patchErrors['name'] = nameError;
33
+ }
34
+
35
+ if (Object.keys(patchErrors).length === 0) {
36
+ return null;
37
+ }
38
+
39
+ return patchErrors;
40
+ };
@@ -0,0 +1,24 @@
1
+ import i18n from '../i18n';
2
+
3
+ const DEFAULT_MAX_LENGTH = 256;
4
+
5
+ export type Validator = (value: unknown) => string | null;
6
+
7
+ export const stringRequiredValidator: Validator = (
8
+ value: unknown,
9
+ maxLength: number = DEFAULT_MAX_LENGTH,
10
+ ) => {
11
+ if (typeof value !== 'string') {
12
+ return i18n('alert_value-must-be-string');
13
+ }
14
+
15
+ if (!value.trim()) {
16
+ return i18n('alert_required-field');
17
+ }
18
+
19
+ if (value.length > maxLength) {
20
+ return i18n('alert_max-length', {maxLength});
21
+ }
22
+
23
+ return null;
24
+ };
@@ -0,0 +1,22 @@
1
+ export const useKeyDownFormControl = (onAccept: () => void, onCancel: () => void) => {
2
+ const handleInputKeyDown = (
3
+ event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>,
4
+ ) => {
5
+ if (event.key === 'Enter' && !event.shiftKey) {
6
+ event.preventDefault();
7
+ onAccept();
8
+ }
9
+ };
10
+
11
+ const handleEditorKeyDown = (event: React.KeyboardEvent<'div'>) => {
12
+ if (event.key !== 'Escape' || event.nativeEvent.isComposing) {
13
+ return;
14
+ }
15
+
16
+ event.preventDefault();
17
+ event.stopPropagation();
18
+ onCancel?.();
19
+ };
20
+
21
+ return {handleInputKeyDown, handleEditorKeyDown};
22
+ };
@@ -0,0 +1,25 @@
1
+ import {useLayoutEffect, useRef, useState} from 'react';
2
+
3
+ export const useLabelRef = (labelText: string) => {
4
+ const labelRef = useRef<HTMLLabelElement>(null);
5
+ const [labelWidth, setLabelWidth] = useState(0);
6
+
7
+ useLayoutEffect(() => {
8
+ const label = labelRef.current;
9
+
10
+ if (!label) return undefined;
11
+
12
+ const updateLabelWidth = () => setLabelWidth(label.offsetWidth);
13
+
14
+ updateLabelWidth();
15
+
16
+ if (typeof ResizeObserver === 'undefined') return undefined;
17
+
18
+ const observer = new ResizeObserver(updateLabelWidth);
19
+ observer.observe(label);
20
+
21
+ return () => observer.disconnect();
22
+ }, [labelText]);
23
+
24
+ return {labelRef, labelWidth};
25
+ };
@@ -0,0 +1,4 @@
1
+ import en from './en.json';
2
+ import ru from './ru.json';
3
+
4
+ export default {en, ru};
@@ -0,0 +1,10 @@
1
+ {
2
+ "field_link": "Link:",
3
+ "field_token": "Token:",
4
+ "field_name": "Name:",
5
+ "action_save": "Save",
6
+ "action_cancel": "Cancel",
7
+ "alert_value-must-be-string": "Value must be a string",
8
+ "alert_required-field": "Required field",
9
+ "alert_max-length": "Maximum length is {{maxLength}}"
10
+ }
@@ -0,0 +1,5 @@
1
+ import {addI18Keysets} from '../../../i18n';
2
+
3
+ import dicts from './dicts';
4
+
5
+ export default addI18Keysets('qp:attachment-list', dicts);
@@ -0,0 +1,10 @@
1
+ {
2
+ "field_link": "Ссылка:",
3
+ "field_token": "Токен:",
4
+ "field_name": "Имя:",
5
+ "action_save": "Сохранить",
6
+ "action_cancel": "Отменить",
7
+ "alert_value-must-be-string": "Значение должно быть строкой",
8
+ "alert_required-field": "Обязательное поле",
9
+ "alert_max-length": "Максимальная длина — {{maxLength}}"
10
+ }
@@ -0,0 +1,4 @@
1
+ export {AttachmentList} from './AttachmentList';
2
+ export type {AttachmentListProps} from './AttachmentList';
3
+ export * from './internal/EditAttachmentItem';
4
+ export * from './internal/AttachmentItem';
@@ -0,0 +1,23 @@
1
+ .qp-attachment-item {
2
+ &__info {
3
+ flex: 1;
4
+ min-width: 0;
5
+ }
6
+
7
+ &__actions {
8
+ flex-shrink: 0;
9
+ }
10
+
11
+ &__attachment-name {
12
+ flex: 1;
13
+ min-width: 0;
14
+ }
15
+
16
+ &_wasAdded {
17
+ background-color: var(--g-color-base-positive-light);
18
+ }
19
+
20
+ &_wasEdited {
21
+ background-color: var(--g-color-base-info-light);
22
+ }
23
+ }
@@ -0,0 +1,75 @@
1
+ import React, {useMemo, useState} from 'react';
2
+ import {Button, Flex, Icon, Text} from '@gravity-ui/uikit';
3
+ import {ArrowRotateLeft, Link, Pencil, TrashBin} from '@gravity-ui/icons';
4
+ import {getAttachmentIcon} from '../../helpers/getIconByAttachmentName';
5
+ import cn from 'bem-cn-lite';
6
+ import './AttachmentItem.scss';
7
+
8
+ export type AttachmentItemProps = {
9
+ attachment: {id: string; name: string; link?: string};
10
+ wasEdited?: boolean;
11
+ wasAdded?: boolean;
12
+ onEdit?: (attachment: AttachmentItemProps['attachment']) => void;
13
+ onDelete?: (attachment: AttachmentItemProps['attachment']) => void;
14
+ onRevert?: (attachment: AttachmentItemProps['attachment']) => void;
15
+ isDeleted?: boolean;
16
+ };
17
+
18
+ const block = cn('qp-attachment-item');
19
+
20
+ export const AttachmentItem = ({
21
+ attachment,
22
+ wasAdded,
23
+ wasEdited,
24
+ onEdit,
25
+ onDelete,
26
+ onRevert,
27
+ isDeleted,
28
+ }: AttachmentItemProps) => {
29
+ const [isHovered, setIsHovered] = useState(false);
30
+
31
+ const attachmentIcon = useMemo(() => {
32
+ if (typeof attachment.link === 'string') return Link;
33
+ return getAttachmentIcon(attachment.name);
34
+ }, [attachment.name, attachment.link]);
35
+
36
+ return (
37
+ <Flex
38
+ width="100%"
39
+ height="32px"
40
+ onMouseEnter={() => setIsHovered(true)}
41
+ onMouseLeave={() => setIsHovered(false)}
42
+ alignItems="center"
43
+ justifyContent="space-between"
44
+ spacing={{px: 4}}
45
+ className={block({wasEdited, wasAdded})}
46
+ >
47
+ <Flex gap={2} alignItems="center" className={block('info')}>
48
+ <Icon width={16} className={block('attachment-icon')} data={attachmentIcon} />
49
+ <Text variant="body-1" ellipsis className={block('attachment-name')}>
50
+ {attachment.name}
51
+ </Text>
52
+ </Flex>
53
+
54
+ {isHovered && !isDeleted && (
55
+ <Flex gap={1} className={block('actions')}>
56
+ <Button size="s" view="flat" onClick={() => onEdit?.(attachment)}>
57
+ <Icon data={Pencil} />
58
+ </Button>
59
+
60
+ <Button size="s" view="flat" onClick={() => onDelete?.(attachment)}>
61
+ <Icon data={TrashBin} />
62
+ </Button>
63
+ </Flex>
64
+ )}
65
+
66
+ {isHovered && isDeleted && (
67
+ <Flex gap={1} className={block('actions')}>
68
+ <Button size="s" view="flat" onClick={() => onRevert?.(attachment)}>
69
+ <Icon data={ArrowRotateLeft} />
70
+ </Button>
71
+ </Flex>
72
+ )}
73
+ </Flex>
74
+ );
75
+ };
@@ -0,0 +1,2 @@
1
+ export {AttachmentItem} from './AttachmentItem';
2
+ export type {AttachmentItemProps} from './AttachmentItem';
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import {FileEdit} from './FileEdit';
3
+ import {EditLinkItem} from './EditLinkItem';
4
+ import type {EditFileItemProps} from './FileEdit';
5
+ import type {EditLinkItemProps} from './EditLinkItem';
6
+
7
+ export type EditAttachmentItemProps =
8
+ | (EditFileItemProps & {
9
+ type: 'file';
10
+ })
11
+ | (EditLinkItemProps & {
12
+ type: 'link';
13
+ });
14
+
15
+ export const EditAttachmentItem = ({...props}: EditAttachmentItemProps) => {
16
+ if (props.type === 'file') {
17
+ return <FileEdit {...props} />;
18
+ }
19
+
20
+ return <EditLinkItem {...props} />;
21
+ };
@@ -0,0 +1,21 @@
1
+ .edit-link-item {
2
+ &__link-field-container {
3
+ padding: 1px;
4
+ }
5
+
6
+ &__link-field-label {
7
+ position: absolute;
8
+ z-index: 1;
9
+ inset-block-start: calc(var(--g-spacing-1) + 1px);
10
+ inset-inline-start: var(--g-spacing-2);
11
+ font-weight: 600;
12
+ }
13
+
14
+ .g-select {
15
+ padding: 1px;
16
+ }
17
+
18
+ .g-text-input {
19
+ padding: 1px;
20
+ }
21
+ }