@gravity-ui/querieskit 1.3.1 → 1.4.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 (126) hide show
  1. package/build/cjs/components/AttachmentList/AttachmentList.d.ts +2 -2
  2. package/build/cjs/components/AttachmentList/AttachmentList.js +9 -1
  3. package/build/cjs/components/AttachmentList/AttachmentList.js.map +1 -1
  4. package/build/cjs/components/AttachmentList/AttachmentList.stories.d.ts +36 -20
  5. package/build/cjs/components/AttachmentList/AttachmentList.stories.js +3 -0
  6. package/build/cjs/components/AttachmentList/AttachmentList.stories.js.map +1 -1
  7. package/build/cjs/components/AttachmentList/helpers/isInteractiveTarget.d.ts +2 -0
  8. package/build/cjs/components/AttachmentList/helpers/isInteractiveTarget.js +11 -0
  9. package/build/cjs/components/AttachmentList/helpers/isInteractiveTarget.js.map +1 -0
  10. package/build/cjs/components/LazyList/LazyList.js +12 -1
  11. package/build/cjs/components/LazyList/LazyList.js.map +1 -1
  12. package/build/cjs/components/RowLink/RowLink.d.ts +4 -4
  13. package/build/cjs/components/RowLink/RowLink.js +15 -4
  14. package/build/cjs/components/RowLink/RowLink.js.map +1 -1
  15. package/build/cjs/components/SearchRowLayout/SearchRowLayout.d.ts +2 -0
  16. package/build/cjs/components/SearchRowLayout/SearchRowLayout.js +2 -0
  17. package/build/cjs/components/SearchRowLayout/SearchRowLayout.js.map +1 -1
  18. package/build/cjs/helpers/getListKey.d.ts +1 -0
  19. package/build/cjs/helpers/getListKey.js +5 -4
  20. package/build/cjs/helpers/getListKey.js.map +1 -1
  21. package/build/cjs/helpers/useListKey.d.ts +2 -0
  22. package/build/cjs/helpers/useListKey.js +32 -0
  23. package/build/cjs/helpers/useListKey.js.map +1 -0
  24. package/build/cjs/helpers/useLoadMoreSentinel.d.ts +1 -1
  25. package/build/cjs/helpers/useLoadMoreSentinel.js +12 -3
  26. package/build/cjs/helpers/useLoadMoreSentinel.js.map +1 -1
  27. package/build/cjs/modules/Attachments/Attachments.css +4 -0
  28. package/build/cjs/modules/Attachments/Attachments.css.map +1 -1
  29. package/build/cjs/modules/Attachments/Attachments.d.ts +2 -1
  30. package/build/cjs/modules/Attachments/Attachments.js +8 -1
  31. package/build/cjs/modules/Attachments/Attachments.js.map +1 -1
  32. package/build/cjs/modules/Attachments/Attachments.stories.d.ts +2 -1
  33. package/build/cjs/modules/Attachments/Attachments.stories.js +7 -3
  34. package/build/cjs/modules/Attachments/Attachments.stories.js.map +1 -1
  35. package/build/cjs/modules/HistoryHeader/HistoryHeader.d.ts +1 -0
  36. package/build/cjs/modules/HistoryHeader/HistoryHeader.js +8 -6
  37. package/build/cjs/modules/HistoryHeader/HistoryHeader.js.map +1 -1
  38. package/build/cjs/modules/HistoryRow/HistoryRow.d.ts +1 -1
  39. package/build/cjs/modules/HistoryRow/HistoryRow.js +3 -1
  40. package/build/cjs/modules/HistoryRow/HistoryRow.js.map +1 -1
  41. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.d.ts +1 -1
  42. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.js +3 -1
  43. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.js.map +1 -1
  44. package/build/cjs/modules/QueriesList/QueriesList.d.ts +6 -2
  45. package/build/cjs/modules/QueriesList/QueriesList.js +14 -3
  46. package/build/cjs/modules/QueriesList/QueriesList.js.map +1 -1
  47. package/build/cjs/modules/RowsList/RowsList.d.ts +6 -2
  48. package/build/cjs/modules/RowsList/RowsList.js +13 -7
  49. package/build/cjs/modules/RowsList/RowsList.js.map +1 -1
  50. package/build/cjs/modules/RowsList/helpers/prepareRowData.d.ts +3 -2
  51. package/build/cjs/modules/RowsList/helpers/prepareRowData.js +4 -2
  52. package/build/cjs/modules/RowsList/helpers/prepareRowData.js.map +1 -1
  53. package/build/cjs/types/queryList.d.ts +4 -1
  54. package/build/cjs/types/queryList.js.map +1 -1
  55. package/build/cjs/widgets/QueriesHistory/QueriesHistory.d.ts +6 -2
  56. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js +9 -1
  57. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  58. package/build/cjs/widgets/QueriesHistory/QueriesHistory.stories.d.ts +5 -0
  59. package/build/cjs/widgets/QueriesHistory/QueriesHistory.stories.js +200 -6
  60. package/build/cjs/widgets/QueriesHistory/QueriesHistory.stories.js.map +1 -1
  61. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js +3 -1
  62. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  63. package/build/esm/components/AttachmentList/AttachmentList.d.ts +2 -2
  64. package/build/esm/components/AttachmentList/AttachmentList.js +9 -1
  65. package/build/esm/components/AttachmentList/AttachmentList.js.map +1 -1
  66. package/build/esm/components/AttachmentList/AttachmentList.stories.d.ts +36 -20
  67. package/build/esm/components/AttachmentList/AttachmentList.stories.js +3 -0
  68. package/build/esm/components/AttachmentList/AttachmentList.stories.js.map +1 -1
  69. package/build/esm/components/AttachmentList/helpers/isInteractiveTarget.d.ts +2 -0
  70. package/build/esm/components/AttachmentList/helpers/isInteractiveTarget.js +5 -0
  71. package/build/esm/components/AttachmentList/helpers/isInteractiveTarget.js.map +1 -0
  72. package/build/esm/components/LazyList/LazyList.js +13 -2
  73. package/build/esm/components/LazyList/LazyList.js.map +1 -1
  74. package/build/esm/components/RowLink/RowLink.d.ts +4 -4
  75. package/build/esm/components/RowLink/RowLink.js +15 -4
  76. package/build/esm/components/RowLink/RowLink.js.map +1 -1
  77. package/build/esm/components/SearchRowLayout/SearchRowLayout.d.ts +2 -0
  78. package/build/esm/components/SearchRowLayout/SearchRowLayout.js +2 -0
  79. package/build/esm/components/SearchRowLayout/SearchRowLayout.js.map +1 -1
  80. package/build/esm/helpers/getListKey.d.ts +1 -0
  81. package/build/esm/helpers/getListKey.js +4 -3
  82. package/build/esm/helpers/getListKey.js.map +1 -1
  83. package/build/esm/helpers/useListKey.d.ts +2 -0
  84. package/build/esm/helpers/useListKey.js +26 -0
  85. package/build/esm/helpers/useListKey.js.map +1 -0
  86. package/build/esm/helpers/useLoadMoreSentinel.d.ts +1 -1
  87. package/build/esm/helpers/useLoadMoreSentinel.js +12 -3
  88. package/build/esm/helpers/useLoadMoreSentinel.js.map +1 -1
  89. package/build/esm/modules/Attachments/Attachments.css +4 -0
  90. package/build/esm/modules/Attachments/Attachments.css.map +1 -1
  91. package/build/esm/modules/Attachments/Attachments.d.ts +2 -1
  92. package/build/esm/modules/Attachments/Attachments.js +8 -1
  93. package/build/esm/modules/Attachments/Attachments.js.map +1 -1
  94. package/build/esm/modules/Attachments/Attachments.scss +5 -0
  95. package/build/esm/modules/Attachments/Attachments.stories.d.ts +2 -1
  96. package/build/esm/modules/Attachments/Attachments.stories.js +7 -3
  97. package/build/esm/modules/Attachments/Attachments.stories.js.map +1 -1
  98. package/build/esm/modules/HistoryHeader/HistoryHeader.d.ts +1 -0
  99. package/build/esm/modules/HistoryHeader/HistoryHeader.js +8 -6
  100. package/build/esm/modules/HistoryHeader/HistoryHeader.js.map +1 -1
  101. package/build/esm/modules/HistoryRow/HistoryRow.d.ts +1 -1
  102. package/build/esm/modules/HistoryRow/HistoryRow.js +3 -1
  103. package/build/esm/modules/HistoryRow/HistoryRow.js.map +1 -1
  104. package/build/esm/modules/HistorySearchRow/HistorySearchRow.d.ts +1 -1
  105. package/build/esm/modules/HistorySearchRow/HistorySearchRow.js +3 -1
  106. package/build/esm/modules/HistorySearchRow/HistorySearchRow.js.map +1 -1
  107. package/build/esm/modules/QueriesList/QueriesList.d.ts +6 -2
  108. package/build/esm/modules/QueriesList/QueriesList.js +14 -3
  109. package/build/esm/modules/QueriesList/QueriesList.js.map +1 -1
  110. package/build/esm/modules/RowsList/RowsList.d.ts +6 -2
  111. package/build/esm/modules/RowsList/RowsList.js +13 -7
  112. package/build/esm/modules/RowsList/RowsList.js.map +1 -1
  113. package/build/esm/modules/RowsList/helpers/prepareRowData.d.ts +3 -2
  114. package/build/esm/modules/RowsList/helpers/prepareRowData.js +4 -2
  115. package/build/esm/modules/RowsList/helpers/prepareRowData.js.map +1 -1
  116. package/build/esm/types/queryList.d.ts +4 -1
  117. package/build/esm/types/queryList.js.map +1 -1
  118. package/build/esm/widgets/QueriesHistory/QueriesHistory.d.ts +6 -2
  119. package/build/esm/widgets/QueriesHistory/QueriesHistory.js +9 -1
  120. package/build/esm/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  121. package/build/esm/widgets/QueriesHistory/QueriesHistory.stories.d.ts +5 -0
  122. package/build/esm/widgets/QueriesHistory/QueriesHistory.stories.js +200 -6
  123. package/build/esm/widgets/QueriesHistory/QueriesHistory.stories.js.map +1 -1
  124. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js +3 -1
  125. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  126. package/package.json +1 -1
