@gravity-ui/querieskit 1.6.0 → 1.8.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 (82) hide show
  1. package/README.md +88 -3
  2. package/build/cjs/components/Breadcrumbs/Breadcrumbs.d.ts +2 -1
  3. package/build/cjs/components/Breadcrumbs/Breadcrumbs.js +19 -6
  4. package/build/cjs/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  5. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js +3 -1
  6. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -1
  7. package/build/cjs/modules/NavigationDetail/NavigationDetail.d.ts +3 -1
  8. package/build/cjs/modules/NavigationDetail/NavigationDetail.js +4 -0
  9. package/build/cjs/modules/NavigationDetail/NavigationDetail.js.map +1 -1
  10. package/build/cjs/modules/NavigationHeader/NavigationHeader.d.ts +3 -1
  11. package/build/cjs/modules/NavigationHeader/NavigationHeader.js +7 -1
  12. package/build/cjs/modules/NavigationHeader/NavigationHeader.js.map +1 -1
  13. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.d.ts +3 -2
  14. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.js +2 -1
  15. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.js.map +1 -1
  16. package/build/cjs/modules/NavigationItemsList/internal/useParentRow.d.ts +1 -1
  17. package/build/cjs/modules/NavigationItemsList/internal/useParentRow.js +2 -1
  18. package/build/cjs/modules/NavigationItemsList/internal/useParentRow.js.map +1 -1
  19. package/build/cjs/modules/TutorialRow/TutorialRow.d.ts +3 -1
  20. package/build/cjs/modules/TutorialRow/TutorialRow.js +3 -1
  21. package/build/cjs/modules/TutorialRow/TutorialRow.js.map +1 -1
  22. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.d.ts +3 -1
  23. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js +3 -1
  24. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
  25. package/build/cjs/types/navigation.d.ts +11 -0
  26. package/build/cjs/types/navigation.js.map +1 -1
  27. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.d.ts +3 -2
  28. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.js +8 -0
  29. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.js.map +1 -1
  30. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.stories.d.ts +3 -0
  31. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.stories.js +166 -1
  32. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.stories.js.map +1 -1
  33. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.d.ts +1 -1
  34. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js +6 -3
  35. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
  36. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.d.ts +7 -2
  37. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js +13 -3
  38. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  39. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.d.ts +5 -0
  40. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.js +244 -1
  41. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.js.map +1 -1
  42. package/build/esm/components/Breadcrumbs/Breadcrumbs.d.ts +2 -1
  43. package/build/esm/components/Breadcrumbs/Breadcrumbs.js +19 -6
  44. package/build/esm/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  45. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js +3 -1
  46. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -1
  47. package/build/esm/modules/NavigationDetail/NavigationDetail.d.ts +3 -1
  48. package/build/esm/modules/NavigationDetail/NavigationDetail.js +4 -0
  49. package/build/esm/modules/NavigationDetail/NavigationDetail.js.map +1 -1
  50. package/build/esm/modules/NavigationHeader/NavigationHeader.d.ts +3 -1
  51. package/build/esm/modules/NavigationHeader/NavigationHeader.js +7 -1
  52. package/build/esm/modules/NavigationHeader/NavigationHeader.js.map +1 -1
  53. package/build/esm/modules/NavigationItemsList/NavigationItemsList.d.ts +3 -2
  54. package/build/esm/modules/NavigationItemsList/NavigationItemsList.js +2 -1
  55. package/build/esm/modules/NavigationItemsList/NavigationItemsList.js.map +1 -1
  56. package/build/esm/modules/NavigationItemsList/internal/useParentRow.d.ts +1 -1
  57. package/build/esm/modules/NavigationItemsList/internal/useParentRow.js +2 -1
  58. package/build/esm/modules/NavigationItemsList/internal/useParentRow.js.map +1 -1
  59. package/build/esm/modules/TutorialRow/TutorialRow.d.ts +3 -1
  60. package/build/esm/modules/TutorialRow/TutorialRow.js +3 -1
  61. package/build/esm/modules/TutorialRow/TutorialRow.js.map +1 -1
  62. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.d.ts +3 -1
  63. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js +3 -1
  64. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
  65. package/build/esm/types/navigation.d.ts +11 -0
  66. package/build/esm/types/navigation.js.map +1 -1
  67. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.d.ts +3 -2
  68. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.js +8 -0
  69. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.js.map +1 -1
  70. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.stories.d.ts +3 -0
  71. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.stories.js +166 -1
  72. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.stories.js.map +1 -1
  73. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.d.ts +1 -1
  74. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js +6 -3
  75. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
  76. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.d.ts +7 -2
  77. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js +13 -3
  78. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  79. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.d.ts +5 -0
  80. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.js +244 -1
  81. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.js.map +1 -1
  82. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","QueriesNavigation","createNavigationDetailResolver","createTableDetailConfig","action","mockLoadPathSuggestions","FileArrowRightOutIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","ArrowUpRightFromSquareIcon","CodeIcon","GearIcon","Flex","Icon","Label","Text","ClusterRow","NavigationItemRow","SCHEMA_COLUMNS","PREVIEW_COLUMNS","PREVIEW_ROWS","META_GROUPS","VIEW_COLUMNS","makeViewRows","jsx","jsxs","_jsxs","meta","title","component","tags","parameters","layout","onBreadcrumbsUpdate","logAction","defaultActions","id","content","data","size","onClick","location","CLUSTERS","color","backgroundColor","description","ITEM_NAMES","kind","hasChildren","disabled","getPathDepth","path","split","filter","Boolean","length","getItemsForPath","sort","arguments","undefined","concat","_ref","_ref2","leftTitle","rightTitle","localeCompare","map","_ref3","TABLE_VIEW_SECTIONS_WITH_ACTIONS","columns","rows","loaded","defaultExpanded","actions","section","useLocationState","initial","_useState","_useState2","_slicedToArray","setLocation","onUpdate","next","useNavigationStoryState","_useLocationState","_useState3","_useState4","setSort","items","ClustersToItemsStory","_useNavigationStorySt","cluster","_useState5","_useState6","openedItem","setOpenedItem","resolveDetail","table","resolveSchema","resolvePreview","resolveMeta","groups","resolveView","sections","style","header","onLoadSuggestions","clusters","value","detail","onItemOpen","item","onClose","resolve","onClusterClick","onItemClick","LoadingStory","_useLocationState2","listState","loading","EmptyStory","_useLocationState3","EmptySearchStory","_useLocationState4","_useState7","_useState8","search","setSearch","ErrorStory","_useLocationState5","error","CUSTOM_CLUSTERS","_cluster$description","env","getCustomItemsForPath","index","owner","CustomRowsStory","_useLocationState6","_useState9","_useState0","renderClusterItem","_ref4","alignItems","gap","padding","theme","renderNavigationItem","_ref5","isParentRow","variant","CustomDetailResolverStory","_useLocationState7","_useState1","_useState10","file","tabs","hasSearch","ClustersToItems","render","Loading","Empty","EmptySearch","Error","CustomRows","CustomDetailResolver"],"sources":["QueriesNavigation.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {QueriesNavigation} from './QueriesNavigation';\nimport {createNavigationDetailResolver} from './helpers/createNavigationDetailResolver';\nimport {createTableDetailConfig} from './helpers/createTableDetailConfig';\nimport {action} from 'storybook/actions';\nimport {\n NavigationCluster,\n NavigationHeaderAction,\n NavigationItem,\n NavigationLocation,\n NavigationSortOrder,\n NavigationViewSection,\n} from '../../types/navigation';\nimport {mockLoadPathSuggestions} from '../../components/PathEditor/PathEditor.stories.helpers';\nimport FileArrowRightOutIcon from '@gravity-ui/icons/svgs/file-arrow-right-out.svg';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport CodeIcon from '@gravity-ui/icons/svgs/code.svg';\nimport GearIcon from '@gravity-ui/icons/svgs/gear.svg';\nimport {Flex, Icon, Label, Text} from '@gravity-ui/uikit';\nimport {ClusterRow, NavigationItemRow} from '../../components';\nimport {SCHEMA_COLUMNS} from '../../modules/NavigationSchema/story/mockData';\nimport {PREVIEW_COLUMNS, PREVIEW_ROWS} from '../../modules/NavigationPreview/story/mockData';\nimport {META_GROUPS} from '../../modules/NavigationMeta/story/mockData';\nimport {VIEW_COLUMNS, makeViewRows} from '../../modules/NavigationView/story/mockData';\n\nconst meta: Meta<typeof QueriesNavigation> = {\n title: 'Widgets/QueriesNavigation',\n component: QueriesNavigation,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n};\n\nconst onBreadcrumbsUpdate = action('onUpdate');\nconst logAction = action('actionClick');\n\nconst defaultActions: NavigationHeaderAction[] = [\n {\n id: 'paste',\n title: 'Paste path',\n content: <Icon data={FileArrowRightOutIcon} size={16} />,\n onClick: (location) => logAction('Paste', location),\n },\n {\n id: 'open',\n title: 'Open in new tab',\n content: <Icon data={ArrowUpRightFromSquareIcon} size={16} />,\n onClick: (location) => logAction('Open', location),\n },\n];\n\nconst CLUSTERS: NavigationCluster[] = [\n {\n id: 'northstar',\n title: 'Northstar',\n color: 'white',\n backgroundColor: 'rgba(218, 68, 83, 1)',\n description: 'Production',\n },\n {\n id: 'cedar',\n title: 'Cedar',\n color: 'white',\n backgroundColor: 'rgba(127, 130, 133, 1)',\n description: 'Production',\n },\n {\n id: 'sequoia',\n title: 'Sequoia',\n color: 'white',\n backgroundColor: 'rgba(215, 112, 173, 1)',\n description: 'Production',\n },\n {\n id: 'pioneer-test',\n title: 'Pioneer-Test',\n color: 'white',\n backgroundColor: 'rgba(150, 122, 220, 1)',\n description: 'Testing',\n },\n {\n id: 'orbit',\n title: 'Orbit',\n color: 'white',\n backgroundColor: 'rgba(233, 87, 63, 1)',\n description: 'Production',\n },\n {\n id: 'lighthouse',\n title: 'Lighthouse',\n color: 'white',\n backgroundColor: 'rgba(67, 68, 69, 1)',\n description: 'Production',\n },\n {\n id: 'northstar-gnd',\n title: 'Northstar-GND',\n color: 'white',\n backgroundColor: 'rgba(140, 193, 82, 1)',\n description: 'tesdting',\n },\n {\n id: 'harbor',\n title: 'Harbor',\n color: 'white',\n backgroundColor: 'rgba(55, 188, 155, 1)',\n description: 'Production',\n },\n {\n id: 'cedar-gnd',\n title: 'Cedar-GND',\n color: 'white',\n backgroundColor: 'rgba(140, 193, 82, 1)',\n description: 'Prestable',\n },\n];\n\nconst ITEM_NAMES: Array<Pick<NavigationItem, 'title' | 'kind' | 'hasChildren' | 'disabled'>> = [\n {title: 'abcdapter', kind: 'folder', hasChildren: true},\n {title: 'access_control_object', kind: 'file'},\n {title: 'account_tree', kind: 'folder', hasChildren: true, disabled: true},\n {title: 'cell_balancers', kind: 'folder', hasChildren: true},\n {title: 'clusters', kind: 'folder', hasChildren: true},\n {title: 'doctors_table', kind: 'table'},\n];\n\nconst getPathDepth = (path: string | undefined): number =>\n (path ?? '').split('/').filter(Boolean).length;\n\nconst getItemsForPath = (\n path: string | undefined,\n sort: NavigationSortOrder = 'asc',\n): NavigationItem[] => {\n if (getPathDepth(path) > 1) {\n return [];\n }\n\n return [...ITEM_NAMES]\n .sort(({title: leftTitle}, {title: rightTitle}) =>\n sort === 'asc'\n ? leftTitle.localeCompare(rightTitle)\n : rightTitle.localeCompare(leftTitle),\n )\n .map(({title, kind, hasChildren, disabled}) => ({\n path: `${path ?? ''}/${title}`,\n title,\n kind,\n hasChildren,\n disabled,\n }));\n};\n\nexport default meta;\ntype Story = StoryObj<typeof QueriesNavigation>;\n\nconst TABLE_VIEW_SECTIONS_WITH_ACTIONS: NavigationViewSection[] = [\n {\n id: 'general',\n title: 'General',\n columns: VIEW_COLUMNS,\n rows: makeViewRows(2),\n loaded: true,\n defaultExpanded: true,\n actions: [\n {\n id: 'code',\n title: 'Show code',\n content: <Icon data={CodeIcon} size={14} />,\n onClick: (section) => logAction('ViewShowCode', section.id),\n },\n {\n id: 'settings',\n title: 'Settings',\n content: <Icon data={GearIcon} size={14} />,\n onClick: (section) => logAction('ViewSettings', section.id),\n },\n ],\n },\n {\n id: 'attributes',\n title: 'Attributes',\n columns: VIEW_COLUMNS,\n rows: makeViewRows(2),\n loaded: true,\n },\n];\n\nconst useLocationState = (initial: NavigationLocation) => {\n const [location, setLocation] = useState<NavigationLocation>(initial);\n const onUpdate = (next: NavigationLocation) => {\n onBreadcrumbsUpdate(next);\n setLocation(next);\n };\n return {location, onUpdate};\n};\n\nconst useNavigationStoryState = (initial: NavigationLocation) => {\n const {location, onUpdate} = useLocationState(initial);\n const [sort, setSort] = useState<NavigationSortOrder>('asc');\n const items = getItemsForPath(location.path, sort);\n\n return {location, onUpdate, sort, setSort, items};\n};\n\nconst ClustersToItemsStory = () => {\n const {location, onUpdate, sort, setSort, items} = useNavigationStoryState({\n cluster: undefined,\n path: undefined,\n });\n const [openedItem, setOpenedItem] = useState<NavigationItem | undefined>(undefined);\n\n const resolveDetail = createNavigationDetailResolver({\n table: createTableDetailConfig({\n resolveSchema: () => ({columns: SCHEMA_COLUMNS, loaded: true}),\n resolvePreview: () => ({\n columns: PREVIEW_COLUMNS,\n rows: PREVIEW_ROWS,\n loaded: true,\n }),\n resolveMeta: () => ({groups: META_GROUPS, loaded: true}),\n resolveView: () => ({sections: TABLE_VIEW_SECTIONS_WITH_ACTIONS, loaded: true}),\n }),\n });\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={CLUSTERS}\n items={items}\n sort={{value: sort, onUpdate: setSort}}\n detail={{\n openedItem,\n onItemOpen: (item) => {\n action('onItemOpen')(item);\n setOpenedItem(item);\n },\n onClose: () => setOpenedItem(undefined),\n resolve: resolveDetail,\n }}\n onClusterClick={action('onClusterClick')}\n onItemClick={action('onItemClick')}\n />\n </div>\n );\n};\n\nconst LoadingStory = () => {\n const {location, onUpdate} = useLocationState({cluster: undefined, path: undefined});\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={[]}\n listState={{loading: true}}\n />\n </div>\n );\n};\n\nconst EmptyStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home/empty'});\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n items={[]}\n />\n </div>\n );\n};\n\nconst EmptySearchStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home'});\n const [search, setSearch] = useState('no-such-item');\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n items={[]}\n search={{value: search, onUpdate: setSearch}}\n />\n </div>\n );\n};\n\nconst ErrorStory = () => {\n const {location, onUpdate} = useLocationState({cluster: undefined, path: undefined});\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={[]}\n listState={{error: 'Custom load error message'}}\n />\n </div>\n );\n};\n\ntype CustomCluster = NavigationCluster & {env: string};\ntype CustomItem = NavigationItem & {owner?: string};\n\nconst CUSTOM_CLUSTERS: CustomCluster[] = CLUSTERS.map((cluster) => ({\n ...cluster,\n env: cluster.description ?? 'Unknown',\n}));\n\nconst getCustomItemsForPath = (path: string | undefined, sort: NavigationSortOrder): CustomItem[] =>\n getItemsForPath(path, sort).map((item, index) => ({\n ...item,\n owner: index % 2 === 0 ? 'robot' : 'user',\n }));\n\nconst CustomRowsStory = () => {\n const {location, onUpdate} = useLocationState({cluster: undefined, path: undefined});\n const [sort, setSort] = useState<NavigationSortOrder>('asc');\n\n return (\n <div style={{width: 340, height: 500}}>\n <QueriesNavigation<CustomItem, CustomCluster>\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={CUSTOM_CLUSTERS}\n items={getCustomItemsForPath(location.path, sort)}\n sort={{value: sort, onUpdate: setSort}}\n renderClusterItem={({cluster}) => (\n <Flex alignItems=\"center\" gap={2} style={{width: '100%', padding: '0 8px'}}>\n <ClusterRow cluster={cluster} />\n <Label theme=\"info\">{cluster.env}</Label>\n </Flex>\n )}\n renderNavigationItem={({item, isParentRow}) =>\n isParentRow ? (\n <NavigationItemRow item={item} />\n ) : (\n <Flex alignItems=\"center\" gap={2} style={{width: '100%', padding: '0 8px'}}>\n <NavigationItemRow item={item} />\n {item.owner && (\n <Text color=\"secondary\" variant=\"caption-2\">\n {item.owner}\n </Text>\n )}\n </Flex>\n )\n }\n onClusterClick={action('onClusterClick')}\n onItemClick={action('onItemClick')}\n />\n </div>\n );\n};\n\nconst CustomDetailResolverStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home'});\n const [openedItem, setOpenedItem] = useState<NavigationItem | undefined>(undefined);\n\n const resolveDetail = createNavigationDetailResolver({\n file: (item) => ({\n tabs: [\n {id: 'content', title: 'Content', content: `Content of ${item.title}`},\n {id: 'meta', title: 'Meta', content: 'Meta placeholder'},\n ],\n hasSearch: false,\n }),\n });\n\n return (\n <div style={{width: 340, height: 600}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n items={getItemsForPath(location.path)}\n detail={{\n openedItem,\n onItemOpen: setOpenedItem,\n onClose: () => setOpenedItem(undefined),\n resolve: resolveDetail,\n }}\n onItemClick={action('onItemClick')}\n />\n </div>\n );\n};\n\nexport const ClustersToItems: Story = {render: () => <ClustersToItemsStory />};\nexport const Loading: Story = {render: () => <LoadingStory />};\nexport const Empty: Story = {render: () => <EmptyStory />};\nexport const EmptySearch: Story = {render: () => <EmptySearchStory />};\nexport const Error: Story = {render: () => <ErrorStory />};\nexport const CustomRows: Story = {render: () => <CustomRowsStory />};\nexport const CustomDetailResolver: Story = {render: () => <CustomDetailResolverStory />};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","QueriesNavigation","createNavigationDetailResolver","createTableDetailConfig","action","mockLoadPathSuggestions","FileArrowRightOutIcon","props","_jsx","_objectSpread","children","fill","fillRule","d","clipRule","defaultProps","xmlns","width","height","viewBox","ArrowUpRightFromSquareIcon","CodeIcon","GearIcon","Button","DropdownMenu","Flex","Icon","Label","Text","ClusterRow","NavigationItemRow","SCHEMA_COLUMNS","PREVIEW_COLUMNS","PREVIEW_ROWS","META_GROUPS","VIEW_COLUMNS","makeViewRows","jsx","jsxs","_jsxs","meta","title","component","tags","parameters","layout","onBreadcrumbsUpdate","logAction","defaultActions","id","content","data","size","onClick","location","CLUSTERS","color","backgroundColor","description","ITEM_NAMES","kind","hasChildren","disabled","getPathDepth","path","split","filter","Boolean","length","getItemsForPath","sort","arguments","undefined","concat","_ref","_ref2","leftTitle","rightTitle","localeCompare","map","_ref3","TABLE_VIEW_SECTIONS_WITH_ACTIONS","columns","rows","loaded","defaultExpanded","actions","section","useLocationState","initial","_useState","_useState2","_slicedToArray","setLocation","onUpdate","next","useNavigationStoryState","_useLocationState","_useState3","_useState4","setSort","items","ClustersToItemsStory","_useNavigationStorySt","cluster","_useState5","_useState6","openedItem","setOpenedItem","resolveDetail","table","resolveSchema","resolvePreview","resolveMeta","groups","resolveView","sections","style","header","onLoadSuggestions","clusters","value","detail","onItemOpen","item","onClose","resolve","onClusterClick","onItemClick","LoadingStory","_useLocationState2","listState","loading","EmptyStory","_useLocationState3","EmptySearchStory","_useLocationState4","_useState7","_useState8","search","setSearch","ErrorStory","_useLocationState5","error","CUSTOM_CLUSTERS","_cluster$description","env","getCustomItemsForPath","index","owner","CustomRowsStory","_useLocationState6","_useState9","_useState0","renderClusterItem","_ref4","alignItems","gap","padding","theme","renderNavigationItem","_ref5","isParentRow","variant","CustomDetailResolverStory","_useLocationState7","_useState1","_useState10","file","tabs","hasSearch","CustomHeaderActionsStory","_useNavigationStorySt2","renderActions","_ref6","_actionLocation$path","actionLocation","menuItems","_ref7","hidden","_ref8","text","href","shrink","renderSwitcher","view","target","LinkedBreadcrumbsStory","_useNavigationStorySt3","_useState11","_useState12","getBreadcrumbHref","_ref9","ParentRowDuringSearchStory","_useLocationState8","_useState13","_useState14","_ref0","includes","parentRow","showDuringSearch","_ref1","ClustersToItems","render","Loading","Empty","EmptySearch","Error","CustomRows","CustomDetailResolver","CustomHeaderActions","LinkedBreadcrumbs","ParentRowDuringSearch"],"sources":["QueriesNavigation.stories.tsx"],"sourcesContent":["import React, {useState} from 'react';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {QueriesNavigation} from './QueriesNavigation';\nimport {createNavigationDetailResolver} from './helpers/createNavigationDetailResolver';\nimport {createTableDetailConfig} from './helpers/createTableDetailConfig';\nimport {action} from 'storybook/actions';\nimport {\n NavigationCluster,\n NavigationHeaderAction,\n NavigationItem,\n NavigationLocation,\n NavigationSortOrder,\n NavigationViewSection,\n} from '../../types/navigation';\nimport {mockLoadPathSuggestions} from '../../components/PathEditor/PathEditor.stories.helpers';\nimport FileArrowRightOutIcon from '@gravity-ui/icons/svgs/file-arrow-right-out.svg';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\nimport CodeIcon from '@gravity-ui/icons/svgs/code.svg';\nimport GearIcon from '@gravity-ui/icons/svgs/gear.svg';\nimport {\n Button,\n DropdownMenu,\n type DropdownMenuItem,\n Flex,\n Icon,\n Label,\n Text,\n} from '@gravity-ui/uikit';\nimport {ClusterRow, NavigationItemRow} from '../../components';\nimport {SCHEMA_COLUMNS} from '../../modules/NavigationSchema/story/mockData';\nimport {PREVIEW_COLUMNS, PREVIEW_ROWS} from '../../modules/NavigationPreview/story/mockData';\nimport {META_GROUPS} from '../../modules/NavigationMeta/story/mockData';\nimport {VIEW_COLUMNS, makeViewRows} from '../../modules/NavigationView/story/mockData';\n\nconst meta: Meta<typeof QueriesNavigation> = {\n title: 'Widgets/QueriesNavigation',\n component: QueriesNavigation,\n tags: ['autodocs'],\n parameters: {\n layout: 'padded',\n },\n};\n\nconst onBreadcrumbsUpdate = action('onUpdate');\nconst logAction = action('actionClick');\n\nconst defaultActions: NavigationHeaderAction[] = [\n {\n id: 'paste',\n title: 'Paste path',\n content: <Icon data={FileArrowRightOutIcon} size={16} />,\n onClick: (location) => logAction('Paste', location),\n },\n {\n id: 'open',\n title: 'Open in new tab',\n content: <Icon data={ArrowUpRightFromSquareIcon} size={16} />,\n onClick: (location) => logAction('Open', location),\n },\n];\n\nconst CLUSTERS: NavigationCluster[] = [\n {\n id: 'northstar',\n title: 'Northstar',\n color: 'white',\n backgroundColor: 'rgba(218, 68, 83, 1)',\n description: 'Production',\n },\n {\n id: 'cedar',\n title: 'Cedar',\n color: 'white',\n backgroundColor: 'rgba(127, 130, 133, 1)',\n description: 'Production',\n },\n {\n id: 'sequoia',\n title: 'Sequoia',\n color: 'white',\n backgroundColor: 'rgba(215, 112, 173, 1)',\n description: 'Production',\n },\n {\n id: 'pioneer-test',\n title: 'Pioneer-Test',\n color: 'white',\n backgroundColor: 'rgba(150, 122, 220, 1)',\n description: 'Testing',\n },\n {\n id: 'orbit',\n title: 'Orbit',\n color: 'white',\n backgroundColor: 'rgba(233, 87, 63, 1)',\n description: 'Production',\n },\n {\n id: 'lighthouse',\n title: 'Lighthouse',\n color: 'white',\n backgroundColor: 'rgba(67, 68, 69, 1)',\n description: 'Production',\n },\n {\n id: 'northstar-gnd',\n title: 'Northstar-GND',\n color: 'white',\n backgroundColor: 'rgba(140, 193, 82, 1)',\n description: 'tesdting',\n },\n {\n id: 'harbor',\n title: 'Harbor',\n color: 'white',\n backgroundColor: 'rgba(55, 188, 155, 1)',\n description: 'Production',\n },\n {\n id: 'cedar-gnd',\n title: 'Cedar-GND',\n color: 'white',\n backgroundColor: 'rgba(140, 193, 82, 1)',\n description: 'Prestable',\n },\n];\n\nconst ITEM_NAMES: Array<Pick<NavigationItem, 'title' | 'kind' | 'hasChildren' | 'disabled'>> = [\n {title: 'abcdapter', kind: 'folder', hasChildren: true},\n {title: 'access_control_object', kind: 'file'},\n {title: 'account_tree', kind: 'folder', hasChildren: true, disabled: true},\n {title: 'cell_balancers', kind: 'folder', hasChildren: true},\n {title: 'clusters', kind: 'folder', hasChildren: true},\n {title: 'doctors_table', kind: 'table'},\n];\n\nconst getPathDepth = (path: string | undefined): number =>\n (path ?? '').split('/').filter(Boolean).length;\n\nconst getItemsForPath = (\n path: string | undefined,\n sort: NavigationSortOrder = 'asc',\n): NavigationItem[] => {\n if (getPathDepth(path) > 1) {\n return [];\n }\n\n return [...ITEM_NAMES]\n .sort(({title: leftTitle}, {title: rightTitle}) =>\n sort === 'asc'\n ? leftTitle.localeCompare(rightTitle)\n : rightTitle.localeCompare(leftTitle),\n )\n .map(({title, kind, hasChildren, disabled}) => ({\n path: `${path ?? ''}/${title}`,\n title,\n kind,\n hasChildren,\n disabled,\n }));\n};\n\nexport default meta;\ntype Story = StoryObj<typeof QueriesNavigation>;\n\nconst TABLE_VIEW_SECTIONS_WITH_ACTIONS: NavigationViewSection[] = [\n {\n id: 'general',\n title: 'General',\n columns: VIEW_COLUMNS,\n rows: makeViewRows(2),\n loaded: true,\n defaultExpanded: true,\n actions: [\n {\n id: 'code',\n title: 'Show code',\n content: <Icon data={CodeIcon} size={14} />,\n onClick: (section) => logAction('ViewShowCode', section.id),\n },\n {\n id: 'settings',\n title: 'Settings',\n content: <Icon data={GearIcon} size={14} />,\n onClick: (section) => logAction('ViewSettings', section.id),\n },\n ],\n },\n {\n id: 'attributes',\n title: 'Attributes',\n columns: VIEW_COLUMNS,\n rows: makeViewRows(2),\n loaded: true,\n },\n];\n\nconst useLocationState = (initial: NavigationLocation) => {\n const [location, setLocation] = useState<NavigationLocation>(initial);\n const onUpdate = (next: NavigationLocation) => {\n onBreadcrumbsUpdate(next);\n setLocation(next);\n };\n return {location, onUpdate};\n};\n\nconst useNavigationStoryState = (initial: NavigationLocation) => {\n const {location, onUpdate} = useLocationState(initial);\n const [sort, setSort] = useState<NavigationSortOrder>('asc');\n const items = getItemsForPath(location.path, sort);\n\n return {location, onUpdate, sort, setSort, items};\n};\n\nconst ClustersToItemsStory = () => {\n const {location, onUpdate, sort, setSort, items} = useNavigationStoryState({\n cluster: undefined,\n path: undefined,\n });\n const [openedItem, setOpenedItem] = useState<NavigationItem | undefined>(undefined);\n\n const resolveDetail = createNavigationDetailResolver({\n table: createTableDetailConfig({\n resolveSchema: () => ({columns: SCHEMA_COLUMNS, loaded: true}),\n resolvePreview: () => ({\n columns: PREVIEW_COLUMNS,\n rows: PREVIEW_ROWS,\n loaded: true,\n }),\n resolveMeta: () => ({groups: META_GROUPS, loaded: true}),\n resolveView: () => ({sections: TABLE_VIEW_SECTIONS_WITH_ACTIONS, loaded: true}),\n }),\n });\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={CLUSTERS}\n items={items}\n sort={{value: sort, onUpdate: setSort}}\n detail={{\n openedItem,\n onItemOpen: (item) => {\n action('onItemOpen')(item);\n setOpenedItem(item);\n },\n onClose: () => setOpenedItem(undefined),\n resolve: resolveDetail,\n }}\n onClusterClick={action('onClusterClick')}\n onItemClick={action('onItemClick')}\n />\n </div>\n );\n};\n\nconst LoadingStory = () => {\n const {location, onUpdate} = useLocationState({cluster: undefined, path: undefined});\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={[]}\n listState={{loading: true}}\n />\n </div>\n );\n};\n\nconst EmptyStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home/empty'});\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n items={[]}\n />\n </div>\n );\n};\n\nconst EmptySearchStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home'});\n const [search, setSearch] = useState('no-such-item');\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n items={[]}\n search={{value: search, onUpdate: setSearch}}\n />\n </div>\n );\n};\n\nconst ErrorStory = () => {\n const {location, onUpdate} = useLocationState({cluster: undefined, path: undefined});\n\n return (\n <div style={{width: 300, height: 500}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={[]}\n listState={{error: 'Custom load error message'}}\n />\n </div>\n );\n};\n\ntype CustomCluster = NavigationCluster & {env: string};\ntype CustomItem = NavigationItem & {owner?: string};\n\nconst CUSTOM_CLUSTERS: CustomCluster[] = CLUSTERS.map((cluster) => ({\n ...cluster,\n env: cluster.description ?? 'Unknown',\n}));\n\nconst getCustomItemsForPath = (path: string | undefined, sort: NavigationSortOrder): CustomItem[] =>\n getItemsForPath(path, sort).map((item, index) => ({\n ...item,\n owner: index % 2 === 0 ? 'robot' : 'user',\n }));\n\nconst CustomRowsStory = () => {\n const {location, onUpdate} = useLocationState({cluster: undefined, path: undefined});\n const [sort, setSort] = useState<NavigationSortOrder>('asc');\n\n return (\n <div style={{width: 340, height: 500}}>\n <QueriesNavigation<CustomItem, CustomCluster>\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n clusters={CUSTOM_CLUSTERS}\n items={getCustomItemsForPath(location.path, sort)}\n sort={{value: sort, onUpdate: setSort}}\n renderClusterItem={({cluster}) => (\n <Flex alignItems=\"center\" gap={2} style={{width: '100%', padding: '0 8px'}}>\n <ClusterRow cluster={cluster} />\n <Label theme=\"info\">{cluster.env}</Label>\n </Flex>\n )}\n renderNavigationItem={({item, isParentRow}) =>\n isParentRow ? (\n <NavigationItemRow item={item} />\n ) : (\n <Flex alignItems=\"center\" gap={2} style={{width: '100%', padding: '0 8px'}}>\n <NavigationItemRow item={item} />\n {item.owner && (\n <Text color=\"secondary\" variant=\"caption-2\">\n {item.owner}\n </Text>\n )}\n </Flex>\n )\n }\n onClusterClick={action('onClusterClick')}\n onItemClick={action('onItemClick')}\n />\n </div>\n );\n};\n\nconst CustomDetailResolverStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home'});\n const [openedItem, setOpenedItem] = useState<NavigationItem | undefined>(undefined);\n\n const resolveDetail = createNavigationDetailResolver({\n file: (item) => ({\n tabs: [\n {id: 'content', title: 'Content', content: `Content of ${item.title}`},\n {id: 'meta', title: 'Meta', content: 'Meta placeholder'},\n ],\n hasSearch: false,\n }),\n });\n\n return (\n <div style={{width: 340, height: 600}}>\n <QueriesNavigation\n location={location}\n header={{actions: defaultActions, onLoadSuggestions: mockLoadPathSuggestions}}\n onUpdate={onUpdate}\n items={getItemsForPath(location.path)}\n detail={{\n openedItem,\n onItemOpen: setOpenedItem,\n onClose: () => setOpenedItem(undefined),\n resolve: resolveDetail,\n }}\n onItemClick={action('onItemClick')}\n />\n </div>\n );\n};\n\nconst CustomHeaderActionsStory = () => {\n const {location, onUpdate, items} = useNavigationStoryState({\n cluster: 'northstar',\n path: '/home',\n });\n\n return (\n <div style={{width: 420, height: 500}}>\n <QueriesNavigation\n location={location}\n onUpdate={onUpdate}\n items={items}\n header={{\n actions: defaultActions,\n renderActions: ({location: actionLocation, actions}) => {\n const menuItems = actions\n .filter(({hidden}) => !hidden)\n .map<DropdownMenuItem>(({title, disabled, onClick}) => ({\n text: title,\n disabled,\n action: () => onClick(actionLocation),\n }));\n const href = `/navigation/${actionLocation.cluster}${actionLocation.path ?? ''}`;\n\n return (\n <Flex gap={1} shrink={0}>\n <DropdownMenu\n size=\"s\"\n items={menuItems}\n renderSwitcher={(props) => (\n <Button {...props} view=\"flat\" size=\"s\">\n Favorites\n </Button>\n )}\n />\n <Button view=\"flat\" size=\"s\" href={href} target=\"_blank\">\n Open\n </Button>\n </Flex>\n );\n },\n }}\n />\n </div>\n );\n};\n\nconst LinkedBreadcrumbsStory = () => {\n const {location, onUpdate, items} = useNavigationStoryState({\n cluster: 'northstar',\n path: '/home',\n });\n const [openedItem, setOpenedItem] = useState<NavigationItem | undefined>(undefined);\n\n return (\n <div style={{width: 420, height: 500}}>\n <QueriesNavigation\n location={location}\n onUpdate={onUpdate}\n items={items}\n header={{\n actions: defaultActions,\n getBreadcrumbHref: ({cluster, path}) =>\n cluster ? `/navigation/${cluster}${path ?? ''}` : '/navigation',\n }}\n detail={{\n openedItem,\n onItemOpen: setOpenedItem,\n onClose: () => setOpenedItem(undefined),\n }}\n />\n </div>\n );\n};\n\nconst ParentRowDuringSearchStory = () => {\n const {location, onUpdate} = useLocationState({cluster: 'northstar', path: '/home'});\n const [search, setSearch] = useState('cluster');\n const items = getItemsForPath(location.path).filter(({title}) => title.includes(search));\n\n return (\n <div style={{width: 340, height: 500}}>\n <QueriesNavigation\n location={location}\n onUpdate={onUpdate}\n items={items}\n search={{value: search, onUpdate: setSearch}}\n parentRow={{showDuringSearch: true}}\n renderNavigationItem={({item, isParentRow}) => (\n <div data-qa={isParentRow ? 'parent-row' : undefined}>\n <NavigationItemRow item={item} />\n </div>\n )}\n />\n </div>\n );\n};\n\nexport const ClustersToItems: Story = {render: () => <ClustersToItemsStory />};\nexport const Loading: Story = {render: () => <LoadingStory />};\nexport const Empty: Story = {render: () => <EmptyStory />};\nexport const EmptySearch: Story = {render: () => <EmptySearchStory />};\nexport const Error: Story = {render: () => <ErrorStory />};\nexport const CustomRows: Story = {render: () => <CustomRowsStory />};\nexport const CustomDetailResolver: Story = {render: () => <CustomDetailResolverStory />};\nexport const CustomHeaderActions: Story = {render: () => <CustomHeaderActionsStory />};\nexport const LinkedBreadcrumbs: Story = {render: () => <LinkedBreadcrumbsStory />};\nexport const ParentRowDuringSearch: Story = {render: () => <ParentRowDuringSearchStory />};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import type { QueryListRowRenderData } from '../../types/queryList';
3
3
  import type { TutorialHistoryRow } from '../../types/tutorial';
4
- export declare const TutorialRowContent: <T extends TutorialHistoryRow>({ item, variant, }: QueryListRowRenderData<T>) => React.JSX.Element;
4
+ export declare const TutorialRowContent: <T extends TutorialHistoryRow>({ item, variant, renderLink, }: QueryListRowRenderData<T>) => React.JSX.Element;
@@ -5,16 +5,19 @@ import { TutorialSearchRow } from "../../modules/TutorialSearchRow";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  export var TutorialRowContent = function TutorialRowContent(_ref) {
7
7
  var item = _ref.item,
8
- variant = _ref.variant;
8
+ variant = _ref.variant,
9
+ renderLink = _ref.renderLink;
9
10
  if ('header' in item) {
10
11
  return /*#__PURE__*/_jsx(HistoryGroupHeader, {
11
12
  title: item.header
12
13
  });
13
14
  }
14
15
  return variant === 'search' ? /*#__PURE__*/_jsx(TutorialSearchRow, {
15
- item: item
16
+ item: item,
17
+ renderLink: renderLink
16
18
  }) : /*#__PURE__*/_jsx(TutorialRow, {
17
- item: item
19
+ item: item,
20
+ renderLink: renderLink
18
21
  });
19
22
  };
20
23
  // #sourceMappingURL=TutorialRowContent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","HistoryGroupHeader","TutorialRow","TutorialSearchRow","jsx","_jsx","TutorialRowContent","_ref","item","variant","title","header"],"sources":["TutorialRowContent.tsx"],"sourcesContent":["import React from 'react';\nimport type {QueryListRowRenderData} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {HistoryGroupHeader} from '../../components/HistoryGroupHeader';\nimport {TutorialRow} from '../../modules/TutorialRow';\nimport {TutorialSearchRow} from '../../modules/TutorialSearchRow';\n\nexport const TutorialRowContent = <T extends TutorialHistoryRow>({\n item,\n variant,\n}: QueryListRowRenderData<T>) => {\n if ('header' in item) {\n return <HistoryGroupHeader title={item.header} />;\n }\n\n return variant === 'search' ? <TutorialSearchRow item={item} /> : <TutorialRow item={item} />;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,SAAQC,kBAAkB;AAC1B,SAAQC,WAAW;AACnB,SAAQC,iBAAiB;AAAyC,SAAAC,GAAA,IAAAC,IAAA;AAElE,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAGE;EAAA,IAF7BC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,OAAO,GAAAF,IAAA,CAAPE,OAAO;EAEP,IAAI,QAAQ,IAAID,IAAI,EAAE;IAClB,oBAAOH,IAAA,CAACJ,kBAAkB;MAACS,KAAK,EAAEF,IAAI,CAACG;IAAO,CAAE,CAAC;EACrD;EAEA,OAAOF,OAAO,KAAK,QAAQ,gBAAGJ,IAAA,CAACF,iBAAiB;IAACK,IAAI,EAAEA;EAAK,CAAE,CAAC,gBAAGH,IAAA,CAACH,WAAW;IAACM,IAAI,EAAEA;EAAK,CAAE,CAAC;AACjG,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","HistoryGroupHeader","TutorialRow","TutorialSearchRow","jsx","_jsx","TutorialRowContent","_ref","item","variant","renderLink","title","header"],"sources":["TutorialRowContent.tsx"],"sourcesContent":["import React from 'react';\nimport type {QueryListRowRenderData} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {HistoryGroupHeader} from '../../components/HistoryGroupHeader';\nimport {TutorialRow} from '../../modules/TutorialRow';\nimport {TutorialSearchRow} from '../../modules/TutorialSearchRow';\n\nexport const TutorialRowContent = <T extends TutorialHistoryRow>({\n item,\n variant,\n renderLink,\n}: QueryListRowRenderData<T>) => {\n if ('header' in item) {\n return <HistoryGroupHeader title={item.header} />;\n }\n\n return variant === 'search' ? (\n <TutorialSearchRow item={item} renderLink={renderLink} />\n ) : (\n <TutorialRow item={item} renderLink={renderLink} />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,SAAQC,kBAAkB;AAC1B,SAAQC,WAAW;AACnB,SAAQC,iBAAiB;AAAyC,SAAAC,GAAA,IAAAC,IAAA;AAElE,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAIE;EAAA,IAH7BC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IACPC,UAAU,GAAAH,IAAA,CAAVG,UAAU;EAEV,IAAI,QAAQ,IAAIF,IAAI,EAAE;IAClB,oBAAOH,IAAA,CAACJ,kBAAkB;MAACU,KAAK,EAAEH,IAAI,CAACI;IAAO,CAAE,CAAC;EACrD;EAEA,OAAOH,OAAO,KAAK,QAAQ,gBACvBJ,IAAA,CAACF,iBAAiB;IAACK,IAAI,EAAEA,IAAK;IAACE,UAAU,EAAEA;EAAW,CAAE,CAAC,gBAEzDL,IAAA,CAACH,WAAW;IAACM,IAAI,EAAEA,IAAK;IAACE,UAAU,EAAEA;EAAW,CAAE,CACrD;AACL,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { QueryListFilterConfig, QueryListItem, QueryListSearchConfig } from '../../types/queryList';
2
+ import type { QueryListFilterConfig, QueryListItem, QueryListLinkRenderer, QueryListRowRenderData, QueryListSearchConfig } from '../../types/queryList';
3
3
  import type { TutorialHistoryRow } from '../../types/tutorial';
4
4
  import './TutorialsHistory.scss';
5
5
  export type TutorialsHistoryProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {
@@ -10,6 +10,11 @@ export type TutorialsHistoryProps<T extends TutorialHistoryRow = TutorialHistory
10
10
  filter?: QueryListFilterConfig;
11
11
  items: QueryListItem<T>[];
12
12
  selectedRowId?: T['id'];
13
+ renderRowItem?: (data: QueryListRowRenderData<T>) => React.ReactNode;
13
14
  onListItemClick?: (item: QueryListItem<T>) => void;
15
+ hasMore?: boolean;
16
+ loading?: boolean;
17
+ onLoadMore?: () => void;
18
+ renderLink?: QueryListLinkRenderer;
14
19
  };
15
- export declare const TutorialsHistory: <T extends TutorialHistoryRow>({ title, logo, search, filter, items, selectedRowId, onListItemClick, className, }: TutorialsHistoryProps<T>) => React.JSX.Element;
20
+ export declare const TutorialsHistory: <T extends TutorialHistoryRow>({ title, logo, search, filter, items, selectedRowId, renderRowItem, onListItemClick, hasMore, loading, onLoadMore, renderLink, className, }: TutorialsHistoryProps<T>) => React.JSX.Element;
@@ -11,7 +11,7 @@ import { HistoryHeader } from "../../modules/HistoryHeader";
11
11
  import { HistoryLayout } from "../../modules/HistoryLayout";
12
12
  import { RowsList } from "../../modules/RowsList";
13
13
  import i18n from "./i18n";
14
- import { getListKey } from "../../helpers/getListKey";
14
+ import { useListKey } from "../../helpers/useListKey";
15
15
  import { TutorialRowContent } from "./TutorialRowContent";
16
16
  import cn from 'bem-cn-lite';
17
17
  import "./TutorialsHistory.css";
@@ -25,11 +25,17 @@ export var TutorialsHistory = function TutorialsHistory(_ref) {
25
25
  filter = _ref.filter,
26
26
  items = _ref.items,
27
27
  selectedRowId = _ref.selectedRowId,
28
+ renderRowItem = _ref.renderRowItem,
28
29
  onListItemClick = _ref.onListItemClick,
30
+ hasMore = _ref.hasMore,
31
+ loading = _ref.loading,
32
+ onLoadMore = _ref.onLoadMore,
33
+ renderLink = _ref.renderLink,
29
34
  className = _ref.className;
30
35
  var fullSearchAvailable = search.fullSearchAvailable !== false;
31
36
  var showSearchResults = Boolean(fullSearchAvailable && search.fullSearch && ((_search$value = search.value) === null || _search$value === void 0 ? void 0 : _search$value.trim()));
32
37
  var rowVariant = showSearchResults ? 'search' : 'default';
38
+ var listKey = useListKey(items, rowVariant, Boolean(onLoadMore));
33
39
  return /*#__PURE__*/_jsx(HistoryLayout, {
34
40
  className: block(null, className),
35
41
  title: title || i18n('title_tutorials'),
@@ -47,11 +53,15 @@ export var TutorialsHistory = function TutorialsHistory(_ref) {
47
53
  rowVariant: rowVariant,
48
54
  selectedRowId: selectedRowId,
49
55
  renderRow: function renderRow(data) {
50
- return /*#__PURE__*/_jsx(TutorialRowContent, _objectSpread({}, data));
56
+ return renderRowItem ? renderRowItem(data) : /*#__PURE__*/_jsx(TutorialRowContent, _objectSpread({}, data));
51
57
  },
52
58
  showFiltersHint: Boolean(filter),
59
+ hasMore: hasMore,
60
+ loading: loading,
61
+ onLoadMore: onLoadMore,
62
+ renderLink: renderLink,
53
63
  onItemClick: onListItemClick
54
- }, getListKey(items, rowVariant))
64
+ }, listKey)
55
65
  });
56
66
  };
57
67
  // #sourceMappingURL=TutorialsHistory.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","HistoryHeader","HistoryLayout","RowsList","i18n","getListKey","TutorialRowContent","cn","jsx","_jsx","block","TutorialsHistory","_ref","_search$value","title","logo","search","filter","items","selectedRowId","onListItemClick","className","fullSearchAvailable","showSearchResults","Boolean","fullSearch","value","trim","rowVariant","header","hasClear","onUpdate","children","renderRow","data","_objectSpread","showFiltersHint","onItemClick"],"sources":["TutorialsHistory.tsx"],"sourcesContent":["import React from 'react';\nimport {HistoryHeader} from '../../modules/HistoryHeader';\nimport {HistoryLayout} from '../../modules/HistoryLayout';\nimport {RowsList} from '../../modules/RowsList';\nimport i18n from './i18n';\nimport type {\n QueryListFilterConfig,\n QueryListItem,\n QueryListSearchConfig,\n} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {getListKey} from '../../helpers/getListKey';\nimport {TutorialRowContent} from './TutorialRowContent';\nimport cn from 'bem-cn-lite';\nimport './TutorialsHistory.scss';\n\nexport type TutorialsHistoryProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {\n className?: string;\n title?: string;\n logo?: React.ReactNode;\n search: QueryListSearchConfig;\n filter?: QueryListFilterConfig;\n items: QueryListItem<T>[];\n selectedRowId?: T['id'];\n onListItemClick?: (item: QueryListItem<T>) => void;\n};\n\nconst block = cn('qp-tutorials-history');\n\nexport const TutorialsHistory = <T extends TutorialHistoryRow>({\n title,\n logo,\n search,\n filter,\n items,\n selectedRowId,\n onListItemClick,\n className,\n}: TutorialsHistoryProps<T>) => {\n const fullSearchAvailable = search.fullSearchAvailable !== false;\n const showSearchResults = Boolean(\n fullSearchAvailable && search.fullSearch && search.value?.trim(),\n );\n const rowVariant = showSearchResults ? 'search' : 'default';\n\n return (\n <HistoryLayout\n className={block(null, className)}\n title={title || i18n('title_tutorials')}\n logo={logo}\n header={\n <HistoryHeader\n search={search.value}\n fullSearch={search.fullSearch}\n fullSearchAvailable={fullSearchAvailable}\n hasClear={search.hasClear}\n filter={filter}\n onUpdate={search.onUpdate}\n />\n }\n >\n <RowsList\n key={getListKey(items, rowVariant)}\n items={items}\n rowVariant={rowVariant}\n selectedRowId={selectedRowId}\n renderRow={(data) => <TutorialRowContent {...data} />}\n showFiltersHint={Boolean(filter)}\n onItemClick={onListItemClick}\n />\n </HistoryLayout>\n );\n};\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,aAAa;AACrB,SAAQC,aAAa;AACrB,SAAQC,QAAQ;AAChB,OAAOC,IAAI;AAOX,SAAQC,UAAU;AAClB,SAAQC,kBAAkB;AAC1B,OAAOC,EAAE,MAAM,aAAa;AAC5B;AAAiC,SAAAC,GAAA,IAAAC,IAAA;AAajC,IAAMC,KAAK,GAAGH,EAAE,CAAC,sBAAsB,CAAC;AAExC,OAAO,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EASG;EAAA,IAAAC,aAAA;EAAA,IAR5BC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,MAAM,GAAAL,IAAA,CAANK,MAAM;IACNC,KAAK,GAAAN,IAAA,CAALM,KAAK;IACLC,aAAa,GAAAP,IAAA,CAAbO,aAAa;IACbC,eAAe,GAAAR,IAAA,CAAfQ,eAAe;IACfC,SAAS,GAAAT,IAAA,CAATS,SAAS;EAET,IAAMC,mBAAmB,GAAGN,MAAM,CAACM,mBAAmB,KAAK,KAAK;EAChE,IAAMC,iBAAiB,GAAGC,OAAO,CAC7BF,mBAAmB,IAAIN,MAAM,CAACS,UAAU,MAAAZ,aAAA,GAAIG,MAAM,CAACU,KAAK,cAAAb,aAAA,uBAAZA,aAAA,CAAcc,IAAI,CAAC,CAAC,CACpE,CAAC;EACD,IAAMC,UAAU,GAAGL,iBAAiB,GAAG,QAAQ,GAAG,SAAS;EAE3D,oBACId,IAAA,CAACP,aAAa;IACVmB,SAAS,EAAEX,KAAK,CAAC,IAAI,EAAEW,SAAS,CAAE;IAClCP,KAAK,EAAEA,KAAK,IAAIV,IAAI,CAAC,iBAAiB,CAAE;IACxCW,IAAI,EAAEA,IAAK;IACXc,MAAM,eACFpB,IAAA,CAACR,aAAa;MACVe,MAAM,EAAEA,MAAM,CAACU,KAAM;MACrBD,UAAU,EAAET,MAAM,CAACS,UAAW;MAC9BH,mBAAmB,EAAEA,mBAAoB;MACzCQ,QAAQ,EAAEd,MAAM,CAACc,QAAS;MAC1Bb,MAAM,EAAEA,MAAO;MACfc,QAAQ,EAAEf,MAAM,CAACe;IAAS,CAC7B,CACJ;IAAAC,QAAA,eAEDvB,IAAA,CAACN,QAAQ;MAELe,KAAK,EAAEA,KAAM;MACbU,UAAU,EAAEA,UAAW;MACvBT,aAAa,EAAEA,aAAc;MAC7Bc,SAAS,EAAE,SAAXA,SAASA,CAAGC,IAAI;QAAA,oBAAKzB,IAAA,CAACH,kBAAkB,EAAA6B,aAAA,KAAKD,IAAI,CAAG,CAAC;MAAA,CAAC;MACtDE,eAAe,EAAEZ,OAAO,CAACP,MAAM,CAAE;MACjCoB,WAAW,EAAEjB;IAAgB,GANxBf,UAAU,CAACa,KAAK,EAAEU,UAAU,CAOpC;EAAC,CACS,CAAC;AAExB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","HistoryHeader","HistoryLayout","RowsList","i18n","useListKey","TutorialRowContent","cn","jsx","_jsx","block","TutorialsHistory","_ref","_search$value","title","logo","search","filter","items","selectedRowId","renderRowItem","onListItemClick","hasMore","loading","onLoadMore","renderLink","className","fullSearchAvailable","showSearchResults","Boolean","fullSearch","value","trim","rowVariant","listKey","header","hasClear","onUpdate","children","renderRow","data","_objectSpread","showFiltersHint","onItemClick"],"sources":["TutorialsHistory.tsx"],"sourcesContent":["import React from 'react';\nimport {HistoryHeader} from '../../modules/HistoryHeader';\nimport {HistoryLayout} from '../../modules/HistoryLayout';\nimport {RowsList} from '../../modules/RowsList';\nimport i18n from './i18n';\nimport type {\n QueryListFilterConfig,\n QueryListItem,\n QueryListLinkRenderer,\n QueryListRowRenderData,\n QueryListSearchConfig,\n} from '../../types/queryList';\nimport type {TutorialHistoryRow} from '../../types/tutorial';\nimport {useListKey} from '../../helpers/useListKey';\nimport {TutorialRowContent} from './TutorialRowContent';\nimport cn from 'bem-cn-lite';\nimport './TutorialsHistory.scss';\n\nexport type TutorialsHistoryProps<T extends TutorialHistoryRow = TutorialHistoryRow> = {\n className?: string;\n title?: string;\n logo?: React.ReactNode;\n search: QueryListSearchConfig;\n filter?: QueryListFilterConfig;\n items: QueryListItem<T>[];\n selectedRowId?: T['id'];\n renderRowItem?: (data: QueryListRowRenderData<T>) => React.ReactNode;\n onListItemClick?: (item: QueryListItem<T>) => void;\n hasMore?: boolean;\n loading?: boolean;\n onLoadMore?: () => void;\n renderLink?: QueryListLinkRenderer;\n};\n\nconst block = cn('qp-tutorials-history');\n\nexport const TutorialsHistory = <T extends TutorialHistoryRow>({\n title,\n logo,\n search,\n filter,\n items,\n selectedRowId,\n renderRowItem,\n onListItemClick,\n hasMore,\n loading,\n onLoadMore,\n renderLink,\n className,\n}: TutorialsHistoryProps<T>) => {\n const fullSearchAvailable = search.fullSearchAvailable !== false;\n const showSearchResults = Boolean(\n fullSearchAvailable && search.fullSearch && search.value?.trim(),\n );\n const rowVariant = showSearchResults ? 'search' : 'default';\n const listKey = useListKey(items, rowVariant, Boolean(onLoadMore));\n\n return (\n <HistoryLayout\n className={block(null, className)}\n title={title || i18n('title_tutorials')}\n logo={logo}\n header={\n <HistoryHeader\n search={search.value}\n fullSearch={search.fullSearch}\n fullSearchAvailable={fullSearchAvailable}\n hasClear={search.hasClear}\n filter={filter}\n onUpdate={search.onUpdate}\n />\n }\n >\n <RowsList\n key={listKey}\n items={items}\n rowVariant={rowVariant}\n selectedRowId={selectedRowId}\n renderRow={(data) =>\n renderRowItem ? renderRowItem(data) : <TutorialRowContent {...data} />\n }\n showFiltersHint={Boolean(filter)}\n hasMore={hasMore}\n loading={loading}\n onLoadMore={onLoadMore}\n renderLink={renderLink}\n onItemClick={onListItemClick}\n />\n </HistoryLayout>\n );\n};\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,aAAa;AACrB,SAAQC,aAAa;AACrB,SAAQC,QAAQ;AAChB,OAAOC,IAAI;AASX,SAAQC,UAAU;AAClB,SAAQC,kBAAkB;AAC1B,OAAOC,EAAE,MAAM,aAAa;AAC5B;AAAiC,SAAAC,GAAA,IAAAC,IAAA;AAkBjC,IAAMC,KAAK,GAAGH,EAAE,CAAC,sBAAsB,CAAC;AAExC,OAAO,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAAC,IAAA,EAcG;EAAA,IAAAC,aAAA;EAAA,IAb5BC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IACNC,MAAM,GAAAL,IAAA,CAANK,MAAM;IACNC,KAAK,GAAAN,IAAA,CAALM,KAAK;IACLC,aAAa,GAAAP,IAAA,CAAbO,aAAa;IACbC,aAAa,GAAAR,IAAA,CAAbQ,aAAa;IACbC,eAAe,GAAAT,IAAA,CAAfS,eAAe;IACfC,OAAO,GAAAV,IAAA,CAAPU,OAAO;IACPC,OAAO,GAAAX,IAAA,CAAPW,OAAO;IACPC,UAAU,GAAAZ,IAAA,CAAVY,UAAU;IACVC,UAAU,GAAAb,IAAA,CAAVa,UAAU;IACVC,SAAS,GAAAd,IAAA,CAATc,SAAS;EAET,IAAMC,mBAAmB,GAAGX,MAAM,CAACW,mBAAmB,KAAK,KAAK;EAChE,IAAMC,iBAAiB,GAAGC,OAAO,CAC7BF,mBAAmB,IAAIX,MAAM,CAACc,UAAU,MAAAjB,aAAA,GAAIG,MAAM,CAACe,KAAK,cAAAlB,aAAA,uBAAZA,aAAA,CAAcmB,IAAI,CAAC,CAAC,CACpE,CAAC;EACD,IAAMC,UAAU,GAAGL,iBAAiB,GAAG,QAAQ,GAAG,SAAS;EAC3D,IAAMM,OAAO,GAAG7B,UAAU,CAACa,KAAK,EAAEe,UAAU,EAAEJ,OAAO,CAACL,UAAU,CAAC,CAAC;EAElE,oBACIf,IAAA,CAACP,aAAa;IACVwB,SAAS,EAAEhB,KAAK,CAAC,IAAI,EAAEgB,SAAS,CAAE;IAClCZ,KAAK,EAAEA,KAAK,IAAIV,IAAI,CAAC,iBAAiB,CAAE;IACxCW,IAAI,EAAEA,IAAK;IACXoB,MAAM,eACF1B,IAAA,CAACR,aAAa;MACVe,MAAM,EAAEA,MAAM,CAACe,KAAM;MACrBD,UAAU,EAAEd,MAAM,CAACc,UAAW;MAC9BH,mBAAmB,EAAEA,mBAAoB;MACzCS,QAAQ,EAAEpB,MAAM,CAACoB,QAAS;MAC1BnB,MAAM,EAAEA,MAAO;MACfoB,QAAQ,EAAErB,MAAM,CAACqB;IAAS,CAC7B,CACJ;IAAAC,QAAA,eAED7B,IAAA,CAACN,QAAQ;MAELe,KAAK,EAAEA,KAAM;MACbe,UAAU,EAAEA,UAAW;MACvBd,aAAa,EAAEA,aAAc;MAC7BoB,SAAS,EAAE,SAAXA,SAASA,CAAGC,IAAI;QAAA,OACZpB,aAAa,GAAGA,aAAa,CAACoB,IAAI,CAAC,gBAAG/B,IAAA,CAACH,kBAAkB,EAAAmC,aAAA,KAAKD,IAAI,CAAG,CAAC;MAAA,CACzE;MACDE,eAAe,EAAEb,OAAO,CAACZ,MAAM,CAAE;MACjCK,OAAO,EAAEA,OAAQ;MACjBC,OAAO,EAAEA,OAAQ;MACjBC,UAAU,EAAEA,UAAW;MACvBC,UAAU,EAAEA,UAAW;MACvBkB,WAAW,EAAEtB;IAAgB,GAZxBa,OAaR;EAAC,CACS,CAAC;AAExB,CAAC","ignoreList":[]}
@@ -5,3 +5,8 @@ export default meta;
5
5
  type Story = StoryObj<typeof TutorialsHistory>;
6
6
  export declare const Default: Story;
7
7
  export declare const Empty: Story;
8
+ export declare const InitialLoading: Story;
9
+ export declare const Paginated: Story;
10
+ export declare const LoadingMore: Story;
11
+ export declare const RouterLinks: Story;
12
+ export declare const CustomRowRenderer: Story;
@@ -1,13 +1,40 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
5
+ var _excluded = ["onClick"];
2
6
  import "core-js/modules/es.array.concat.js";
3
7
  import "core-js/modules/es.array.filter.js";
8
+ import "core-js/modules/es.array.from.js";
4
9
  import "core-js/modules/es.array.includes.js";
10
+ import "core-js/modules/es.array.map.js";
5
11
  import "core-js/modules/es.object.to-string.js";
6
12
  import "core-js/modules/es.string.includes.js";
13
+ import "core-js/modules/es.string.iterator.js";
14
+ import "core-js/modules/web.timers.js";
7
15
  import React, { useState } from 'react';
16
+ import { Flex, Icon, Text } from '@gravity-ui/uikit';
17
+ var BookOpenIcon = function BookOpenIcon(props) {
18
+ return /*#__PURE__*/_jsx("svg", _objectSpread(_objectSpread({}, props), {}, {
19
+ children: /*#__PURE__*/_jsx("path", {
20
+ fill: "currentColor",
21
+ fillRule: "evenodd",
22
+ d: "M7.345 2.634q.136.069.268.145L8 3l.387-.221q.133-.076.268-.145a6.7 6.7 0 0 1 6.052-.03c.486.242.793.74.793 1.283v8.938c0 .65-.526 1.175-1.175 1.175h-.04c-.187 0-.37-.05-.529-.146a4.8 4.8 0 0 0-4.61-.177l-.199.1A2.1 2.1 0 0 1 8 14h-.117a1.6 1.6 0 0 1-.726-.171l-.233-.117a4.94 4.94 0 0 0-4.748.183.74.74 0 0 1-.381.105h-.12A1.175 1.175 0 0 1 .5 12.825V3.887c0-.543.307-1.04.793-1.284a6.7 6.7 0 0 1 6.052.03m1.405 9.572V4.3l.382-.218A5.2 5.2 0 0 1 14 3.927v8.357a6.3 6.3 0 0 0-5.25-.078m-1.5.005V4.299l-.382-.218A5.2 5.2 0 0 0 2 3.927v8.365a6.44 6.44 0 0 1 5.25-.082",
23
+ clipRule: "evenodd"
24
+ })
25
+ }));
26
+ };
27
+ BookOpenIcon.defaultProps = {
28
+ xmlns: "http://www.w3.org/2000/svg",
29
+ width: "16",
30
+ height: "16",
31
+ fill: "none",
32
+ viewBox: "0 0 16 16"
33
+ };
34
+ import { HistoryGroupHeader, RowLink } from "../../components";
8
35
  import { TutorialsHistory } from "./TutorialsHistory";
9
36
  import { action } from 'storybook/actions';
10
- import { jsx as _jsx } from "react/jsx-runtime";
37
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
38
  var QUERY = "use test;\n\nSELECT\n \"test_session\" AS session_id,\n \"test_task\" AS task_id,\n SUBSTRING(\"test\", 1, 1) AS truncated_char";
12
39
  var filterFields = [{
13
40
  id: 'onlyMine',
@@ -49,6 +76,56 @@ var BASE_ITEMS = [{
49
76
  query: QUERY,
50
77
  height: 28
51
78
  }];
79
+ var LINK_ITEMS = BASE_ITEMS.map(function (item) {
80
+ return 'id' in item ? _objectSpread(_objectSpread({}, item), {}, {
81
+ href: "/tutorials/".concat(item.id)
82
+ }) : item;
83
+ });
84
+ var PAGINATION_PAGES = [Array.from({
85
+ length: 8
86
+ }, function (_, index) {
87
+ return {
88
+ id: "basics-".concat(index + 1),
89
+ title: "YQL basics: lesson ".concat(index + 1),
90
+ query: QUERY,
91
+ href: "/tutorials/basics-".concat(index + 1),
92
+ height: 28
93
+ };
94
+ }), Array.from({
95
+ length: 8
96
+ }, function (_, index) {
97
+ return {
98
+ id: "advanced-".concat(index + 1),
99
+ title: "Advanced YQL: lesson ".concat(index + 1),
100
+ query: QUERY,
101
+ href: "/tutorials/advanced-".concat(index + 1),
102
+ height: 28
103
+ };
104
+ })];
105
+ var CUSTOM_ROW_ITEMS = [{
106
+ header: 'Getting started',
107
+ height: 28
108
+ }, {
109
+ id: '01HZXB4K8P7Y2Q9T6M3N5R1C0A',
110
+ title: 'Getting started with YQL',
111
+ href: '/tutorials/getting-started',
112
+ height: 32
113
+ }];
114
+ var renderRouterLink = function renderRouterLink(_ref) {
115
+ var _onClick = _ref.onClick,
116
+ props = _objectWithoutProperties(_ref, _excluded);
117
+ return /*#__PURE__*/_jsx("a", _objectSpread(_objectSpread({}, props), {}, {
118
+ "data-router-link": true,
119
+ onClick: function onClick(event) {
120
+ _onClick === null || _onClick === void 0 || _onClick(event);
121
+ if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
122
+ return;
123
+ }
124
+ event.preventDefault();
125
+ action('routerNavigate')(props.href);
126
+ }
127
+ }));
128
+ };
52
129
  var meta = {
53
130
  title: 'Widgets/TutorialsHistory',
54
131
  component: TutorialsHistory,
@@ -136,6 +213,117 @@ var EmptyStory = function EmptyStory() {
136
213
  })
137
214
  });
