@gravity-ui/querieskit 1.3.1 → 1.3.2

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 (36) 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/modules/Attachments/Attachments.css +4 -0
  11. package/build/cjs/modules/Attachments/Attachments.css.map +1 -1
  12. package/build/cjs/modules/Attachments/Attachments.d.ts +2 -1
  13. package/build/cjs/modules/Attachments/Attachments.js +8 -1
  14. package/build/cjs/modules/Attachments/Attachments.js.map +1 -1
  15. package/build/cjs/modules/Attachments/Attachments.stories.d.ts +2 -1
  16. package/build/cjs/modules/Attachments/Attachments.stories.js +7 -3
  17. package/build/cjs/modules/Attachments/Attachments.stories.js.map +1 -1
  18. package/build/esm/components/AttachmentList/AttachmentList.d.ts +2 -2
  19. package/build/esm/components/AttachmentList/AttachmentList.js +9 -1
  20. package/build/esm/components/AttachmentList/AttachmentList.js.map +1 -1
  21. package/build/esm/components/AttachmentList/AttachmentList.stories.d.ts +36 -20
  22. package/build/esm/components/AttachmentList/AttachmentList.stories.js +3 -0
  23. package/build/esm/components/AttachmentList/AttachmentList.stories.js.map +1 -1
  24. package/build/esm/components/AttachmentList/helpers/isInteractiveTarget.d.ts +2 -0
  25. package/build/esm/components/AttachmentList/helpers/isInteractiveTarget.js +5 -0
  26. package/build/esm/components/AttachmentList/helpers/isInteractiveTarget.js.map +1 -0
  27. package/build/esm/modules/Attachments/Attachments.css +4 -0
  28. package/build/esm/modules/Attachments/Attachments.css.map +1 -1
  29. package/build/esm/modules/Attachments/Attachments.d.ts +2 -1
  30. package/build/esm/modules/Attachments/Attachments.js +8 -1
  31. package/build/esm/modules/Attachments/Attachments.js.map +1 -1
  32. package/build/esm/modules/Attachments/Attachments.scss +5 -0
  33. package/build/esm/modules/Attachments/Attachments.stories.d.ts +2 -1
  34. package/build/esm/modules/Attachments/Attachments.stories.js +7 -3
  35. package/build/esm/modules/Attachments/Attachments.stories.js.map +1 -1
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_test","_Attachments","_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","token","deletedAttachments","tokens","value","title","meta","component","Attachments","tags","parameters","layout","decorators","Story","_jsx","style","height","width","children","args","onChange","fn","_default","exports","Default","placeholderProps","description","linkForDoc","linkText","WithAttachments","WithDeletedAttachments","ControlledAttachments","props","_props$attachments","_props$deletedAttachm","_useState","useState","_useState2","_slicedToArray","currentAttachments","setCurrentAttachments","_useState3","_useState4","currentDeletedAttachments","setCurrentDeletedAttachments","_objectSpread","payload","_props$onChange","Controlled","render"],"sources":["Attachments.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {fn} from 'storybook/test';\nimport {Attachments} from './Attachments';\n\ntype AttachmentsProps = React.ComponentProps<typeof Attachments>;\ntype Attachment = NonNullable<AttachmentsProps['attachments']>[number];\n\nconst attachments: Attachment[] = [\n {id: 'readme', name: 'README.md'},\n {id: 'query', name: 'daily-report.sql'},\n {\n id: 'documentation',\n name: 'Query documentation',\n link: 'https://example.com/docs/query',\n token: 'documentation-token',\n },\n];\n\nconst deletedAttachments: Attachment[] = [\n {id: 'archive', name: 'archive.csv'},\n {\n id: 'old-dashboard',\n name: 'Old dashboard',\n link: 'https://example.com/dashboards/old',\n token: 'dashboard-token',\n },\n];\n\nconst tokens: NonNullable<AttachmentsProps['tokens']> = [\n {value: 'documentation-token', title: 'Documentation token'},\n {value: 'dashboard-token', title: 'Dashboard token'},\n];\n\nconst meta = {\n title: 'Modules/Attachments',\n component: Attachments,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n decorators: [\n (Story) => (\n <div style={{height: 500, width: 322}}>\n <Story />\n </div>\n ),\n ],\n args: {\n tokens,\n onChange: fn(),\n },\n} satisfies Meta<typeof Attachments>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n/** Empty state with content configured through `placeholderProps`. */\nexport const Default: Story = {\n args: {\n placeholderProps: {\n title: 'No attachments',\n description: 'Add files or links that should be available to the query.',\n linkForDoc: '#attachments-help',\n linkText: 'About attachments',\n },\n },\n};\n\n/** Initial files and links supplied through the uncontrolled `attachments` API. */\nexport const WithAttachments: Story = {\n args: {\n attachments,\n },\n};\n\n/** Current and deleted collections. Open the Deleted tab to restore an attachment. */\nexport const WithDeletedAttachments: Story = {\n args: {\n attachments,\n deletedAttachments,\n },\n};\n\nconst ControlledAttachments = (props: AttachmentsProps) => {\n const [currentAttachments, setCurrentAttachments] = useState(props.attachments ?? []);\n const [currentDeletedAttachments, setCurrentDeletedAttachments] = useState(\n props.deletedAttachments ?? [],\n );\n\n return (\n <Attachments\n {...props}\n attachments={currentAttachments}\n deletedAttachments={currentDeletedAttachments}\n onChange={(payload) => {\n setCurrentAttachments(payload.attachments);\n setCurrentDeletedAttachments(payload.deletedAttachments);\n props.onChange?.(payload);\n }}\n />\n );\n};\n\n/** Controlled usage: every edit, delete, restore, or addition is applied from `onChange`. */\nexport const Controlled: Story = {\n args: {\n attachments,\n deletedAttachments,\n },\n render: (args) => <ControlledAttachments {...args} />,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_test","_Attachments","_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","token","deletedAttachments","tokens","value","title","meta","component","Attachments","tags","parameters","layout","decorators","Story","_jsx","style","height","width","children","args","onChange","fn","_default","exports","Default","placeholderProps","description","linkForDoc","linkText","onItemClick","console","info","WithAttachments","WithDeletedAttachments","ControlledAttachments","props","_props$attachments","_props$deletedAttachm","_useState","useState","_useState2","_slicedToArray","currentAttachments","setCurrentAttachments","_useState3","_useState4","currentDeletedAttachments","setCurrentDeletedAttachments","_objectSpread","payload","_props$onChange","Controlled","render"],"sources":["Attachments.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {fn} from 'storybook/test';\nimport {Attachments} from './Attachments';\n\ntype AttachmentsProps = React.ComponentProps<typeof Attachments>;\ntype Attachment = NonNullable<AttachmentsProps['attachments']>[number];\n\nconst attachments: Attachment[] = [\n {id: 'readme', name: 'README.md'},\n {id: 'query', name: 'daily-report.sql'},\n {\n id: 'documentation',\n name: 'Query documentation',\n link: 'https://example.com/docs/query',\n token: 'documentation-token',\n },\n];\n\nconst deletedAttachments: Attachment[] = [\n {id: 'archive', name: 'archive.csv'},\n {\n id: 'old-dashboard',\n name: 'Old dashboard',\n link: 'https://example.com/dashboards/old',\n token: 'dashboard-token',\n },\n];\n\nconst tokens: NonNullable<AttachmentsProps['tokens']> = [\n {value: 'documentation-token', title: 'Documentation token'},\n {value: 'dashboard-token', title: 'Dashboard token'},\n];\n\nconst meta = {\n title: 'Modules/Attachments',\n component: Attachments,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n decorators: [\n (Story) => (\n <div style={{height: 500, width: 322}}>\n <Story />\n </div>\n ),\n ],\n args: {\n tokens,\n onChange: fn(),\n },\n} satisfies Meta<typeof Attachments>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n/** Empty state with content configured through `placeholderProps`. */\nexport const Default: Story = {\n args: {\n placeholderProps: {\n title: 'No attachments',\n description: 'Add files or links that should be available to the query.',\n linkForDoc: '#attachments-help',\n linkText: 'About attachments',\n },\n onItemClick: console.info,\n },\n};\n\n/** Initial files and links supplied through the uncontrolled `attachments` API. */\nexport const WithAttachments: Story = {\n args: {\n attachments,\n onItemClick: console.info,\n },\n};\n\n/** Current and deleted collections. Open the Deleted tab to restore an attachment. */\nexport const WithDeletedAttachments: Story = {\n args: {\n attachments,\n deletedAttachments,\n onItemClick: console.info,\n },\n};\n\nconst ControlledAttachments = (props: AttachmentsProps) => {\n const [currentAttachments, setCurrentAttachments] = useState(props.attachments ?? []);\n const [currentDeletedAttachments, setCurrentDeletedAttachments] = useState(\n props.deletedAttachments ?? [],\n );\n\n return (\n <Attachments\n {...props}\n attachments={currentAttachments}\n deletedAttachments={currentDeletedAttachments}\n onItemClick={console.info}\n onChange={(payload) => {\n setCurrentAttachments(payload.attachments);\n setCurrentDeletedAttachments(payload.deletedAttachments);\n props.onChange?.(payload);\n }}\n />\n );\n};\n\n/** Controlled usage: every edit, delete, restore, or addition is applied from `onChange`. */\nexport const Controlled: Story = {\n args: {\n attachments,\n deletedAttachments,\n },\n render: (args) => <ControlledAttachments {...args} />,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -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;
@@ -1,6 +1,6 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["attachments", "onEdit", "onDelete", "onRevert", "wasAddedIds", "wasEditedIds", "editingIds", "renderEditForm", "className", "isDeleted"];
3
+ var _excluded = ["attachments", "onEdit", "onDelete", "onRevert", "wasAddedIds", "wasEditedIds", "editingIds", "renderEditForm", "className", "isDeleted", "onItemClick"];
4
4
  import "core-js/modules/es.array.iterator.js";
5
5
  import "core-js/modules/es.object.to-string.js";
6
6
  import "core-js/modules/es.set.js";
@@ -16,6 +16,7 @@ import "core-js/modules/web.dom-collections.iterator.js";
16
16
  import React, { useMemo } from 'react';
17
17
  import { Flex, List } from '@gravity-ui/uikit';
18
18
  import { AttachmentItem } from "./internal/AttachmentItem/AttachmentItem";
19
+ import { isInteractiveTarget } from "./helpers/isInteractiveTarget";
19
20
  import "./AttachmentList.css";
20
21
  import { jsx as _jsx } from "react/jsx-runtime";
21
22
  export var AttachmentList = function AttachmentList(_ref) {
@@ -29,6 +30,7 @@ export var AttachmentList = function AttachmentList(_ref) {
29
30
  renderEditForm = _ref.renderEditForm,
30
31
  className = _ref.className,
31
32
  isDeleted = _ref.isDeleted,
33
+ onItemClick = _ref.onItemClick,
32
34
  listProps = _objectWithoutProperties(_ref, _excluded);
33
35
  var addedIdsSet = useMemo(function () {
34
36
  return new Set(wasAddedIds);
@@ -39,6 +41,11 @@ export var AttachmentList = function AttachmentList(_ref) {
39
41
  var editingIdsSet = useMemo(function () {
40
42
  return new Set(editingIds);
41
43
  }, [editingIds]);
44
+ var handleItemClick = function handleItemClick(item, index, fromKeyboard, event) {
45
+ if (editingIdsSet.has(item.id)) return;
46
+ if (isInteractiveTarget(event === null || event === void 0 ? void 0 : event.target)) return;
47
+ onItemClick === null || onItemClick === void 0 || onItemClick(item, index, fromKeyboard, event);
48
+ };
42
49
  return /*#__PURE__*/_jsx(Flex, {
43
50
  className: className,
44
51
  width: "100%",
@@ -47,6 +54,7 @@ export var AttachmentList = function AttachmentList(_ref) {
47
54
  filterable: false,
48
55
  virtualized: false,
49
56
  items: attachments,
57
+ onItemClick: handleItemClick,
50
58
  renderItem: function renderItem(attachment) {
51
59
  if (editingIdsSet.has(attachment.id)) {
52
60
  return renderEditForm === null || renderEditForm === void 0 ? void 0 : renderEditForm(attachment);
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","Flex","List","AttachmentItem","jsx","_jsx","AttachmentList","_ref","attachments","onEdit","onDelete","onRevert","wasAddedIds","wasEditedIds","editingIds","renderEditForm","className","isDeleted","listProps","_objectWithoutProperties","_excluded","addedIdsSet","Set","editedIdsSet","editingIdsSet","width","height","children","_objectSpread","filterable","virtualized","items","renderItem","attachment","has","id","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":";;;;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAAcC,OAAO,QAAO,OAAO;AAC/C,SAAQC,IAAI,EAAEC,IAAI,QAAkB,mBAAmB;AACvD,SAAQC,cAAc;AACtB;AAA+B,SAAAC,GAAA,IAAAC,IAAA;AAmB/B,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAAC,IAAA,EAYA;EAAA,IAXvBC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,MAAM,GAAAF,IAAA,CAANE,MAAM;IACNC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;IACRC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,YAAY,GAAAN,IAAA,CAAZM,YAAY;IACZC,UAAU,GAAAP,IAAA,CAAVO,UAAU;IACVC,cAAc,GAAAR,IAAA,CAAdQ,cAAc;IACdC,SAAS,GAAAT,IAAA,CAATS,SAAS;IACTC,SAAS,GAAAV,IAAA,CAATU,SAAS;IACNC,SAAS,GAAAC,wBAAA,CAAAZ,IAAA,EAAAa,SAAA;EAEZ,IAAMC,WAAW,GAAGrB,OAAO,CAAC;IAAA,OAAM,IAAIsB,GAAG,CAACV,WAAW,CAAC;EAAA,GAAE,CAACA,WAAW,CAAC,CAAC;EACtE,IAAMW,YAAY,GAAGvB,OAAO,CAAC;IAAA,OAAM,IAAIsB,GAAG,CAACT,YAAY,CAAC;EAAA,GAAE,CAACA,YAAY,CAAC,CAAC;EACzE,IAAMW,aAAa,GAAGxB,OAAO,CAAC;IAAA,OAAM,IAAIsB,GAAG,CAACR,UAAU,CAAC;EAAA,GAAE,CAACA,UAAU,CAAC,CAAC;EAEtE,oBACIT,IAAA,CAACJ,IAAI;IAACe,SAAS,EAAEA,SAAU;IAACS,KAAK,EAAC,MAAM;IAACC,MAAM,EAAC,MAAM;IAAAC,QAAA,eAClDtB,IAAA,CAACH,IAAI,EAAA0B,aAAA;MACDC,UAAU,EAAE,KAAM;MAClBC,WAAW,EAAE,KAAM;MACnBC,KAAK,EAAEvB,WAAY;MACnBwB,UAAU,EAAE,SAAZA,UAAUA,CAAGC,UAAU,EAAK;QACxB,IAAIT,aAAa,CAACU,GAAG,CAACD,UAAU,CAACE,EAAE,CAAC,EAAE;UAClC,OAAOpB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGkB,UAAU,CAAC;QACvC;QAEA,oBACI5B,IAAA,CAACF,cAAc;UACX8B,UAAU,EAAEA,UAAW;UACvBG,QAAQ,EAAEf,WAAW,CAACa,GAAG,CAACD,UAAU,CAACE,EAAE,CAAE;UACzCE,SAAS,EAAEd,YAAY,CAACW,GAAG,CAACD,UAAU,CAACE,EAAE,CAAE;UAC3C1B,MAAM,EAAEA,MAAO;UACfE,QAAQ,EAAEA,QAAS;UACnBD,QAAQ,EAAEA,QAAS;UACnBO,SAAS,EAAEA;QAAU,CACxB,CAAC;MAEV;IAAE,GACEC,SAAS,CAChB;EAAC,CACA,CAAC;AAEf,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Flex","List","AttachmentItem","isInteractiveTarget","jsx","_jsx","AttachmentList","_ref","attachments","onEdit","onDelete","onRevert","wasAddedIds","wasEditedIds","editingIds","renderEditForm","className","isDeleted","onItemClick","listProps","_objectWithoutProperties","_excluded","addedIdsSet","Set","editedIdsSet","editingIdsSet","handleItemClick","item","index","fromKeyboard","event","has","id","target","width","height","children","_objectSpread","filterable","virtualized","items","renderItem","attachment","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":";;;;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAAcC,OAAO,QAAO,OAAO;AAC/C,SAAQC,IAAI,EAAEC,IAAI,QAAkB,mBAAmB;AACvD,SAAQC,cAAc;AACtB,SAAQC,mBAAmB;AAC3B;AAA+B,SAAAC,GAAA,IAAAC,IAAA;AAqB/B,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAAC,IAAA,EAaA;EAAA,IAZvBC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,MAAM,GAAAF,IAAA,CAANE,MAAM;IACNC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;IACRC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,YAAY,GAAAN,IAAA,CAAZM,YAAY;IACZC,UAAU,GAAAP,IAAA,CAAVO,UAAU;IACVC,cAAc,GAAAR,IAAA,CAAdQ,cAAc;IACdC,SAAS,GAAAT,IAAA,CAATS,SAAS;IACTC,SAAS,GAAAV,IAAA,CAATU,SAAS;IACTC,WAAW,GAAAX,IAAA,CAAXW,WAAW;IACRC,SAAS,GAAAC,wBAAA,CAAAb,IAAA,EAAAc,SAAA;EAEZ,IAAMC,WAAW,GAAGvB,OAAO,CAAC;IAAA,OAAM,IAAIwB,GAAG,CAACX,WAAW,CAAC;EAAA,GAAE,CAACA,WAAW,CAAC,CAAC;EACtE,IAAMY,YAAY,GAAGzB,OAAO,CAAC;IAAA,OAAM,IAAIwB,GAAG,CAACV,YAAY,CAAC;EAAA,GAAE,CAACA,YAAY,CAAC,CAAC;EACzE,IAAMY,aAAa,GAAG1B,OAAO,CAAC;IAAA,OAAM,IAAIwB,GAAG,CAACT,UAAU,CAAC;EAAA,GAAE,CAACA,UAAU,CAAC,CAAC;EAEtE,IAAMY,eAAmD,GAAG,SAAtDA,eAAmDA,CACrDC,IAAI,EACJC,KAAK,EACLC,YAAY,EACZC,KAAK,EACJ;IACD,IAAIL,aAAa,CAACM,GAAG,CAACJ,IAAI,CAACK,EAAE,CAAC,EAAE;IAChC,IAAI7B,mBAAmB,CAAC2B,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,MAAM,CAAC,EAAE;IACxCf,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAGS,IAAI,EAAEC,KAAK,EAAEC,YAAY,EAAEC,KAAK,CAAC;EACnD,CAAC;EAED,oBACIzB,IAAA,CAACL,IAAI;IAACgB,SAAS,EAAEA,SAAU;IAACkB,KAAK,EAAC,MAAM;IAACC,MAAM,EAAC,MAAM;IAAAC,QAAA,eAClD/B,IAAA,CAACJ,IAAI,EAAAoC,aAAA;MACDC,UAAU,EAAE,KAAM;MAClBC,WAAW,EAAE,KAAM;MACnBC,KAAK,EAAEhC,WAAY;MACnBU,WAAW,EAAEQ,eAAgB;MAC7Be,UAAU,EAAE,SAAZA,UAAUA,CAAGC,UAAU,EAAK;QACxB,IAAIjB,aAAa,CAACM,GAAG,CAACW,UAAU,CAACV,EAAE,CAAC,EAAE;UAClC,OAAOjB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAG2B,UAAU,CAAC;QACvC;QAEA,oBACIrC,IAAA,CAACH,cAAc;UACXwC,UAAU,EAAEA,UAAW;UACvBC,QAAQ,EAAErB,WAAW,CAACS,GAAG,CAACW,UAAU,CAACV,EAAE,CAAE;UACzCY,SAAS,EAAEpB,YAAY,CAACO,GAAG,CAACW,UAAU,CAACV,EAAE,CAAE;UAC3CvB,MAAM,EAAEA,MAAO;UACfE,QAAQ,EAAEA,QAAS;UACnBD,QAAQ,EAAEA,QAAS;UACnBO,SAAS,EAAEA;QAAU,CACxB,CAAC;MAEV;IAAE,GACEE,SAAS,CAChB;EAAC,CACA,CAAC;AAEf,CAAC","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;
@@ -127,6 +127,7 @@ var InteractiveAttachmentList = function InteractiveAttachmentList(props) {
127
127
  });
128
128
  });
129
129
  },
130
+ onItemClick: console.info,
130
131
  onEdit: function onEdit(attachment) {
131
132
  var _props$onEdit;
132
133
  (_props$onEdit = props.onEdit) === null || _props$onEdit === void 0 || _props$onEdit.call(props, attachment);
@@ -208,6 +209,7 @@ var EditableAttachmentList = function EditableAttachmentList(props) {
208
209
  }));
209
210
  }
210
211
  },
212
+ onItemClick: console.info,
211
213
  renderEditForm: function renderEditForm(attachment) {
212
214
  var isLink = typeof attachment.link === 'string';
213
215
  if (isLink) {
@@ -260,6 +262,7 @@ var SortableAttachmentList = function SortableAttachmentList(props) {
260
262
  setOrderedAttachments = _useState12[1];
261
263
  return /*#__PURE__*/_jsx(AttachmentList, _objectSpread(_objectSpread({}, props), {}, {
262
264
  attachments: orderedAttachments,
265
+ onItemClick: console.info,
263
266
  onSortEnd: function onSortEnd(_ref) {
264
267
  var _props$onSortEnd;
265
268
  var oldIndex = _ref.oldIndex,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Text","EditAttachmentItem","fn","AttachmentList","jsx","_jsx","attachments","id","name","link","meta","title","component","tags","parameters","layout","decorators","Story","style","width","height","children","args","onDelete","onEdit","Default","ChangeStates","wasAddedIds","wasEditedIds","Filterable","filterable","filterPlaceholder","filterItem","filter","attachment","toLocaleLowerCase","includes","InteractiveAttachmentList","props","_useState","_useState2","_slicedToArray","currentAttachments","setCurrentAttachments","_useState3","_useState4","editedIds","setEditedIds","_objectSpread","_props$onDelete","call","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","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","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","useState","Text","EditAttachmentItem","fn","AttachmentList","jsx","_jsx","attachments","id","name","link","meta","title","component","tags","parameters","layout","decorators","Story","style","width","height","children","args","onDelete","onEdit","Default","ChangeStates","wasAddedIds","wasEditedIds","Filterable","filterable","filterPlaceholder","filterItem","filter","attachment","toLocaleLowerCase","includes","InteractiveAttachmentList","props","_useState","_useState2","_slicedToArray","currentAttachments","setCurrentAttachments","_useState3","_useState4","editedIds","setEditedIds","_objectSpread","_props$onDelete","call","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","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","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,5 @@
1
+ export var INTERACITVE_SELECTOR = 'a, button, input, select, textarea, label, [role="button"], [role="link"], [role="menuitem"], [contenteditable="true"], [tabindex]:not([tabindex="-1"])';
2
+ export var isInteractiveTarget = function isInteractiveTarget(target) {
3
+ return target instanceof Element && Boolean(target.closest(INTERACITVE_SELECTOR));
4
+ };
5
+ // #sourceMappingURL=isInteractiveTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["INTERACITVE_SELECTOR","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":"AAAA,OAAO,IAAMA,oBAAoB,GAC7B,yJAAyJ;AAE7J,OAAO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,MAAsC,EAAK;EAC3E,OAAOA,MAAM,YAAYC,OAAO,IAAIC,OAAO,CAACF,MAAM,CAACG,OAAO,CAACL,oBAAoB,CAAC,CAAC;AACrF,CAAC","ignoreList":[]}
@@ -5,4 +5,8 @@
5
5
  display: flex;
6
6
  gap: var(--g-spacing-2);
7
7
  }
8
+ .qp-attachments__tab-list {
9
+ padding-left: var(--g-spacing-4);
10
+ padding-right: var(--g-spacing-4);
11
+ }
8
12
  /*# sourceMappingURL=Attachments.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["Attachments.scss"],"names":[],"mappings":"AACI;EACI,OAAA;AAAR;AAGI;EACI,aAAA;EACA,uBAAA;AADR","file":"Attachments.css","sourcesContent":[".qp-attachments {\n &__panel {\n flex: 1;\n }\n\n &__tab .g-tab__title {\n display: flex;\n gap: var(--g-spacing-2)\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["Attachments.scss"],"names":[],"mappings":"AACI;EACI,OAAA;AAAR;AAGI;EACI,aAAA;EACA,uBAAA;AADR;AAII;EACI,gCAAA;EACA,iCAAA;AAFR","file":"Attachments.css","sourcesContent":[".qp-attachments {\n &__panel {\n flex: 1;\n }\n\n &__tab .g-tab__title {\n display: flex;\n gap: var(--g-spacing-2)\n }\n\n &__tab-list {\n padding-left: var(--g-spacing-4);\n padding-right: var(--g-spacing-4);\n }\n}"],"sourceRoot":""}
@@ -14,9 +14,10 @@ export type AttachmentsProps = {
14
14
  attachmentListProps?: Pick<AttachmentListProps, 'className'>;
15
15
  attachments?: AttachItem[];
16
16
  deletedAttachments?: AttachItem[];
17
+ onItemClick?: AttachmentListProps<AttachItem>['onItemClick'];
17
18
  onChange?: (payload: {
18
19
  attachments: AttachItem[];
19
20
  deletedAttachments: AttachItem[];
20
21
  }) => void;
21
22
  };
22
- export declare const Attachments: ({ tokens, placeholderProps, attachmentListProps, onChange, attachments: customerAttachments, deletedAttachments: customerDeletedAttachments, }: AttachmentsProps) => React.JSX.Element;
23
+ export declare const Attachments: ({ tokens, placeholderProps, attachmentListProps, onChange, onItemClick, attachments: customerAttachments, deletedAttachments: customerDeletedAttachments, }: AttachmentsProps) => React.JSX.Element;
@@ -30,6 +30,7 @@ export var Attachments = function Attachments(_ref) {
30
30
  placeholderProps = _ref.placeholderProps,
31
31
  attachmentListProps = _ref.attachmentListProps,
32
32
  onChange = _ref.onChange,
33
+ onItemClick = _ref.onItemClick,
33
34
  customerAttachments = _ref.attachments,
34
35
  customerDeletedAttachments = _ref.deletedAttachments;
35
36
  var _useState = useState('Current'),
@@ -255,6 +256,7 @@ export var Attachments = function Attachments(_ref) {
255
256
  return setCurrentTab(tab);
256
257
  },
257
258
  children: [/*#__PURE__*/_jsxs(TabList, {
259
+ className: block('tab-list'),
258
260
  children: [/*#__PURE__*/_jsxs(Tab, {
259
261
  className: block('tab'),
260
262
  value: "Current",
@@ -299,6 +301,7 @@ export var Attachments = function Attachments(_ref) {
299
301
  onDelete: function onDelete(attach) {
300
302
  return handleDelete(attach.id);
301
303
  },
304
+ onItemClick: onItemClick,
302
305
  renderEditForm: function renderEditForm(attach) {
303
306
  var isLink = typeof attach.link === 'string';
304
307
  if (isLink) {
@@ -330,6 +333,9 @@ export var Attachments = function Attachments(_ref) {
330
333
  onAddFile: handleAddEmptyFile,
331
334
  onAddLink: handleAddEmptyLink
332
335
  }, placeholderProps)), Boolean(attachList.length) && /*#__PURE__*/_jsxs(Flex, {
336
+ spacing: {
337
+ px: 4
338
+ },
333
339
  gap: 2,
334
340
  children: [/*#__PURE__*/_jsxs(Button, {
335
341
  onClick: handleAddEmptyFile,
@@ -363,7 +369,8 @@ export var Attachments = function Attachments(_ref) {
363
369
  attachments: deletedAttachList,
364
370
  onRevert: function onRevert(attach) {
365
371
  return handleRevertDelete(attach.id);
366
- }
372
+ },
373
+ onItemClick: onItemClick
367
374
  }))
368
375
  })
369
376
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useRef","useState","Button","Flex","Icon","Tab","TabList","TabPanel","TabProvider","Text","AttachmentList","AttachmentListPlaceholder","EditAttachmentItem","createUuid","isObjectEqual","Plus","cn","i18n","jsx","_jsx","jsxs","_jsxs","block","Attachments","_ref","tokens","placeholderProps","attachmentListProps","onChange","customerAttachments","attachments","customerDeletedAttachments","deletedAttachments","_useState","_useState2","_slicedToArray","currentTab","setCurrentTab","_useState3","_useState4","innerAttachList","setInnerAttachList","_useState5","_useState6","innerDeletedAttachList","setInnerDeletedAttachList","_useState7","_useState8","editingIds","setEditingIds","_useState9","_useState0","wasAddedIds","setWasAddedIds","_useState1","_useState10","wasEdited","setWasEditedIds","attachList","deletedAttachList","attachCount","filter","a","isNew","length","defaultAttachList","getDefaultValuesForLink","linkId","_currentLink$name","_currentLink$link","_currentLink$token","currentLink","find","id","name","link","token","runAfterAttachAdded","attachId","newAttach","editedAttach","current","concat","_toConsumableArray","handleAddEmptyFile","patchAttachList","handleAddEmptyLink","handleAcceptFile","fileId","fileName","patchedFile","patchEditingIds","map","attach","handleAcceptLink","patchedLink","_objectSpread","handleCancelEdit","wasItNewAttach","some","handleEdit","editAttachId","handleDelete","deletedAttachmen","patchDeletedAttachList","handleDeleteAll","handleRevertDelete","revertAttach","className","direction","width","height","children","value","onUpdate","tab","variant","color","spacing","pt","wasEditedIds","onEdit","onDelete","renderEditForm","isLink","defaultLinkValues","type","onAccept","defaultValues","onCancel","defaultFileName","pathName","onAddFile","onAddLink","Boolean","gap","onClick","data","view","isDeleted","onRevert"],"sources":["Attachments.tsx"],"sourcesContent":["import React, {useMemo, useRef, useState} from 'react';\nimport {Button, Flex, Icon, Tab, TabList, TabPanel, TabProvider, Text} from '@gravity-ui/uikit';\nimport {AttachmentList, AttachmentListPlaceholder, EditAttachmentItem} from '../../components';\nimport {createUuid} from '../../helpers/createUuid';\nimport {isObjectEqual} from '../../helpers/isObjectEqual';\nimport {Plus} from '@gravity-ui/icons';\nimport type {\n AttachmentItemProps,\n AttachmentListPlaceholderProps,\n AttachmentListProps,\n EditLinkValues,\n} from '../../components';\nimport cn from 'bem-cn-lite';\n\nimport i18n from './i18n';\n\nimport './Attachments.scss';\n\ntype TabVariants = 'Current' | 'Deleted';\n\nexport type AttachItem = AttachmentItemProps['attachment'] & {token?: string; isNew?: boolean};\n\nexport type AttachmentsProps = {\n tokens?: {value: string; title: string}[];\n placeholderProps?: Omit<AttachmentListPlaceholderProps, 'onAddFile' | 'onAddLink'>;\n attachmentListProps?: Pick<AttachmentListProps, 'className'>;\n attachments?: AttachItem[];\n deletedAttachments?: AttachItem[];\n onChange?: (payload: {attachments: AttachItem[]; deletedAttachments: AttachItem[]}) => void;\n};\n\nconst block = cn('qp-attachments');\n\nexport const Attachments = ({\n tokens,\n placeholderProps,\n attachmentListProps,\n onChange,\n attachments: customerAttachments,\n deletedAttachments: customerDeletedAttachments,\n}: AttachmentsProps) => {\n const [currentTab, setCurrentTab] = useState<'Current' | 'Deleted'>('Current');\n\n const [innerAttachList, setInnerAttachList] = useState<AttachItem[]>(customerAttachments ?? []);\n const [innerDeletedAttachList, setInnerDeletedAttachList] = useState<AttachItem[]>(\n customerDeletedAttachments ?? [],\n );\n\n const [editingIds, setEditingIds] = useState<string[]>([]);\n const [wasAddedIds, setWasAddedIds] = useState<string[]>([]);\n const [wasEdited, setWasEditedIds] = useState<string[]>([]);\n\n const attachList = customerAttachments ?? innerAttachList;\n const deletedAttachList = customerDeletedAttachments ?? innerDeletedAttachList;\n\n const attachCount = useMemo(() => attachList.filter((a) => !a.isNew).length, [attachList]);\n\n const defaultAttachList = useRef(attachList);\n\n const getDefaultValuesForLink = (linkId: string) => {\n const currentLink = attachList.find((a) => a.id === linkId);\n return {\n name: currentLink?.name ?? '',\n link: currentLink?.link ?? '',\n token: currentLink?.token ?? '',\n };\n };\n\n const runAfterAttachAdded = (attachId: string, newAttach: AttachItem) => {\n const editedAttach = defaultAttachList.current.find((a) => a.id === attachId);\n\n if (!editedAttach) return;\n\n if (isObjectEqual(editedAttach, newAttach)) {\n setWasEditedIds(wasEdited.filter((id) => id !== attachId));\n return;\n }\n\n setWasEditedIds([...wasEdited, attachId]);\n };\n\n const handleAddEmptyFile = () => {\n const id = createUuid();\n\n const patchAttachList = [\n ...attachList.filter((a) => !a.isNew),\n {id, name: '', isNew: true},\n ];\n\n setInnerAttachList(patchAttachList);\n setWasAddedIds([...wasAddedIds, id]);\n setEditingIds([...editingIds, id]);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n };\n\n const handleAddEmptyLink = () => {\n const id = createUuid();\n\n const patchAttachList = [\n ...attachList.filter((a) => !a.isNew),\n {id, name: '', token: '', link: '', isNew: true},\n ];\n\n setInnerAttachList(patchAttachList);\n setWasAddedIds([...wasAddedIds, id]);\n setEditingIds([...editingIds, id]);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n };\n\n const handleAcceptFile = (fileId: string, fileName: string) => {\n const patchedFile = attachList.find((a) => a.id === fileId);\n if (!patchedFile) return;\n\n const patchEditingIds = editingIds.filter((id) => id !== fileId);\n const patchAttachList = attachList.map((attach) => {\n if (attach.id === fileId) return {id: fileId, name: fileName};\n return attach;\n });\n\n setEditingIds(patchEditingIds);\n setInnerAttachList(patchAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n\n runAfterAttachAdded(fileId, {id: fileId, name: fileName});\n };\n\n const handleAcceptLink = (linkId: string, link: EditLinkValues) => {\n const patchedLink = attachList.find((a) => a.id === linkId);\n if (!patchedLink) return;\n\n const patchEditingIds = editingIds.filter((id) => id !== linkId);\n const patchAttachList = attachList.map((attach) => {\n if (attach.id === linkId) return {id: linkId, ...link};\n return attach;\n });\n\n setEditingIds(patchEditingIds);\n setInnerAttachList(patchAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n\n runAfterAttachAdded(linkId, {id: linkId, ...link});\n };\n\n const handleCancelEdit = (fileId: string) => {\n const patchEditingIds = editingIds.filter((id) => id !== fileId);\n const patchAttachList = attachList.filter((a) => !a.isNew);\n\n const wasItNewAttach = attachList.some((a) => a.isNew);\n if (wasItNewAttach) {\n setWasAddedIds(wasAddedIds.filter((id) => id !== fileId));\n }\n\n setInnerAttachList(patchAttachList);\n setEditingIds(patchEditingIds);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n };\n\n const handleEdit = (editAttachId: string) => {\n const patchEditingIds = [...editingIds, editAttachId];\n\n setEditingIds(patchEditingIds);\n };\n\n const handleDelete = (attachId: string) => {\n const deletedAttachmen = attachList.find((a) => a.id === attachId);\n\n if (!deletedAttachmen) return;\n\n const patchAttachList = attachList.filter((a) => a.id !== attachId);\n const patchDeletedAttachList = [...deletedAttachList, deletedAttachmen];\n\n setInnerAttachList(patchAttachList);\n setInnerDeletedAttachList(patchDeletedAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: patchDeletedAttachList,\n });\n };\n\n const handleDeleteAll = () => {\n const patchAttachList: never[] = [];\n const patchDeletedAttachList = [\n ...deletedAttachList,\n ...attachList.filter((a) => !a.isNew),\n ];\n\n setInnerAttachList(patchAttachList);\n setInnerDeletedAttachList(patchDeletedAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: patchDeletedAttachList,\n });\n };\n\n const handleRevertDelete = (attachId: string) => {\n const revertAttach = deletedAttachList.find((a) => a.id === attachId);\n\n if (!revertAttach) return;\n\n const patchAttachList = [...attachList, revertAttach];\n const patchDeletedAttachList = deletedAttachList.filter((a) => a.id !== attachId);\n\n setInnerAttachList(patchAttachList);\n setInnerDeletedAttachList(patchDeletedAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: patchDeletedAttachList,\n });\n };\n\n return (\n <Flex className={block()} direction=\"column\" width=\"100%\" height=\"100%\">\n <TabProvider value={currentTab} onUpdate={(tab) => setCurrentTab(tab as TabVariants)}>\n <TabList>\n <Tab className={block('tab')} value=\"Current\">\n <Text variant=\"body-1\">Current</Text>\n <Text color=\"hint\" variant=\"body-1\">\n {attachCount}\n </Text>\n </Tab>\n <Tab className={block('tab')} value=\"Deleted\">\n <Text variant=\"body-1\">Deleted</Text>\n <Text color=\"hint\" variant=\"body-1\">\n {deletedAttachList.length}\n </Text>\n </Tab>\n </TabList>\n\n <TabPanel className={block('panel')} value=\"Current\">\n <Flex spacing={{pt: 3}} direction=\"column\" width=\"100%\" height=\"100%\">\n {attachList.length ? (\n <AttachmentList\n {...attachmentListProps}\n attachments={attachList}\n wasAddedIds={wasAddedIds}\n wasEditedIds={wasEdited}\n editingIds={editingIds}\n onEdit={(attach) => handleEdit(attach.id)}\n onDelete={(attach) => handleDelete(attach.id)}\n renderEditForm={(attach) => {\n const isLink = typeof attach.link === 'string';\n\n if (isLink) {\n const defaultLinkValues = getDefaultValuesForLink(\n attach.id,\n );\n\n return (\n <EditAttachmentItem\n type=\"link\"\n onAccept={(link) =>\n handleAcceptLink(attach.id, link)\n }\n defaultValues={defaultLinkValues}\n tokens={tokens}\n onCancel={() => handleCancelEdit(attach.id)}\n />\n );\n }\n\n return (\n <EditAttachmentItem\n type=\"file\"\n defaultFileName={attach.name}\n onAccept={(pathName) =>\n handleAcceptFile(attach.id, pathName)\n }\n onCancel={() => handleCancelEdit(attach.id)}\n />\n );\n }}\n />\n ) : (\n <AttachmentListPlaceholder\n onAddFile={handleAddEmptyFile}\n onAddLink={handleAddEmptyLink}\n {...placeholderProps}\n />\n )}\n {Boolean(attachList.length) && (\n <Flex gap={2}>\n <Button onClick={handleAddEmptyFile}>\n <Icon data={Plus} />\n {i18n('action_add-file')}\n </Button>\n\n <Button view=\"outlined\" onClick={handleAddEmptyLink}>\n <Icon data={Plus} />\n {i18n('action_add-link')}\n </Button>\n\n <Button view=\"flat\" onClick={handleDeleteAll}>\n {i18n('action_remove-all')}\n </Button>\n </Flex>\n )}\n </Flex>\n </TabPanel>\n\n <TabPanel className={block('panel')} value=\"Deleted\">\n <Flex spacing={{pt: 3}} width=\"100%\" height=\"100%\">\n <AttachmentList\n {...attachmentListProps}\n isDeleted\n attachments={deletedAttachList}\n onRevert={(attach) => handleRevertDelete(attach.id)}\n />\n </Flex>\n </TabPanel>\n </TabProvider>\n </Flex>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","useRef","useState","Button","Flex","Icon","Tab","TabList","TabPanel","TabProvider","Text","AttachmentList","AttachmentListPlaceholder","EditAttachmentItem","createUuid","isObjectEqual","Plus","cn","i18n","jsx","_jsx","jsxs","_jsxs","block","Attachments","_ref","tokens","placeholderProps","attachmentListProps","onChange","onItemClick","customerAttachments","attachments","customerDeletedAttachments","deletedAttachments","_useState","_useState2","_slicedToArray","currentTab","setCurrentTab","_useState3","_useState4","innerAttachList","setInnerAttachList","_useState5","_useState6","innerDeletedAttachList","setInnerDeletedAttachList","_useState7","_useState8","editingIds","setEditingIds","_useState9","_useState0","wasAddedIds","setWasAddedIds","_useState1","_useState10","wasEdited","setWasEditedIds","attachList","deletedAttachList","attachCount","filter","a","isNew","length","defaultAttachList","getDefaultValuesForLink","linkId","_currentLink$name","_currentLink$link","_currentLink$token","currentLink","find","id","name","link","token","runAfterAttachAdded","attachId","newAttach","editedAttach","current","concat","_toConsumableArray","handleAddEmptyFile","patchAttachList","handleAddEmptyLink","handleAcceptFile","fileId","fileName","patchedFile","patchEditingIds","map","attach","handleAcceptLink","patchedLink","_objectSpread","handleCancelEdit","wasItNewAttach","some","handleEdit","editAttachId","handleDelete","deletedAttachmen","patchDeletedAttachList","handleDeleteAll","handleRevertDelete","revertAttach","className","direction","width","height","children","value","onUpdate","tab","variant","color","spacing","pt","wasEditedIds","onEdit","onDelete","renderEditForm","isLink","defaultLinkValues","type","onAccept","defaultValues","onCancel","defaultFileName","pathName","onAddFile","onAddLink","Boolean","px","gap","onClick","data","view","isDeleted","onRevert"],"sources":["Attachments.tsx"],"sourcesContent":["import React, {useMemo, useRef, useState} from 'react';\nimport {Button, Flex, Icon, Tab, TabList, TabPanel, TabProvider, Text} from '@gravity-ui/uikit';\nimport {AttachmentList, AttachmentListPlaceholder, EditAttachmentItem} from '../../components';\nimport {createUuid} from '../../helpers/createUuid';\nimport {isObjectEqual} from '../../helpers/isObjectEqual';\nimport {Plus} from '@gravity-ui/icons';\nimport type {\n AttachmentItemProps,\n AttachmentListPlaceholderProps,\n AttachmentListProps,\n EditLinkValues,\n} from '../../components';\nimport cn from 'bem-cn-lite';\n\nimport i18n from './i18n';\n\nimport './Attachments.scss';\n\ntype TabVariants = 'Current' | 'Deleted';\n\nexport type AttachItem = AttachmentItemProps['attachment'] & {token?: string; isNew?: boolean};\n\nexport type AttachmentsProps = {\n tokens?: {value: string; title: string}[];\n placeholderProps?: Omit<AttachmentListPlaceholderProps, 'onAddFile' | 'onAddLink'>;\n attachmentListProps?: Pick<AttachmentListProps, 'className'>;\n attachments?: AttachItem[];\n deletedAttachments?: AttachItem[];\n onItemClick?: AttachmentListProps<AttachItem>['onItemClick'];\n onChange?: (payload: {attachments: AttachItem[]; deletedAttachments: AttachItem[]}) => void;\n};\n\nconst block = cn('qp-attachments');\n\nexport const Attachments = ({\n tokens,\n placeholderProps,\n attachmentListProps,\n onChange,\n onItemClick,\n attachments: customerAttachments,\n deletedAttachments: customerDeletedAttachments,\n}: AttachmentsProps) => {\n const [currentTab, setCurrentTab] = useState<'Current' | 'Deleted'>('Current');\n\n const [innerAttachList, setInnerAttachList] = useState<AttachItem[]>(customerAttachments ?? []);\n const [innerDeletedAttachList, setInnerDeletedAttachList] = useState<AttachItem[]>(\n customerDeletedAttachments ?? [],\n );\n\n const [editingIds, setEditingIds] = useState<string[]>([]);\n const [wasAddedIds, setWasAddedIds] = useState<string[]>([]);\n const [wasEdited, setWasEditedIds] = useState<string[]>([]);\n\n const attachList = customerAttachments ?? innerAttachList;\n const deletedAttachList = customerDeletedAttachments ?? innerDeletedAttachList;\n\n const attachCount = useMemo(() => attachList.filter((a) => !a.isNew).length, [attachList]);\n\n const defaultAttachList = useRef(attachList);\n\n const getDefaultValuesForLink = (linkId: string) => {\n const currentLink = attachList.find((a) => a.id === linkId);\n return {\n name: currentLink?.name ?? '',\n link: currentLink?.link ?? '',\n token: currentLink?.token ?? '',\n };\n };\n\n const runAfterAttachAdded = (attachId: string, newAttach: AttachItem) => {\n const editedAttach = defaultAttachList.current.find((a) => a.id === attachId);\n\n if (!editedAttach) return;\n\n if (isObjectEqual(editedAttach, newAttach)) {\n setWasEditedIds(wasEdited.filter((id) => id !== attachId));\n return;\n }\n\n setWasEditedIds([...wasEdited, attachId]);\n };\n\n const handleAddEmptyFile = () => {\n const id = createUuid();\n\n const patchAttachList = [\n ...attachList.filter((a) => !a.isNew),\n {id, name: '', isNew: true},\n ];\n\n setInnerAttachList(patchAttachList);\n setWasAddedIds([...wasAddedIds, id]);\n setEditingIds([...editingIds, id]);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n };\n\n const handleAddEmptyLink = () => {\n const id = createUuid();\n\n const patchAttachList = [\n ...attachList.filter((a) => !a.isNew),\n {id, name: '', token: '', link: '', isNew: true},\n ];\n\n setInnerAttachList(patchAttachList);\n setWasAddedIds([...wasAddedIds, id]);\n setEditingIds([...editingIds, id]);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n };\n\n const handleAcceptFile = (fileId: string, fileName: string) => {\n const patchedFile = attachList.find((a) => a.id === fileId);\n if (!patchedFile) return;\n\n const patchEditingIds = editingIds.filter((id) => id !== fileId);\n const patchAttachList = attachList.map((attach) => {\n if (attach.id === fileId) return {id: fileId, name: fileName};\n return attach;\n });\n\n setEditingIds(patchEditingIds);\n setInnerAttachList(patchAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n\n runAfterAttachAdded(fileId, {id: fileId, name: fileName});\n };\n\n const handleAcceptLink = (linkId: string, link: EditLinkValues) => {\n const patchedLink = attachList.find((a) => a.id === linkId);\n if (!patchedLink) return;\n\n const patchEditingIds = editingIds.filter((id) => id !== linkId);\n const patchAttachList = attachList.map((attach) => {\n if (attach.id === linkId) return {id: linkId, ...link};\n return attach;\n });\n\n setEditingIds(patchEditingIds);\n setInnerAttachList(patchAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n\n runAfterAttachAdded(linkId, {id: linkId, ...link});\n };\n\n const handleCancelEdit = (fileId: string) => {\n const patchEditingIds = editingIds.filter((id) => id !== fileId);\n const patchAttachList = attachList.filter((a) => !a.isNew);\n\n const wasItNewAttach = attachList.some((a) => a.isNew);\n if (wasItNewAttach) {\n setWasAddedIds(wasAddedIds.filter((id) => id !== fileId));\n }\n\n setInnerAttachList(patchAttachList);\n setEditingIds(patchEditingIds);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: deletedAttachList,\n });\n };\n\n const handleEdit = (editAttachId: string) => {\n const patchEditingIds = [...editingIds, editAttachId];\n\n setEditingIds(patchEditingIds);\n };\n\n const handleDelete = (attachId: string) => {\n const deletedAttachmen = attachList.find((a) => a.id === attachId);\n\n if (!deletedAttachmen) return;\n\n const patchAttachList = attachList.filter((a) => a.id !== attachId);\n const patchDeletedAttachList = [...deletedAttachList, deletedAttachmen];\n\n setInnerAttachList(patchAttachList);\n setInnerDeletedAttachList(patchDeletedAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: patchDeletedAttachList,\n });\n };\n\n const handleDeleteAll = () => {\n const patchAttachList: never[] = [];\n const patchDeletedAttachList = [\n ...deletedAttachList,\n ...attachList.filter((a) => !a.isNew),\n ];\n\n setInnerAttachList(patchAttachList);\n setInnerDeletedAttachList(patchDeletedAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: patchDeletedAttachList,\n });\n };\n\n const handleRevertDelete = (attachId: string) => {\n const revertAttach = deletedAttachList.find((a) => a.id === attachId);\n\n if (!revertAttach) return;\n\n const patchAttachList = [...attachList, revertAttach];\n const patchDeletedAttachList = deletedAttachList.filter((a) => a.id !== attachId);\n\n setInnerAttachList(patchAttachList);\n setInnerDeletedAttachList(patchDeletedAttachList);\n\n onChange?.({\n attachments: patchAttachList,\n deletedAttachments: patchDeletedAttachList,\n });\n };\n\n return (\n <Flex className={block()} direction=\"column\" width=\"100%\" height=\"100%\">\n <TabProvider value={currentTab} onUpdate={(tab) => setCurrentTab(tab as TabVariants)}>\n <TabList className={block('tab-list')}>\n <Tab className={block('tab')} value=\"Current\">\n <Text variant=\"body-1\">Current</Text>\n <Text color=\"hint\" variant=\"body-1\">\n {attachCount}\n </Text>\n </Tab>\n <Tab className={block('tab')} value=\"Deleted\">\n <Text variant=\"body-1\">Deleted</Text>\n <Text color=\"hint\" variant=\"body-1\">\n {deletedAttachList.length}\n </Text>\n </Tab>\n </TabList>\n\n <TabPanel className={block('panel')} value=\"Current\">\n <Flex spacing={{pt: 3}} direction=\"column\" width=\"100%\" height=\"100%\">\n {attachList.length ? (\n <AttachmentList\n {...attachmentListProps}\n attachments={attachList}\n wasAddedIds={wasAddedIds}\n wasEditedIds={wasEdited}\n editingIds={editingIds}\n onEdit={(attach) => handleEdit(attach.id)}\n onDelete={(attach) => handleDelete(attach.id)}\n onItemClick={onItemClick}\n renderEditForm={(attach) => {\n const isLink = typeof attach.link === 'string';\n\n if (isLink) {\n const defaultLinkValues = getDefaultValuesForLink(\n attach.id,\n );\n\n return (\n <EditAttachmentItem\n type=\"link\"\n onAccept={(link) =>\n handleAcceptLink(attach.id, link)\n }\n defaultValues={defaultLinkValues}\n tokens={tokens}\n onCancel={() => handleCancelEdit(attach.id)}\n />\n );\n }\n\n return (\n <EditAttachmentItem\n type=\"file\"\n defaultFileName={attach.name}\n onAccept={(pathName) =>\n handleAcceptFile(attach.id, pathName)\n }\n onCancel={() => handleCancelEdit(attach.id)}\n />\n );\n }}\n />\n ) : (\n <AttachmentListPlaceholder\n onAddFile={handleAddEmptyFile}\n onAddLink={handleAddEmptyLink}\n {...placeholderProps}\n />\n )}\n {Boolean(attachList.length) && (\n <Flex spacing={{px: 4}} gap={2}>\n <Button onClick={handleAddEmptyFile}>\n <Icon data={Plus} />\n {i18n('action_add-file')}\n </Button>\n\n <Button view=\"outlined\" onClick={handleAddEmptyLink}>\n <Icon data={Plus} />\n {i18n('action_add-link')}\n </Button>\n\n <Button view=\"flat\" onClick={handleDeleteAll}>\n {i18n('action_remove-all')}\n </Button>\n </Flex>\n )}\n </Flex>\n </TabPanel>\n\n <TabPanel className={block('panel')} value=\"Deleted\">\n <Flex spacing={{pt: 3}} width=\"100%\" height=\"100%\">\n <AttachmentList\n {...attachmentListProps}\n isDeleted\n attachments={deletedAttachList}\n onRevert={(attach) => handleRevertDelete(attach.id)}\n onItemClick={onItemClick}\n />\n </Flex>\n </TabPanel>\n </TabProvider>\n </Flex>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -7,4 +7,9 @@
7
7
  display: flex;
8
8
  gap: var(--g-spacing-2)
9
9
  }
10
+
11
+ &__tab-list {
12
+ padding-left: var(--g-spacing-4);
13
+ padding-right: var(--g-spacing-4);
14
+ }
10
15
  }
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { StoryObj } from '@storybook/react';
3
3
  declare const meta: {
4
4
  title: string;
5
- component: ({ tokens, placeholderProps, attachmentListProps, onChange, attachments: customerAttachments, deletedAttachments: customerDeletedAttachments, }: import("./Attachments").AttachmentsProps) => React.JSX.Element;
5
+ component: ({ tokens, placeholderProps, attachmentListProps, onChange, onItemClick, attachments: customerAttachments, deletedAttachments: customerDeletedAttachments, }: import("./Attachments").AttachmentsProps) => React.JSX.Element;
6
6
  tags: string[];
7
7
  parameters: {
8
8
  layout: string;
@@ -16,6 +16,7 @@ declare const meta: {
16
16
  attachmentListProps?: Pick<import("../..").AttachmentListProps, "className"> | undefined;
17
17
  attachments?: import("./Attachments").AttachItem[] | undefined;
18
18
  deletedAttachments?: import("./Attachments").AttachItem[] | undefined;
19
+ onItemClick?: ((item: import("@gravity-ui/uikit").ListItemData<import("./Attachments").AttachItem>, index: number, fromKeyboard?: boolean, event?: React.MouseEvent<HTMLDivElement, MouseEvent> | React.KeyboardEvent<HTMLElement>) => void) | undefined;
19
20
  onChange?: ((payload: {
20
21
  attachments: import("./Attachments").AttachItem[];
21
22
  deletedAttachments: import("./Attachments").AttachItem[];