@@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
2
2
  import { ListProps } from '@gravity-ui/uikit';
3
3
  import { AttachmentItemProps } from './internal/AttachmentItem/AttachmentItem';
4
4
  import './AttachmentList.scss';
5
- export type AttachmentListProps = Omit<ListProps, 'items' | 'selectedItemIndex' | 'virtualized'> & {
5
+ export type AttachmentListProps<T extends AttachmentItemProps['attachment'] = AttachmentItemProps['attachment']> = Omit<ListProps<T>, 'items' | 'selectedItemIndex' | 'virtualized'> & {
6
6
  attachments: AttachmentItemProps['attachment'][];
7
7
  className?: string;
8
8
  onDelete?: (attachment: AttachmentItemProps['attachment']) => void;
@@ -14,4 +14,4 @@ export type AttachmentListProps = Omit<ListProps, 'items' | 'selectedItemIndex'
14
14
  editingIds?: string[];
15
15
  isDeleted?: boolean;
16
16
  };
17
- export declare const AttachmentList: ({ attachments, onEdit, onDelete, onRevert, wasAddedIds, wasEditedIds, editingIds, renderEditForm, className, isDeleted, ...listProps }: AttachmentListProps) => React.JSX.Element;
17
+ export declare const AttachmentList: ({ attachments, onEdit, onDelete, onRevert, wasAddedIds, wasEditedIds, editingIds, renderEditForm, className, isDeleted, onItemClick, ...listProps }: AttachmentListProps) => React.JSX.Element;
@@ -21,11 +21,12 @@ require("core-js/modules/web.dom-collections.iterator.js");
21
21
  var _react = _interopRequireWildcard(require("react"));
22
22
  var _uikit = require("@gravity-ui/uikit");
23
23
  var _AttachmentItem = require("./internal/AttachmentItem/AttachmentItem");
24
+ var _isInteractiveTarget = require("./helpers/isInteractiveTarget");
24
25
  require("./AttachmentList.css");
25
26
  var _jsxRuntime = require("react/jsx-runtime");
26
27
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
27
28
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
28
- var _excluded = ["attachments", "onEdit", "onDelete", "onRevert", "wasAddedIds", "wasEditedIds", "editingIds", "renderEditForm", "className", "isDeleted"];
29
+ var _excluded = ["attachments", "onEdit", "onDelete", "onRevert", "wasAddedIds", "wasEditedIds", "editingIds", "renderEditForm", "className", "isDeleted", "onItemClick"];
29
30
  var AttachmentList = exports.AttachmentList = function AttachmentList(_ref) {
30
31
  var attachments = _ref.attachments,
31
32
  onEdit = _ref.onEdit,
@@ -37,6 +38,7 @@ var AttachmentList = exports.AttachmentList = function AttachmentList(_ref) {
37
38
  renderEditForm = _ref.renderEditForm,
38
39
  className = _ref.className,
39
40
  isDeleted = _ref.isDeleted,
41
+ onItemClick = _ref.onItemClick,
40
42
  listProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
41
43
  var addedIdsSet = (0, _react.useMemo)(function () {
42
44
  return new Set(wasAddedIds);
@@ -47,6 +49,11 @@ var AttachmentList = exports.AttachmentList = function AttachmentList(_ref) {
47
49
  var editingIdsSet = (0, _react.useMemo)(function () {
48
50
  return new Set(editingIds);
49
51
  }, [editingIds]);
52
+ var handleItemClick = function handleItemClick(item, index, fromKeyboard, event) {
53
+ if (editingIdsSet.has(item.id)) return;
54
+ if ((0, _isInteractiveTarget.isInteractiveTarget)(event === null || event === void 0 ? void 0 : event.target)) return;
55
+ onItemClick === null || onItemClick === void 0 || onItemClick(item, index, fromKeyboard, event);
56
+ };
50
57
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_uikit.Flex, {
51
58
  className: className,
52
59
  width: "100%",
@@ -55,6 +62,7 @@ var AttachmentList = exports.AttachmentList = function AttachmentList(_ref) {
55
62
  filterable: false,
56
63
  virtualized: false,
57
64
  items: attachments,
65
+ onItemClick: handleItemClick,
58
66
  renderItem: function renderItem(attachment) {
59
67
  if (editingIdsSet.has(attachment.id)) {
60
68
  return renderEditForm === null || renderEditForm === void 0 ? void 0 : renderEditForm(attachment);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_AttachmentItem","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","AttachmentList","exports","_ref","attachments","onEdit","onDelete","onRevert","wasAddedIds","wasEditedIds","editingIds","renderEditForm","className","isDeleted","listProps","_objectWithoutProperties","_excluded","addedIdsSet","useMemo","Set","editedIdsSet","editingIdsSet","_jsx","Flex","width","height","children","List","_objectSpread","filterable","virtualized","items","renderItem","attachment","id","AttachmentItem","wasAdded","wasEdited"],"sources":["AttachmentList.tsx"],"sourcesContent":["import React, {ReactNode, useMemo} from 'react';\nimport {Flex, List, ListProps} from '@gravity-ui/uikit';\nimport {AttachmentItem, AttachmentItemProps} from './internal/AttachmentItem/AttachmentItem';\nimport './AttachmentList.scss';\n\nexport type AttachmentListProps = Omit<ListProps, 'items' | 'selectedItemIndex' | 'virtualized'> & {\n attachments: AttachmentItemProps['attachment'][];\n className?: string;\n onDelete?: (attachment: AttachmentItemProps['attachment']) => void;\n onEdit?: (attachment: AttachmentItemProps['attachment']) => void;\n onRevert?: (attachment: AttachmentItemProps['attachment']) => void;\n\n renderEditForm?: (attachment: AttachmentItemProps['attachment']) => ReactNode;\n\n wasAddedIds?: string[];\n wasEditedIds?: string[];\n\n editingIds?: string[];\n\n isDeleted?: boolean;\n};\n\nexport const AttachmentList = ({\n attachments,\n onEdit,\n onDelete,\n onRevert,\n wasAddedIds,\n wasEditedIds,\n editingIds,\n renderEditForm,\n className,\n isDeleted,\n ...listProps\n}: AttachmentListProps) => {\n const addedIdsSet = useMemo(() => new Set(wasAddedIds), [wasAddedIds]);\n const editedIdsSet = useMemo(() => new Set(wasEditedIds), [wasEditedIds]);\n const editingIdsSet = useMemo(() => new Set(editingIds), [editingIds]);\n\n return (\n <Flex className={className} width=\"100%\" height=\"100%\">\n <List<AttachmentListProps['attachments'][number]>\n filterable={false}\n virtualized={false}\n items={attachments}\n renderItem={(attachment) => {\n if (editingIdsSet.has(attachment.id)) {\n return renderEditForm?.(attachment);\n }\n\n return (\n <AttachmentItem\n attachment={attachment}\n wasAdded={addedIdsSet.has(attachment.id)}\n wasEdited={editedIdsSet.has(attachment.id)}\n onEdit={onEdit}\n onRevert={onRevert}\n onDelete={onDelete}\n isDeleted={isDeleted}\n />\n );\n }}\n {...listProps}\n />\n </Flex>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_AttachmentItem","_isInteractiveTarget","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","AttachmentList","exports","_ref","attachments","onEdit","onDelete","onRevert","wasAddedIds","wasEditedIds","editingIds","renderEditForm","className","isDeleted","onItemClick","listProps","_objectWithoutProperties","_excluded","addedIdsSet","useMemo","Set","editedIdsSet","editingIdsSet","handleItemClick","item","index","fromKeyboard","event","id","isInteractiveTarget","target","_jsx","Flex","width","height","children","List","_objectSpread","filterable","virtualized","items","renderItem","attachment","AttachmentItem","wasAdded","wasEdited"],"sources":["AttachmentList.tsx"],"sourcesContent":["import React, {ReactNode, useMemo} from 'react';\nimport {Flex, List, ListProps} from '@gravity-ui/uikit';\nimport {AttachmentItem, AttachmentItemProps} from './internal/AttachmentItem/AttachmentItem';\nimport {isInteractiveTarget} from './helpers/isInteractiveTarget';\nimport './AttachmentList.scss';\n\nexport type AttachmentListProps<\n T extends AttachmentItemProps['attachment'] = AttachmentItemProps['attachment'],\n> = Omit<ListProps<T>, 'items' | 'selectedItemIndex' | 'virtualized'> & {\n attachments: AttachmentItemProps['attachment'][];\n className?: string;\n onDelete?: (attachment: AttachmentItemProps['attachment']) => void;\n onEdit?: (attachment: AttachmentItemProps['attachment']) => void;\n onRevert?: (attachment: AttachmentItemProps['attachment']) => void;\n\n renderEditForm?: (attachment: AttachmentItemProps['attachment']) => ReactNode;\n\n wasAddedIds?: string[];\n wasEditedIds?: string[];\n\n editingIds?: string[];\n\n isDeleted?: boolean;\n};\n\nexport const AttachmentList = ({\n attachments,\n onEdit,\n onDelete,\n onRevert,\n wasAddedIds,\n wasEditedIds,\n editingIds,\n renderEditForm,\n className,\n isDeleted,\n onItemClick,\n ...listProps\n}: AttachmentListProps) => {\n const addedIdsSet = useMemo(() => new Set(wasAddedIds), [wasAddedIds]);\n const editedIdsSet = useMemo(() => new Set(wasEditedIds), [wasEditedIds]);\n const editingIdsSet = useMemo(() => new Set(editingIds), [editingIds]);\n\n const handleItemClick: AttachmentListProps['onItemClick'] = (\n item,\n index,\n fromKeyboard,\n event,\n ) => {\n if (editingIdsSet.has(item.id)) return;\n if (isInteractiveTarget(event?.target)) return;\n onItemClick?.(item, index, fromKeyboard, event);\n };\n\n return (\n <Flex className={className} width=\"100%\" height=\"100%\">\n <List<AttachmentListProps['attachments'][number]>\n filterable={false}\n virtualized={false}\n items={attachments}\n onItemClick={handleItemClick}\n renderItem={(attachment) => {\n if (editingIdsSet.has(attachment.id)) {\n return renderEditForm?.(attachment);\n }\n\n return (\n <AttachmentItem\n attachment={attachment}\n wasAdded={addedIdsSet.has(attachment.id)}\n wasEdited={editedIdsSet.has(attachment.id)}\n onEdit={onEdit}\n onRevert={onRevert}\n onDelete={onDelete}\n isDeleted={isDeleted}\n />\n );\n }}\n {...listProps}\n />\n </Flex>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import type { StoryObj } from '@storybook/react';
3
3
  import { type AttachmentListProps } from './AttachmentList';
4
4
  declare const meta: {
5
5
  title: string;
6
- component: ({ attachments, onEdit, onDelete, onRevert, wasAddedIds, wasEditedIds, editingIds, renderEditForm, className, isDeleted, ...listProps }: AttachmentListProps) => React.JSX.Element;
6
+ component: ({ attachments, onEdit, onDelete, onRevert, wasAddedIds, wasEditedIds, editingIds, renderEditForm, className, isDeleted, onItemClick, ...listProps }: AttachmentListProps) => React.JSX.Element;
7
7
  tags: string[];
8
8
  parameters: {
9
9
  layout: string;
@@ -18,16 +18,22 @@ declare const meta: {
18
18
  loading?: boolean | undefined;
19
19
  size?: import("@gravity-ui/uikit").TextInputSize | undefined;
20
20
  sortable?: boolean | undefined;
21
- itemHeight?: number | ((item: {
22
- disabled?: boolean;
23
- }, itemIndex: number) => number) | undefined;
24
- renderItem?: ((item: {
25
- disabled?: boolean;
26
- }, isItemActive: boolean, itemIndex: number) => React.ReactNode) | undefined;
21
+ itemHeight?: number | ((item: import("@gravity-ui/uikit").ListItemData<{
22
+ id: string;
23
+ name: string;
24
+ link?: string;
25
+ }>, itemIndex: number) => number) | undefined;
26
+ renderItem?: ((item: import("@gravity-ui/uikit").ListItemData<{
27
+ id: string;
28
+ name: string;
29
+ link?: string;
30
+ }>, isItemActive: boolean, itemIndex: number) => React.ReactNode) | undefined;
27
31
  onLoadMore?: (() => void) | undefined;
28
- onItemClick?: ((item: {
29
- disabled?: boolean;
30
- }, index: number, fromKeyboard?: boolean, event?: React.MouseEvent<HTMLDivElement, MouseEvent> | React.KeyboardEvent<HTMLElement>) => void) | undefined;
32
+ onItemClick?: ((item: import("@gravity-ui/uikit").ListItemData<{
33
+ id: string;
34
+ name: string;
35
+ link?: string;
36
+ }>, index: number, fromKeyboard?: boolean, event?: React.MouseEvent<HTMLDivElement, MouseEvent> | React.KeyboardEvent<HTMLElement>) => void) | undefined;
31
37
  filterable?: boolean | undefined;
32
38
  itemClassName?: string | undefined;
33
39
  itemsClassName?: string | undefined;
@@ -35,20 +41,30 @@ declare const meta: {
35
41
  emptyPlaceholder?: React.ReactNode;
36
42
  filterPlaceholder?: string | undefined;
37
43
  activeItemIndex?: number | undefined;
38
- itemKey?: ((item: {
39
- disabled?: boolean;
40
- }) => string) | undefined;
41
- itemsHeight?: number | ((items: unknown[]) => number) | undefined;
44
+ itemKey?: ((item: import("@gravity-ui/uikit").ListItemData<{
45
+ id: string;
46
+ name: string;
47
+ link?: string;
48
+ }>) => string) | undefined;
49
+ itemsHeight?: number | ((items: {
50
+ id: string;
51
+ name: string;
52
+ link?: string;
53
+ }[]) => number) | undefined;
42
54
  deactivateOnLeave?: boolean | undefined;
43
55
  sortHandleAlign?: import("@gravity-ui/uikit").ListSortHandleAlign | undefined;
44
- filterItem?: ((filter: string) => (item: {
45
- disabled?: boolean;
46
- }) => boolean) | undefined;
56
+ filterItem?: ((filter: string) => (item: import("@gravity-ui/uikit").ListItemData<{
57
+ id: string;
58
+ name: string;
59
+ link?: string;
60
+ }>) => boolean) | undefined;
47
61
  onFilterUpdate?: ((filter: string) => void) | undefined;
48
62
  onFilterEnd?: (({ items }: {
49
- items: {
50
- disabled?: boolean;
51
- }[];
63
+ items: import("@gravity-ui/uikit").ListItemData<{
64
+ id: string;
65
+ name: string;
66
+ link?: string;
67
+ }>[];
52
68
  }) => void) | undefined;
53
69
  onSortEnd?: ((params: import("@gravity-ui/uikit").ListSortParams) => void) | undefined;
54
70
  onChangeActive?: ((index?: number) => void) | undefined;
@@ -135,6 +135,7 @@ var InteractiveAttachmentList = function InteractiveAttachmentList(props) {
135
135
  });
136
136
  });
137
137
  },
138
+ onItemClick: console.info,
138
139
  onEdit: function onEdit(attachment) {
139
140
  var _props$onEdit;
140
141
  (_props$onEdit = props.onEdit) === null || _props$onEdit === void 0 || _props$onEdit.call(props, attachment);
@@ -216,6 +217,7 @@ var EditableAttachmentList = function EditableAttachmentList(props) {
216
217
  }));
217
218
  }
218
219
  },
220
+ onItemClick: console.info,
219
221
  renderEditForm: function renderEditForm(attachment) {
220
222
  var isLink = typeof attachment.link === 'string';
221
223
  if (isLink) {
@@ -268,6 +270,7 @@ var SortableAttachmentList = function SortableAttachmentList(props) {
268
270
  setOrderedAttachments = _useState12[1];
269
271
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AttachmentList.AttachmentList, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
270
272
  attachments: orderedAttachments,
273
+ onItemClick: console.info,
271
274
  onSortEnd: function onSortEnd(_ref) {
272
275
  var _props$onSortEnd;
273
276
  var oldIndex = _ref.oldIndex,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_EditAttachmentItem","_test","_AttachmentList","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","attachments","id","name","link","meta","title","component","AttachmentList","tags","parameters","layout","decorators","Story","_jsx","style","width","height","children","args","onDelete","fn","onEdit","_default","exports","Default","ChangeStates","wasAddedIds","wasEditedIds","Filterable","filterable","filterPlaceholder","filterItem","filter","attachment","toLocaleLowerCase","includes","InteractiveAttachmentList","props","_useState","useState","_useState2","_slicedToArray","currentAttachments","setCurrentAttachments","_useState3","_useState4","editedIds","setEditedIds","_objectSpread","_props$onDelete","current","item","_props$onEdit","concat","_toConsumableArray","InteractiveActions","render","EditableAttachmentList","_useState5","_useState6","_useState7","_useState8","editingId","setEditingId","_useState9","_useState0","draftName","setDraftName","_useState1","token","_useState10","draftLink","setDraftLink","handleAcceptDraft","prevState","map","attach","undefined","editingIds","list","l","_props$onEdit2","renderEditForm","isLink","EditAttachmentItem","onCancel","onAccept","values","onChange","tokens","value","type","fileName","onChangeFileName","CustomEditForm","SortableAttachmentList","_useState11","_useState12","orderedAttachments","setOrderedAttachments","onSortEnd","_ref","_props$onSortEnd","oldIndex","newIndex","next","_next$splice","splice","_next$splice2","movedAttachment","Sortable","sortable","sortHandleAlign","Empty","emptyPlaceholder","Text","color","Loading","loading"],"sources":["AttachmentList.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Text} from '@gravity-ui/uikit';\nimport {EditAttachmentItem, EditLinkValues} from './internal/EditAttachmentItem';\nimport {fn} from 'storybook/test';\n\nimport {AttachmentList, type AttachmentListProps} from './AttachmentList';\n\nconst attachments: AttachmentListProps['attachments'] = [\n {id: 'readme', name: 'README'},\n {id: 'javascript', name: 'index.js'},\n {id: 'python', name: 'main.py'},\n {id: 'csv', name: 'sales.csv'},\n {id: 'link-image', name: 'https://home/tutorial', link: 'https://home/tutorial'},\n {id: 'excel', name: 'forecast.xlsx'},\n {id: 'cpp', name: 'processor.cpp'},\n {id: 'ql', name: 'analytics.ql'},\n {id: 'yql', name: 'events.yql'},\n {id: 'sql', name: 'report.sql'},\n {id: 'link', name: 'link to file.cpp', link: 'link/to/file.cpp'},\n];\n\nconst meta = {\n title: 'Components/AttachmentList',\n component: AttachmentList,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n decorators: [\n (Story) => (\n <div style={{width: 360, height: 360}}>\n <Story />\n </div>\n ),\n ],\n args: {\n attachments,\n onDelete: fn(),\n onEdit: fn(),\n },\n} satisfies Meta<typeof AttachmentList>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n/** Attachments with supported extensions use their corresponding icons. Row actions appear on hover. */\nexport const Default: Story = {};\n\n/** `wasAddedIds` and `wasEditedIds` highlight attachments with their current change state. */\nexport const ChangeStates: Story = {\n args: {\n wasAddedIds: ['javascript', 'csv'],\n wasEditedIds: ['python', 'sql'],\n },\n};\n\n/** The inherited List filtering API can be enabled when a consumer needs local attachment search. */\nexport const Filterable: Story = {\n args: {\n filterable: true,\n filterPlaceholder: 'Filter by attachment name',\n filterItem: (filter) => (attachment) =>\n (attachment as AttachmentListProps['attachments'][number]).name\n .toLocaleLowerCase()\n .includes(filter.toLocaleLowerCase()),\n },\n};\n\nconst InteractiveAttachmentList = (props: AttachmentListProps) => {\n const [currentAttachments, setCurrentAttachments] = useState(props.attachments);\n const [editedIds, setEditedIds] = useState<string[]>([]);\n\n return (\n <AttachmentList\n {...props}\n attachments={currentAttachments}\n wasEditedIds={editedIds}\n onDelete={(attachment) => {\n props.onDelete?.(attachment);\n setCurrentAttachments((current) =>\n current.filter((item) => item.id !== attachment.id),\n );\n setEditedIds((current) => current.filter((id) => id !== attachment.id));\n }}\n onEdit={(attachment) => {\n props.onEdit?.(attachment);\n setEditedIds((current) =>\n current.includes(attachment.id)\n ? current.filter((id) => id !== attachment.id)\n : [...current, attachment.id],\n );\n }}\n />\n );\n};\n\n/** Hover a row: edit toggles its edited state and delete removes it from the list. */\nexport const InteractiveActions: Story = {\n render: (args) => <InteractiveAttachmentList {...args} />,\n};\n\nconst EditableAttachmentList = (props: AttachmentListProps) => {\n const [currentAttachments, setCurrentAttachments] = useState(props.attachments);\n const [editingId, setEditingId] = useState<string>();\n const [draftName, setDraftName] = useState('');\n const [draftLink, setDraftLink] = useState<EditLinkValues>({\n link: '',\n token: '',\n name: '',\n });\n\n const handleAcceptDraft = () => {\n setCurrentAttachments((prevState) => {\n return prevState.map((attach) => {\n if (attach.id === editingId && attach.link === undefined) {\n return {\n ...attach,\n name: draftName,\n };\n }\n if (attach.id === editingId && typeof attach.link === 'string') {\n return {\n ...attach,\n name: draftLink.name,\n link: draftLink.link,\n };\n }\n return attach;\n });\n });\n setDraftName('');\n setEditingId('');\n };\n\n return (\n <AttachmentList\n {...props}\n attachments={currentAttachments}\n editingIds={editingId ? [editingId] : []}\n onDelete={(attach) =>\n setCurrentAttachments((list) => list.filter((l) => l.id !== attach.id))\n }\n onEdit={(attachment) => {\n props.onEdit?.(attachment);\n setEditingId(attachment.id);\n setDraftName(attachment.name);\n if (typeof attachment.link === 'string') {\n setDraftLink({...draftLink, name: attachment.name, link: attachment.link});\n }\n }}\n renderEditForm={(attachment) => {\n const isLink = typeof attachment.link === 'string';\n\n if (isLink) {\n return (\n <EditAttachmentItem\n onCancel={() => setEditingId('')}\n onAccept={handleAcceptDraft}\n values={draftLink}\n onChange={setDraftLink}\n tokens={[\n {value: 'default_database_logs', title: 'default_database_logs'},\n {value: 'default_yt', title: 'default_yt'},\n {value: 'default_yql', title: 'default_yql'},\n {\n value: 'default_long_token_title',\n title: 'default_long_token_title',\n },\n ]}\n type={'link'}\n />\n );\n }\n\n return (\n <EditAttachmentItem\n fileName={draftName}\n onChangeFileName={setDraftName}\n onCancel={() => setEditingId('')}\n onAccept={handleAcceptDraft}\n type={'file'}\n />\n );\n }}\n />\n );\n};\n\n/** Hover a row and click edit to replace it with a consumer-provided rename form. */\nexport const CustomEditForm: Story = {\n render: (args) => <EditableAttachmentList {...args} />,\n};\n\nconst SortableAttachmentList = (props: AttachmentListProps) => {\n const [orderedAttachments, setOrderedAttachments] = useState(props.attachments);\n\n return (\n <AttachmentList\n {...props}\n attachments={orderedAttachments}\n onSortEnd={({oldIndex, newIndex}) => {\n props.onSortEnd?.({oldIndex, newIndex});\n setOrderedAttachments((current) => {\n const next = [...current];\n const [movedAttachment] = next.splice(oldIndex, 1);\n\n if (movedAttachment) {\n next.splice(newIndex, 0, movedAttachment);\n }\n\n return next;\n });\n }}\n />\n );\n};\n\n/** Drag attachments by the handle to reorder them using the inherited List sorting API. */\nexport const Sortable: Story = {\n args: {\n sortable: true,\n sortHandleAlign: 'left',\n onSortEnd: fn(),\n },\n render: (args) => <SortableAttachmentList {...args} />,\n};\n\n/** Consumer-provided content is displayed when the attachment array is empty. */\nexport const Empty: Story = {\n args: {\n attachments: [],\n emptyPlaceholder: <Text color=\"secondary\">No attachments yet</Text>,\n },\n};\n\n/** The inherited loading state can be used while the attachment collection is being fetched. */\nexport const Loading: Story = {\n args: {\n attachments: [],\n loading: true,\n },\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_EditAttachmentItem","_test","_AttachmentList","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_interopRequireDefault","attachments","id","name","link","meta","title","component","AttachmentList","tags","parameters","layout","decorators","Story","_jsx","style","width","height","children","args","onDelete","fn","onEdit","_default","exports","Default","ChangeStates","wasAddedIds","wasEditedIds","Filterable","filterable","filterPlaceholder","filterItem","filter","attachment","toLocaleLowerCase","includes","InteractiveAttachmentList","props","_useState","useState","_useState2","_slicedToArray","currentAttachments","setCurrentAttachments","_useState3","_useState4","editedIds","setEditedIds","_objectSpread","_props$onDelete","current","item","onItemClick","console","info","_props$onEdit","concat","_toConsumableArray","InteractiveActions","render","EditableAttachmentList","_useState5","_useState6","_useState7","_useState8","editingId","setEditingId","_useState9","_useState0","draftName","setDraftName","_useState1","token","_useState10","draftLink","setDraftLink","handleAcceptDraft","prevState","map","attach","undefined","editingIds","list","l","_props$onEdit2","renderEditForm","isLink","EditAttachmentItem","onCancel","onAccept","values","onChange","tokens","value","type","fileName","onChangeFileName","CustomEditForm","SortableAttachmentList","_useState11","_useState12","orderedAttachments","setOrderedAttachments","onSortEnd","_ref","_props$onSortEnd","oldIndex","newIndex","next","_next$splice","splice","_next$splice2","movedAttachment","Sortable","sortable","sortHandleAlign","Empty","emptyPlaceholder","Text","color","Loading","loading"],"sources":["AttachmentList.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Text} from '@gravity-ui/uikit';\nimport {EditAttachmentItem, EditLinkValues} from './internal/EditAttachmentItem';\nimport {fn} from 'storybook/test';\n\nimport {AttachmentList, type AttachmentListProps} from './AttachmentList';\n\nconst attachments: AttachmentListProps['attachments'] = [\n {id: 'readme', name: 'README'},\n {id: 'javascript', name: 'index.js'},\n {id: 'python', name: 'main.py'},\n {id: 'csv', name: 'sales.csv'},\n {id: 'link-image', name: 'https://home/tutorial', link: 'https://home/tutorial'},\n {id: 'excel', name: 'forecast.xlsx'},\n {id: 'cpp', name: 'processor.cpp'},\n {id: 'ql', name: 'analytics.ql'},\n {id: 'yql', name: 'events.yql'},\n {id: 'sql', name: 'report.sql'},\n {id: 'link', name: 'link to file.cpp', link: 'link/to/file.cpp'},\n];\n\nconst meta = {\n title: 'Components/AttachmentList',\n component: AttachmentList,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n decorators: [\n (Story) => (\n <div style={{width: 360, height: 360}}>\n <Story />\n </div>\n ),\n ],\n args: {\n attachments,\n onDelete: fn(),\n onEdit: fn(),\n },\n} satisfies Meta<typeof AttachmentList>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n/** Attachments with supported extensions use their corresponding icons. Row actions appear on hover. */\nexport const Default: Story = {};\n\n/** `wasAddedIds` and `wasEditedIds` highlight attachments with their current change state. */\nexport const ChangeStates: Story = {\n args: {\n wasAddedIds: ['javascript', 'csv'],\n wasEditedIds: ['python', 'sql'],\n },\n};\n\n/** The inherited List filtering API can be enabled when a consumer needs local attachment search. */\nexport const Filterable: Story = {\n args: {\n filterable: true,\n filterPlaceholder: 'Filter by attachment name',\n filterItem: (filter) => (attachment) =>\n (attachment as AttachmentListProps['attachments'][number]).name\n .toLocaleLowerCase()\n .includes(filter.toLocaleLowerCase()),\n },\n};\n\nconst InteractiveAttachmentList = (props: AttachmentListProps) => {\n const [currentAttachments, setCurrentAttachments] = useState(props.attachments);\n const [editedIds, setEditedIds] = useState<string[]>([]);\n\n return (\n <AttachmentList\n {...props}\n attachments={currentAttachments}\n wasEditedIds={editedIds}\n onDelete={(attachment) => {\n props.onDelete?.(attachment);\n setCurrentAttachments((current) =>\n current.filter((item) => item.id !== attachment.id),\n );\n setEditedIds((current) => current.filter((id) => id !== attachment.id));\n }}\n onItemClick={console.info}\n onEdit={(attachment) => {\n props.onEdit?.(attachment);\n setEditedIds((current) =>\n current.includes(attachment.id)\n ? current.filter((id) => id !== attachment.id)\n : [...current, attachment.id],\n );\n }}\n />\n );\n};\n\n/** Hover a row: edit toggles its edited state and delete removes it from the list. */\nexport const InteractiveActions: Story = {\n render: (args) => <InteractiveAttachmentList {...args} />,\n};\n\nconst EditableAttachmentList = (props: AttachmentListProps) => {\n const [currentAttachments, setCurrentAttachments] = useState(props.attachments);\n const [editingId, setEditingId] = useState<string>();\n const [draftName, setDraftName] = useState('');\n const [draftLink, setDraftLink] = useState<EditLinkValues>({\n link: '',\n token: '',\n name: '',\n });\n\n const handleAcceptDraft = () => {\n setCurrentAttachments((prevState) => {\n return prevState.map((attach) => {\n if (attach.id === editingId && attach.link === undefined) {\n return {\n ...attach,\n name: draftName,\n };\n }\n if (attach.id === editingId && typeof attach.link === 'string') {\n return {\n ...attach,\n name: draftLink.name,\n link: draftLink.link,\n };\n }\n return attach;\n });\n });\n setDraftName('');\n setEditingId('');\n };\n\n return (\n <AttachmentList\n {...props}\n attachments={currentAttachments}\n editingIds={editingId ? [editingId] : []}\n onDelete={(attach) =>\n setCurrentAttachments((list) => list.filter((l) => l.id !== attach.id))\n }\n onEdit={(attachment) => {\n props.onEdit?.(attachment);\n setEditingId(attachment.id);\n setDraftName(attachment.name);\n if (typeof attachment.link === 'string') {\n setDraftLink({...draftLink, name: attachment.name, link: attachment.link});\n }\n }}\n onItemClick={console.info}\n renderEditForm={(attachment) => {\n const isLink = typeof attachment.link === 'string';\n\n if (isLink) {\n return (\n <EditAttachmentItem\n onCancel={() => setEditingId('')}\n onAccept={handleAcceptDraft}\n values={draftLink}\n onChange={setDraftLink}\n tokens={[\n {value: 'default_database_logs', title: 'default_database_logs'},\n {value: 'default_yt', title: 'default_yt'},\n {value: 'default_yql', title: 'default_yql'},\n {\n value: 'default_long_token_title',\n title: 'default_long_token_title',\n },\n ]}\n type={'link'}\n />\n );\n }\n\n return (\n <EditAttachmentItem\n fileName={draftName}\n onChangeFileName={setDraftName}\n onCancel={() => setEditingId('')}\n onAccept={handleAcceptDraft}\n type={'file'}\n />\n );\n }}\n />\n );\n};\n\n/** Hover a row and click edit to replace it with a consumer-provided rename form. */\nexport const CustomEditForm: Story = {\n render: (args) => <EditableAttachmentList {...args} />,\n};\n\nconst SortableAttachmentList = (props: AttachmentListProps) => {\n const [orderedAttachments, setOrderedAttachments] = useState(props.attachments);\n\n return (\n <AttachmentList\n {...props}\n attachments={orderedAttachments}\n onItemClick={console.info}\n onSortEnd={({oldIndex, newIndex}) => {\n props.onSortEnd?.({oldIndex, newIndex});\n setOrderedAttachments((current) => {\n const next = [...current];\n const [movedAttachment] = next.splice(oldIndex, 1);\n\n if (movedAttachment) {\n next.splice(newIndex, 0, movedAttachment);\n }\n\n return next;\n });\n }}\n />\n );\n};\n\n/** Drag attachments by the handle to reorder them using the inherited List sorting API. */\nexport const Sortable: Story = {\n args: {\n sortable: true,\n sortHandleAlign: 'left',\n onSortEnd: fn(),\n },\n render: (args) => <SortableAttachmentList {...args} />,\n};\n\n/** Consumer-provided content is displayed when the attachment array is empty. */\nexport const Empty: Story = {\n args: {\n attachments: [],\n emptyPlaceholder: <Text color=\"secondary\">No attachments yet</Text>,\n },\n};\n\n/** The inherited loading state can be used while the attachment collection is being fetched. */\nexport const Loading: Story = {\n args: {\n attachments: [],\n loading: true,\n },\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare const INTERACITVE_SELECTOR = "a, button, input, select, textarea, label, [role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [contenteditable=\"true\"], [tabindex]:not([tabindex=\"-1\"])";
2
+ export declare const isInteractiveTarget: (target: EventTarget | null | undefined) => boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isInteractiveTarget = exports.INTERACITVE_SELECTOR = void 0;
7
+ var INTERACITVE_SELECTOR = exports.INTERACITVE_SELECTOR = 'a, button, input, select, textarea, label, [role="button"], [role="link"], [role="menuitem"], [contenteditable="true"], [tabindex]:not([tabindex="-1"])';
8
+ var isInteractiveTarget = exports.isInteractiveTarget = function isInteractiveTarget(target) {
9
+ return target instanceof Element && Boolean(target.closest(INTERACITVE_SELECTOR));
10
+ };
11
+ // #sourceMappingURL=isInteractiveTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["INTERACITVE_SELECTOR","exports","isInteractiveTarget","target","Element","Boolean","closest"],"sources":["isInteractiveTarget.ts"],"sourcesContent":["export const INTERACITVE_SELECTOR =\n 'a, button, input, select, textarea, label, [role=\"button\"], [role=\"link\"], [role=\"menuitem\"], [contenteditable=\"true\"], [tabindex]:not([tabindex=\"-1\"])';\n\nexport const isInteractiveTarget = (target: EventTarget | null | undefined) => {\n return target instanceof Element && Boolean(target.closest(INTERACITVE_SELECTOR));\n};\n"],"mappings":";;;;;;AAAO,IAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAC7B,yJAAyJ;AAEtJ,IAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,SAAtBA,mBAAmBA,CAAIC,MAAsC,EAAK;EAC3E,OAAOA,MAAM,YAAYC,OAAO,IAAIC,OAAO,CAACF,MAAM,CAACG,OAAO,CAACN,oBAAoB,CAAC,CAAC;AACrF,CAAC","ignoreList":[]}
@@ -40,7 +40,9 @@ var LazyList = exports.LazyList = function LazyList(_ref) {
40
40
  emptyContent = _ref.emptyContent,
41
41
  isEmpty = _ref.isEmpty,
42
42
  className = _ref.className;
43
- var sentinelRef = (0, _useLoadMoreSentinel.useLoadMoreSentinel)(hasMore, onLoadMore);
43
+ var listRef = (0, _react.useRef)(null);
44
+ var previousItemsLengthRef = (0, _react.useRef)(items.length);
45
+ var sentinelRef = (0, _useLoadMoreSentinel.useLoadMoreSentinel)(hasMore, onLoadMore, loading, items.length);
44
46
  var rows = (0, _react.useMemo)(function () {
45
47
  return hasMore ? [].concat((0, _toConsumableArray2.default)(items), [{
46
48
  __sentinel: true
@@ -49,6 +51,14 @@ var LazyList = exports.LazyList = function LazyList(_ref) {
49
51
  var getRowHeight = function getRowHeight(row) {
50
52
  return isSentinelRow(row) ? SENTINEL_ROW_HEIGHT : itemHeight(row);
51
53
  };
54
+ (0, _react.useLayoutEffect)(function () {
55
+ var previousItemsLength = previousItemsLengthRef.current;
56
+ if (previousItemsLength !== items.length) {
57
+ var _listRef$current;
58
+ (_listRef$current = listRef.current) === null || _listRef$current === void 0 || (_listRef$current = _listRef$current.refContainer.current) === null || _listRef$current === void 0 || _listRef$current.resetAfterIndex(Math.min(previousItemsLength, items.length), true);
59
+ previousItemsLengthRef.current = items.length;
60
+ }
61
+ }, [items.length]);
52
62
  if (error) {
53
63
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
54
64
  children: error
@@ -66,6 +76,7 @@ var LazyList = exports.LazyList = function LazyList(_ref) {
66
76
  });
67
77
  }
68
78
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_uikit.List, {
79
+ ref: listRef,
69
80
  className: block(null, className),
70
81
  filterable: filterable,
71
82
  items: rows,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_bemCnLite","_interopRequireDefault","_useLoadMoreSentinel","_ListSpinner","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","block","cn","SENTINEL_ROW_HEIGHT","isSentinelRow","row","Boolean","_typeof","LazyList","exports","_ref","items","itemHeight","renderItem","hasMore","onLoadMore","onItemClick","selectedItemIndex","_ref$filterable","filterable","loading","error","emptyContent","isEmpty","className","sentinelRef","useLoadMoreSentinel","rows","useMemo","concat","_toConsumableArray","__sentinel","getRowHeight","_jsx","React","Fragment","children","empty","length","ListSpinner","List","itemsHeight","listRows","reduce","total","isActive","index","ref","_renderItem","_onItemClick"],"sources":["LazyList.tsx"],"sourcesContent":["import React, {useMemo} from 'react';\nimport {List} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport {useLoadMoreSentinel} from '../../helpers/useLoadMoreSentinel';\nimport {ListSpinner} from '../ListSpinner';\nimport './LazyList.scss';\n\nconst block = cn('qp-lazy-list');\n\nconst SENTINEL_ROW_HEIGHT = 1;\n\ntype SentinelRow = {__sentinel: true};\ntype LazyListRow<T> = T | SentinelRow;\n\nconst isSentinelRow = <T,>(row: LazyListRow<T>): row is SentinelRow =>\n Boolean(row) && typeof row === 'object' && '__sentinel' in (row as object);\n\nexport type LazyListProps<T extends object> = {\n items: T[];\n itemHeight: (item: T) => number;\n renderItem: (item: T, isActive: boolean, index: number) => React.ReactNode;\n hasMore?: boolean;\n onLoadMore?: () => void;\n onItemClick?: (item: T, index: number) => void;\n selectedItemIndex?: T[keyof T] | number;\n filterable?: boolean;\n loading?: boolean;\n error?: React.ReactNode;\n emptyContent?: React.ReactNode;\n isEmpty?: boolean;\n className?: string;\n};\n\nexport const LazyList = <T extends object>({\n items,\n itemHeight,\n renderItem,\n hasMore,\n onLoadMore,\n onItemClick,\n selectedItemIndex,\n filterable = false,\n loading,\n error,\n emptyContent,\n isEmpty,\n className,\n}: LazyListProps<T>) => {\n const sentinelRef = useLoadMoreSentinel(hasMore, onLoadMore);\n\n const rows: LazyListRow<T>[] = useMemo(\n () => (hasMore ? [...items, {__sentinel: true}] : items),\n [items, hasMore],\n );\n\n const getRowHeight = (row: LazyListRow<T>) =>\n isSentinelRow(row) ? SENTINEL_ROW_HEIGHT : itemHeight(row);\n\n if (error) {\n return <React.Fragment>{error}</React.Fragment>;\n }\n\n const empty = isEmpty ?? !items.length;\n\n if (loading && empty) {\n return <ListSpinner className={block('spinner', className)} />;\n }\n\n if (empty) {\n return <React.Fragment>{emptyContent}</React.Fragment>;\n }\n\n return (\n <List<LazyListRow<T>>\n className={block(null, className)}\n filterable={filterable}\n items={rows}\n itemHeight={getRowHeight}\n itemsHeight={(listRows) =>\n listRows.reduce((total, row) => total + getRowHeight(row), 0)\n }\n renderItem={(row, isActive, index) =>\n isSentinelRow(row) ? (\n <div ref={sentinelRef} className={block('sentinel')} />\n ) : (\n renderItem(row, isActive, index)\n )\n }\n selectedItemIndex={selectedItemIndex as never}\n onItemClick={(row, index) => {\n if (!isSentinelRow(row)) {\n onItemClick?.(row, index);\n }\n }}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikit","_bemCnLite","_interopRequireDefault","_useLoadMoreSentinel","_ListSpinner","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","block","cn","SENTINEL_ROW_HEIGHT","isSentinelRow","row","Boolean","_typeof","LazyList","exports","_ref","items","itemHeight","renderItem","hasMore","onLoadMore","onItemClick","selectedItemIndex","_ref$filterable","filterable","loading","error","emptyContent","isEmpty","className","listRef","useRef","previousItemsLengthRef","length","sentinelRef","useLoadMoreSentinel","rows","useMemo","concat","_toConsumableArray","__sentinel","getRowHeight","useLayoutEffect","previousItemsLength","current","_listRef$current","refContainer","resetAfterIndex","Math","min","_jsx","React","Fragment","children","empty","ListSpinner","List","ref","itemsHeight","listRows","reduce","total","isActive","index","_renderItem","_onItemClick"],"sources":["LazyList.tsx"],"sourcesContent":["import React, {useLayoutEffect, useMemo, useRef} from 'react';\nimport {List} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport {useLoadMoreSentinel} from '../../helpers/useLoadMoreSentinel';\nimport {ListSpinner} from '../ListSpinner';\nimport './LazyList.scss';\n\nconst block = cn('qp-lazy-list');\n\nconst SENTINEL_ROW_HEIGHT = 1;\n\ntype SentinelRow = {__sentinel: true};\ntype LazyListRow<T> = T | SentinelRow;\n\nconst isSentinelRow = <T,>(row: LazyListRow<T>): row is SentinelRow =>\n Boolean(row) && typeof row === 'object' && '__sentinel' in (row as object);\n\nexport type LazyListProps<T extends object> = {\n items: T[];\n itemHeight: (item: T) => number;\n renderItem: (item: T, isActive: boolean, index: number) => React.ReactNode;\n hasMore?: boolean;\n onLoadMore?: () => void;\n onItemClick?: (item: T, index: number) => void;\n selectedItemIndex?: T[keyof T] | number;\n filterable?: boolean;\n loading?: boolean;\n error?: React.ReactNode;\n emptyContent?: React.ReactNode;\n isEmpty?: boolean;\n className?: string;\n};\n\nexport const LazyList = <T extends object>({\n items,\n itemHeight,\n renderItem,\n hasMore,\n onLoadMore,\n onItemClick,\n selectedItemIndex,\n filterable = false,\n loading,\n error,\n emptyContent,\n isEmpty,\n className,\n}: LazyListProps<T>) => {\n const listRef = useRef<List<LazyListRow<T>>>(null);\n const previousItemsLengthRef = useRef(items.length);\n const sentinelRef = useLoadMoreSentinel(hasMore, onLoadMore, loading, items.length);\n\n const rows: LazyListRow<T>[] = useMemo(\n () => (hasMore ? [...items, {__sentinel: true}] : items),\n [items, hasMore],\n );\n\n const getRowHeight = (row: LazyListRow<T>) =>\n isSentinelRow(row) ? SENTINEL_ROW_HEIGHT : itemHeight(row);\n\n useLayoutEffect(() => {\n const previousItemsLength = previousItemsLengthRef.current;\n\n if (previousItemsLength !== items.length) {\n listRef.current?.refContainer.current?.resetAfterIndex(\n Math.min(previousItemsLength, items.length),\n true,\n );\n previousItemsLengthRef.current = items.length;\n }\n }, [items.length]);\n\n if (error) {\n return <React.Fragment>{error}</React.Fragment>;\n }\n\n const empty = isEmpty ?? !items.length;\n\n if (loading && empty) {\n return <ListSpinner className={block('spinner', className)} />;\n }\n\n if (empty) {\n return <React.Fragment>{emptyContent}</React.Fragment>;\n }\n\n return (\n <List<LazyListRow<T>>\n ref={listRef}\n className={block(null, className)}\n filterable={filterable}\n items={rows}\n itemHeight={getRowHeight}\n itemsHeight={(listRows) =>\n listRows.reduce((total, row) => total + getRowHeight(row), 0)\n }\n renderItem={(row, isActive, index) =>\n isSentinelRow(row) ? (\n <div ref={sentinelRef} className={block('sentinel')} />\n ) : (\n renderItem(row, isActive, index)\n )\n }\n selectedItemIndex={selectedItemIndex as never}\n onItemClick={(row, index) => {\n if (!isSentinelRow(row)) {\n onItemClick?.(row, index);\n }\n }}\n />\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,9 @@
1
- import { FC, ReactNode } from 'react';
1
+ import React, { FC } from 'react';
2
+ import { QueryListLinkRenderer } from '../../types/queryList';
2
3
  import './RowLink.scss';
3
- export type RowLinkProps = {
4
+ export type RowLinkProps = Omit<React.ComponentPropsWithoutRef<'a'>, 'href'> & {
4
5
  href?: string;
5
6
  disabled?: boolean;
6
- className?: string;
7
- children: ReactNode;
7
+ renderLink?: QueryListLinkRenderer;
8
8
  };
9
9
  export declare const RowLink: FC<RowLinkProps>;
@@ -4,23 +4,34 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.RowLink = void 0;
7
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
9
  var _react = _interopRequireDefault(require("react"));
8
10
  var _bemCnLite = _interopRequireDefault(require("bem-cn-lite"));
9
11
  require("./RowLink.css");
10
12
  var _jsxRuntime = require("react/jsx-runtime");
11
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ var _excluded = ["href", "disabled", "renderLink", "className", "children"];
12
15
  var block = (0, _bemCnLite.default)('qp-row-link');
13
16
  var RowLink = exports.RowLink = function RowLink(_ref) {
14
17
  var href = _ref.href,
15
18
  disabled = _ref.disabled,
19
+ renderLink = _ref.renderLink,
16
20
  className = _ref.className,
17
- children = _ref.children;
21
+ children = _ref.children,
22
+ linkProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
18
23
  var isLink = Boolean(href) && !disabled;
19
- var Wrap = isLink ? 'a' : 'div';
20
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrap, {
21
- href: isLink ? href : undefined,
24
+ if (!isLink) {
25
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
26
+ className: block(null, className),
27
+ children: children
28
+ });
29
+ }
30
+ var props = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, linkProps), {}, {
31
+ href: href,
22
32
  className: block(null, className),
23
33
  children: children
24
34
  });
35
+ return renderLink ? renderLink(props) : /*#__PURE__*/(0, _jsxRuntime.jsx)("a", (0, _objectSpread2.default)({}, props));
25
36
  };
26
37
  // #sourceMappingURL=RowLink.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_bemCnLite","_jsxRuntime","e","__esModule","default","block","cn","RowLink","exports","_ref","href","disabled","className","children","isLink","Boolean","Wrap","_jsx","undefined"],"sources":["RowLink.tsx"],"sourcesContent":["import React, {FC, ReactNode} from 'react';\nimport cn from 'bem-cn-lite';\nimport './RowLink.scss';\n\nconst block = cn('qp-row-link');\n\nexport type RowLinkProps = {\n href?: string;\n disabled?: boolean;\n className?: string;\n children: ReactNode;\n};\n\nexport const RowLink: FC<RowLinkProps> = ({href, disabled, className, children}) => {\n const isLink = Boolean(href) && !disabled;\n const Wrap = isLink ? 'a' : 'div';\n\n return (\n <Wrap href={isLink ? href : undefined} className={block(null, className)}>\n {children}\n </Wrap>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACAA,OAAA;AAAwB,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExB,IAAMG,KAAK,GAAG,IAAAC,kBAAE,EAAC,aAAa,CAAC;AASxB,IAAMC,OAAyB,GAAAC,OAAA,CAAAD,OAAA,GAAG,SAA5BA,OAAyBA,CAAAE,IAAA,EAA8C;EAAA,IAAzCC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS;IAAEC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;EAC1E,IAAMC,MAAM,GAAGC,OAAO,CAACL,IAAI,CAAC,IAAI,CAACC,QAAQ;EACzC,IAAMK,IAAI,GAAGF,MAAM,GAAG,GAAG,GAAG,KAAK;EAEjC,oBACI,IAAAG,eAAA,EAACD,IAAI;IAACN,IAAI,EAAEI,MAAM,GAAGJ,IAAI,GAAGQ,SAAU;IAACN,SAAS,EAAEP,KAAK,CAAC,IAAI,EAAEO,SAAS,CAAE;IAAAC,QAAA,EACpEA;EAAQ,CACP,CAAC;AAEf,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_bemCnLite","_jsxRuntime","e","__esModule","default","block","cn","RowLink","exports","_ref","href","disabled","renderLink","className","children","linkProps","_objectWithoutProperties","_excluded","isLink","Boolean","_jsx","props","_objectSpread"],"sources":["RowLink.tsx"],"sourcesContent":["import React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport {QueryListLinkRenderer} from '../../types/queryList';\nimport './RowLink.scss';\n\nconst block = cn('qp-row-link');\n\nexport type RowLinkProps = Omit<React.ComponentPropsWithoutRef<'a'>, 'href'> & {\n href?: string;\n disabled?: boolean;\n renderLink?: QueryListLinkRenderer;\n};\n\nexport const RowLink: FC<RowLinkProps> = ({\n href,\n disabled,\n renderLink,\n className,\n children,\n ...linkProps\n}) => {\n const isLink = Boolean(href) && !disabled;\n\n if (!isLink) {\n return <div className={block(null, className)}>{children}</div>;\n }\n\n const props: React.ComponentPropsWithoutRef<'a'> = {\n ...linkProps,\n href,\n className: block(null, className),\n children,\n };\n\n return renderLink ? renderLink(props) : <a {...props} />;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEAA,OAAA;AAAwB,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;;AAExB,IAAMG,KAAK,GAAG,IAAAC,kBAAE,EAAC,aAAa,CAAC;AAQxB,IAAMC,OAAyB,GAAAC,OAAA,CAAAD,OAAA,GAAG,SAA5BA,OAAyBA,CAAAE,IAAA,EAOhC;EAAA,IANFC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,UAAU,GAAAH,IAAA,CAAVG,UAAU;IACVC,SAAS,GAAAJ,IAAA,CAATI,SAAS;IACTC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACLC,SAAS,OAAAC,iCAAA,EAAAP,IAAA,EAAAQ,SAAA;EAEZ,IAAMC,MAAM,GAAGC,OAAO,CAACT,IAAI,CAAC,IAAI,CAACC,QAAQ;EAEzC,IAAI,CAACO,MAAM,EAAE;IACT,oBAAO,IAAAE,eAAA;MAAKP,SAAS,EAAER,KAAK,CAAC,IAAI,EAAEQ,SAAS,CAAE;MAAAC,QAAA,EAAEA;IAAQ,CAAM,CAAC;EACnE;EAEA,IAAMO,KAA0C,OAAAC,sBAAA,MAAAA,sBAAA,MACzCP,SAAS;IACZL,IAAI,EAAJA,IAAI;IACJG,SAAS,EAAER,KAAK,CAAC,IAAI,EAAEQ,SAAS,CAAC;IACjCC,QAAQ,EAARA;EAAQ,EACX;EAED,OAAOF,UAAU,GAAGA,UAAU,CAACS,KAAK,CAAC,gBAAG,IAAAD,eAAA,WAAAE,sBAAA,MAAOD,KAAK,CAAG,CAAC;AAC5D,CAAC","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { FC, ReactNode } from 'react';
2
+ import { QueryListLinkRenderer } from '../../types/queryList';
2
3
  import './SearchRowLayout.scss';
3
4
  export type SearchRowLayoutProps = {
4
5
  header: ReactNode;
@@ -6,6 +7,7 @@ export type SearchRowLayoutProps = {
6
7
  language: string;
7
8
  href?: string;
8
9
  disabled?: boolean;
10
+ renderLink?: QueryListLinkRenderer;
9
11
  className?: string;
10
12
  };
11
13
  export declare const SearchRowLayout: FC<SearchRowLayoutProps>;
@@ -21,10 +21,12 @@ var SearchRowLayout = exports.SearchRowLayout = function SearchRowLayout(_ref) {
21
21
  language = _ref.language,
22
22
  href = _ref.href,
23
23
  disabled = _ref.disabled,
24
+ renderLink = _ref.renderLink,
24
25
  className = _ref.className;
25
26
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_RowLink.RowLink, {
26
27
  href: href,
27
28
  disabled: disabled,
29
+ renderLink: renderLink,
28
30
  className: block(null, className),
29
31
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_uikit.Flex, {
30
32
  direction: "column",
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_uikit","_bemCnLite","_MonacoEditor","_RowLink","_fitQueryToVisibleLines","_monacoConfig","_jsxRuntime","e","__esModule","default","block","cn","SearchRowLayout","exports","_ref","header","query","language","href","disabled","className","_jsx","RowLink","children","_jsxs","Flex","direction","gap","alignItems","MonacoEditor","value","fitQueryToVisibleLines","readOnly","monacoConfig","MONACO_CONFIG"],"sources":["SearchRowLayout.tsx"],"sourcesContent":["import React, {FC, ReactNode} from 'react';\nimport {Flex} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport {MonacoEditor} from '../MonacoEditor';\nimport {RowLink} from '../RowLink';\nimport {fitQueryToVisibleLines} from './helpers/fitQueryToVisibleLines';\nimport {MONACO_CONFIG} from './helpers/monacoConfig';\nimport './SearchRowLayout.scss';\n\nconst block = cn('qp-search-row-layout');\n\nexport type SearchRowLayoutProps = {\n header: ReactNode;\n query?: string;\n language: string;\n href?: string;\n disabled?: boolean;\n className?: string;\n};\n\nexport const SearchRowLayout: FC<SearchRowLayoutProps> = ({\n header,\n query,\n language,\n href,\n disabled,\n className,\n}) => {\n return (\n <RowLink href={href} disabled={disabled} className={block(null, className)}>\n <Flex direction=\"column\" gap={2} className={block('content')}>\n <Flex gap={2} alignItems=\"center\">\n {header}\n </Flex>\n <MonacoEditor\n value={fitQueryToVisibleLines(query)}\n language={language}\n readOnly\n monacoConfig={MONACO_CONFIG}\n className={block('monaco')}\n />\n </Flex>\n </RowLink>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,uBAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACAA,OAAA;AAAgC,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,IAAMG,KAAK,GAAG,IAAAC,kBAAE,EAAC,sBAAsB,CAAC;AAWjC,IAAMC,eAAyC,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAA5CA,eAAyCA,CAAAE,IAAA,EAOhD;EAAA,IANFC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,IAAI,GAAAJ,IAAA,CAAJI,IAAI;IACJC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRC,SAAS,GAAAN,IAAA,CAATM,SAAS;EAET,oBACI,IAAAC,eAAA,EAACC,gBAAO;IAACJ,IAAI,EAAEA,IAAK;IAACC,QAAQ,EAAEA,QAAS;IAACC,SAAS,EAAEV,KAAK,CAAC,IAAI,EAAEU,SAAS,CAAE;IAAAG,QAAA,eACvE,IAAAC,gBAAA,EAACC,WAAI;MAACC,SAAS,EAAC,QAAQ;MAACC,GAAG,EAAE,CAAE;MAACP,SAAS,EAAEV,KAAK,CAAC,SAAS,CAAE;MAAAa,QAAA,gBACzD,IAAAF,eAAA,EAACI,WAAI;QAACE,GAAG,EAAE,CAAE;QAACC,UAAU,EAAC,QAAQ;QAAAL,QAAA,EAC5BR;MAAM,CACL,CAAC,eACP,IAAAM,eAAA,EAACQ,0BAAY;QACTC,KAAK,EAAE,IAAAC,8CAAsB,EAACf,KAAK,CAAE;QACrCC,QAAQ,EAAEA,QAAS;QACnBe,QAAQ;QACRC,YAAY,EAAEC,2BAAc;QAC5Bd,SAAS,EAAEV,KAAK,CAAC,QAAQ;MAAE,CAC9B,CAAC;IAAA,CACA;EAAC,CACF,CAAC;AAElB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_uikit","_bemCnLite","_MonacoEditor","_RowLink","_fitQueryToVisibleLines","_monacoConfig","_jsxRuntime","e","__esModule","default","block","cn","SearchRowLayout","exports","_ref","header","query","language","href","disabled","renderLink","className","_jsx","RowLink","children","_jsxs","Flex","direction","gap","alignItems","MonacoEditor","value","fitQueryToVisibleLines","readOnly","monacoConfig","MONACO_CONFIG"],"sources":["SearchRowLayout.tsx"],"sourcesContent":["import React, {FC, ReactNode} from 'react';\nimport {Flex} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport {MonacoEditor} from '../MonacoEditor';\nimport {RowLink} from '../RowLink';\nimport {QueryListLinkRenderer} from '../../types/queryList';\nimport {fitQueryToVisibleLines} from './helpers/fitQueryToVisibleLines';\nimport {MONACO_CONFIG} from './helpers/monacoConfig';\nimport './SearchRowLayout.scss';\n\nconst block = cn('qp-search-row-layout');\n\nexport type SearchRowLayoutProps = {\n header: ReactNode;\n query?: string;\n language: string;\n href?: string;\n disabled?: boolean;\n renderLink?: QueryListLinkRenderer;\n className?: string;\n};\n\nexport const SearchRowLayout: FC<SearchRowLayoutProps> = ({\n header,\n query,\n language,\n href,\n disabled,\n renderLink,\n className,\n}) => {\n return (\n <RowLink\n href={href}\n disabled={disabled}\n renderLink={renderLink}\n className={block(null, className)}\n >\n <Flex direction=\"column\" gap={2} className={block('content')}>\n <Flex gap={2} alignItems=\"center\">\n {header}\n </Flex>\n <MonacoEditor\n value={fitQueryToVisibleLines(query)}\n language={language}\n readOnly\n monacoConfig={MONACO_CONFIG}\n className={block('monaco')}\n />\n </Flex>\n </RowLink>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAEA,IAAAK,uBAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACAA,OAAA;AAAgC,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,IAAMG,KAAK,GAAG,IAAAC,kBAAE,EAAC,sBAAsB,CAAC;AAYjC,IAAMC,eAAyC,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAA5CA,eAAyCA,CAAAE,IAAA,EAQhD;EAAA,IAPFC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,IAAI,GAAAJ,IAAA,CAAJI,IAAI;IACJC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRC,UAAU,GAAAN,IAAA,CAAVM,UAAU;IACVC,SAAS,GAAAP,IAAA,CAATO,SAAS;EAET,oBACI,IAAAC,eAAA,EAACC,gBAAO;IACJL,IAAI,EAAEA,IAAK;IACXC,QAAQ,EAAEA,QAAS;IACnBC,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEX,KAAK,CAAC,IAAI,EAAEW,SAAS,CAAE;IAAAG,QAAA,eAElC,IAAAC,gBAAA,EAACC,WAAI;MAACC,SAAS,EAAC,QAAQ;MAACC,GAAG,EAAE,CAAE;MAACP,SAAS,EAAEX,KAAK,CAAC,SAAS,CAAE;MAAAc,QAAA,gBACzD,IAAAF,eAAA,EAACI,WAAI;QAACE,GAAG,EAAE,CAAE;QAACC,UAAU,EAAC,QAAQ;QAAAL,QAAA,EAC5BT;MAAM,CACL,CAAC,eACP,IAAAO,eAAA,EAACQ,0BAAY;QACTC,KAAK,EAAE,IAAAC,8CAAsB,EAAChB,KAAK,CAAE;QACrCC,QAAQ,EAAEA,QAAS;QACnBgB,QAAQ;QACRC,YAAY,EAAEC,2BAAc;QAC5Bd,SAAS,EAAEX,KAAK,CAAC,QAAQ;MAAE,CAC9B,CAAC;IAAA,CACA;EAAC,CACF,CAAC;AAElB,CAAC","ignoreList":[]}
@@ -1,2 +1,3 @@
1
1
  import { QueryListItem, QueryListRow, QueryListRowVariant } from '../types/queryList';
2
+ export declare const getListItemKey: <T extends QueryListRow>(item: QueryListItem<T>) => string;
2
3
  export declare const getListKey: <T extends QueryListRow>(items: QueryListItem<T>[], variant: QueryListRowVariant) => string;
@@ -3,17 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getListKey = void 0;
6
+ exports.getListKey = exports.getListItemKey = void 0;
7
7
  require("core-js/modules/es.array.concat.js");
8
8
  require("core-js/modules/es.array.join.js");
9
9
  require("core-js/modules/es.array.map.js");
10
10
  require("core-js/modules/es.iterator.constructor.js");
11
11
  require("core-js/modules/es.iterator.map.js");
12
12
  require("core-js/modules/es.object.to-string.js");
13
+ var getListItemKey = exports.getListItemKey = function getListItemKey(item) {
14
+ return 'header' in item ? "h:".concat(item.header) : "r:".concat(item.id);
15
+ };
13
16
  var getListKey = exports.getListKey = function getListKey(items, variant) {
14
- var itemsKey = items.map(function (item) {
15
- return 'header' in item ? "h:".concat(item.header) : "r:".concat(item.id);
16
- }).join(',');
17
+ var itemsKey = items.map(getListItemKey).join(',');
17
18
  return "".concat(variant, ":").concat(itemsKey);
18
19
  };
19
20
  // #sourceMappingURL=getListKey.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getListKey","exports","items","variant","itemsKey","map","item","concat","header","id","join"],"sources":["getListKey.ts"],"sourcesContent":["import {QueryListItem, QueryListRow, QueryListRowVariant} from '../types/queryList';\n\nexport const getListKey = <T extends QueryListRow>(\n items: QueryListItem<T>[],\n variant: QueryListRowVariant,\n): string => {\n const itemsKey = items\n .map((item) => ('header' in item ? `h:${item.header}` : `r:${item.id}`))\n .join(',');\n\n return `${variant}:${itemsKey}`;\n};\n"],"mappings":";;;;;;;;;;;;AAEO,IAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,SAAbA,UAAUA,CACnBE,KAAyB,EACzBC,OAA4B,EACnB;EACT,IAAMC,QAAQ,GAAGF,KAAK,CACjBG,GAAG,CAAC,UAACC,IAAI;IAAA,OAAM,QAAQ,IAAIA,IAAI,QAAAC,MAAA,CAAQD,IAAI,CAACE,MAAM,SAAAD,MAAA,CAAUD,IAAI,CAACG,EAAE,CAAE;EAAA,CAAC,CAAC,CACvEC,IAAI,CAAC,GAAG,CAAC;EAEd,UAAAH,MAAA,CAAUJ,OAAO,OAAAI,MAAA,CAAIH,QAAQ;AACjC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getListItemKey","exports","item","concat","header","id","getListKey","items","variant","itemsKey","map","join"],"sources":["getListKey.ts"],"sourcesContent":["import {QueryListItem, QueryListRow, QueryListRowVariant} from '../types/queryList';\n\nexport const getListItemKey = <T extends QueryListRow>(item: QueryListItem<T>): string =>\n 'header' in item ? `h:${item.header}` : `r:${item.id}`;\n\nexport const getListKey = <T extends QueryListRow>(\n items: QueryListItem<T>[],\n variant: QueryListRowVariant,\n): string => {\n const itemsKey = items.map(getListItemKey).join(',');\n\n return `${variant}:${itemsKey}`;\n};\n"],"mappings":";;;;;;;;;;;;AAEO,IAAMA,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAA4BE,IAAsB;EAAA,OACzE,QAAQ,IAAIA,IAAI,QAAAC,MAAA,CAAQD,IAAI,CAACE,MAAM,SAAAD,MAAA,CAAUD,IAAI,CAACG,EAAE,CAAE;AAAA;AAEnD,IAAMC,UAAU,GAAAL,OAAA,CAAAK,UAAA,GAAG,SAAbA,UAAUA,CACnBC,KAAyB,EACzBC,OAA4B,EACnB;EACT,IAAMC,QAAQ,GAAGF,KAAK,CAACG,GAAG,CAACV,cAAc,CAAC,CAACW,IAAI,CAAC,GAAG,CAAC;EAEpD,UAAAR,MAAA,CAAUK,OAAO,OAAAL,MAAA,CAAIM,QAAQ;AACjC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { QueryListItem, QueryListRow, QueryListRowVariant } from '../types/queryList';
2
+ export declare const useListKey: <T extends QueryListRow>(items: QueryListItem<T>[], rowVariant: QueryListRowVariant, paginationEnabled: boolean) => string;