138
215
  };
216
+ var PaginatedStory = function PaginatedStory() {
217
+ var _useState7 = useState(PAGINATION_PAGES[0]),
218
+ _useState8 = _slicedToArray(_useState7, 2),
219
+ items = _useState8[0],
220
+ setItems = _useState8[1];
221
+ var _useState9 = useState(1),
222
+ _useState0 = _slicedToArray(_useState9, 2),
223
+ page = _useState0[0],
224
+ setPage = _useState0[1];
225
+ var _useState1 = useState(false),
226
+ _useState10 = _slicedToArray(_useState1, 2),
227
+ loading = _useState10[0],
228
+ setLoading = _useState10[1];
229
+ var handleLoadMore = function handleLoadMore() {
230
+ var nextPage = PAGINATION_PAGES[page];
231
+ if (loading || !nextPage) {
232
+ return;
233
+ }
234
+ action('onLoadMore')(page);
235
+ setLoading(true);
236
+ window.setTimeout(function () {
237
+ setItems(function (currentItems) {
238
+ return [].concat(_toConsumableArray(currentItems), _toConsumableArray(nextPage));
239
+ });
240
+ setPage(function (currentPage) {
241
+ return currentPage + 1;
242
+ });
243
+ setLoading(false);
244
+ }, 1500);
245
+ };
246
+ return /*#__PURE__*/_jsx("div", {
247
+ style: {
248
+ width: 300,
249
+ height: 300
250
+ },
251
+ children: /*#__PURE__*/_jsx(TutorialsHistory, {
252
+ title: "Paginated tutorials",
253
+ items: items,
254
+ selectedRowId: "basics-2",
255
+ loading: loading,
256
+ hasMore: page < PAGINATION_PAGES.length,
257
+ onLoadMore: handleLoadMore,
258
+ renderLink: renderRouterLink,
259
+ search: {
260
+ onUpdate: action('onSearchUpdate')
261
+ }
262
+ })
263
+ });
264
+ };
265
+ var RouterLinksStory = function RouterLinksStory() {
266
+ var _useState11 = useState({
267
+ value: '',
268
+ fullSearch: false
269
+ }),
270
+ _useState12 = _slicedToArray(_useState11, 2),
271
+ search = _useState12[0],
272
+ setSearch = _useState12[1];
273
+ return /*#__PURE__*/_jsx("div", {
274
+ style: {
275
+ width: 500,
276
+ height: 500
277
+ },
278
+ children: /*#__PURE__*/_jsx(TutorialsHistory, {
279
+ title: "Router links",
280
+ items: LINK_ITEMS,
281
+ renderLink: renderRouterLink,
282
+ search: _objectSpread(_objectSpread({}, search), {}, {
283
+ hasClear: true,
284
+ onUpdate: setSearch
285
+ })
286
+ })
287
+ });
288
+ };
289
+ var CustomRowRendererStory = function CustomRowRendererStory() {
290
+ return /*#__PURE__*/_jsx("div", {
291
+ style: {
292
+ width: 400,
293
+ height: 300
294
+ },
295
+ children: /*#__PURE__*/_jsx(TutorialsHistory, {
296
+ title: "Custom tutorial rows",
297
+ items: CUSTOM_ROW_ITEMS,
298
+ selectedRowId: "01HZXB4K8P7Y2Q9T6M3N5R1C0A",
299
+ renderLink: renderRouterLink,
300
+ renderRowItem: function renderRowItem(_ref2) {
301
+ var item = _ref2.item,
302
+ renderLink = _ref2.renderLink;
303
+ return 'header' in item ? /*#__PURE__*/_jsx(HistoryGroupHeader, {
304
+ title: item.header
305
+ }) : /*#__PURE__*/_jsx(RowLink, {
306
+ href: item.href,
307
+ renderLink: renderLink,
308
+ children: /*#__PURE__*/_jsxs(Flex, {
309
+ alignItems: "center",
310
+ gap: 2,
311
+ children: [/*#__PURE__*/_jsx(Icon, {
312
+ data: BookOpenIcon,
313
+ size: 16
314
+ }), /*#__PURE__*/_jsx(Text, {
315
+ ellipsis: true,
316
+ children: item.title
317
+ })]
318
+ })
319
+ });
320
+ },
321
+ search: {
322
+ onUpdate: action('onSearchUpdate')
323
+ }
324
+ })
325
+ });
326
+ };
139
327
  export var Default = {
140
328
  render: function render() {
141
329
  return /*#__PURE__*/_jsx(DefaultStory, {});
@@ -146,4 +334,59 @@ export var Empty = {
146
334
  return /*#__PURE__*/_jsx(EmptyStory, {});
147
335
  }
148
336
  };
337
+ export var InitialLoading = {
338
+ args: {
339
+ title: 'Loading tutorials',
340
+ items: [],
341
+ loading: true,
342
+ search: {
343
+ onUpdate: action('onSearchUpdate')
344
+ }
345
+ },
346
+ decorators: [function (StoryComponent) {
347
+ return /*#__PURE__*/_jsx("div", {
348
+ style: {
349
+ width: 300,
350
+ height: 500
351
+ },
352
+ children: /*#__PURE__*/_jsx(StoryComponent, {})
353
+ });
354
+ }]
355
+ };
356
+ export var Paginated = {
357
+ render: function render() {
358
+ return /*#__PURE__*/_jsx(PaginatedStory, {});
359
+ }
360
+ };
361
+ export var LoadingMore = {
362
+ args: {
363
+ title: 'Loading next page',
364
+ items: PAGINATION_PAGES[0],
365
+ loading: true,
366
+ hasMore: true,
367
+ onLoadMore: action('onLoadMore'),
368
+ search: {
369
+ onUpdate: action('onSearchUpdate')
370
+ }
371
+ },
372
+ decorators: [function (StoryComponent) {
373
+ return /*#__PURE__*/_jsx("div", {
374
+ style: {
375
+ width: 300,
376
+ height: 300
377
+ },
378
+ children: /*#__PURE__*/_jsx(StoryComponent, {})
379
+ });
380
+ }]
381
+ };
382
+ export var RouterLinks = {
383
+ render: function render() {
384
+ return /*#__PURE__*/_jsx(RouterLinksStory, {});
385
+ }
386
+ };
387
+ export var CustomRowRenderer = {
388
+ render: function render() {
389
+ return /*#__PURE__*/_jsx(CustomRowRendererStory, {});
390
+ }
391
+ };
149
392
  // #sourceMappingURL=TutorialsHistory.stories.js.map