This commit is contained in:
Nate Kelley 2025-03-17 11:43:25 -06:00
parent 3999262ce8
commit a496169741
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
8 changed files with 120 additions and 10 deletions

View File

@ -1,6 +1,6 @@
import React, { useMemo } from 'react';
import { ShareRole } from '@/api/asset_interfaces';
import { DropdownItem, DropdownItems, DropdownLabel } from '@/components/ui/dropdown';
import { DropdownItem, DropdownLabel } from '@/components/ui/dropdown';
import { Text } from '@/components/ui/typography';
import { useMemoizedFn } from '@/hooks';
import { Separator } from '@/components/ui/seperator';

View File

@ -6,7 +6,7 @@ import { AppTooltip } from '@/components/ui/tooltip';
import { useMemoizedFn } from '@/hooks';
import { BusterShare, ShareAssetType } from '@/api/asset_interfaces';
import { ShareMenuContent } from './ShareMenuContent';
import { isShareMenuVisible } from './publicHelpers';
import { isShareMenuVisible } from './helpers';
import { ShareMenuTopBar, ShareMenuTopBarOptions } from './ShareMenuTopBar';
import { createBusterRoute, BusterRoutes } from '@/routes';
import { useBusterNotifications } from '@/context/BusterNotifications';

View File

@ -0,0 +1,114 @@
import type { Meta, StoryObj } from '@storybook/react';
import { ShareMenuContent } from './ShareMenuContent';
import { BusterShare, ShareAssetType, ShareRole } from '@/api/asset_interfaces';
import { ShareMenuTopBarOptions } from './ShareMenuTopBar';
const meta: Meta<typeof ShareMenuContent> = {
title: 'Features/Share/ShareMenuContent',
component: ShareMenuContent,
parameters: {
layout: 'centered'
},
decorators: [
(Story) => (
<div
style={{
width: '400px',
height: '400px',
display: 'flex',
justifyContent: 'center',
alignItems: 'center'
}}>
<Story />
</div>
)
]
};
export default meta;
type Story = StoryObj<typeof ShareMenuContent>;
const mockShareAssetConfig: BusterShare = {
sharingKey: 'test-key',
individual_permissions: [
{
email: 'test@example.com',
role: ShareRole.VIEWER,
id: '1',
name: 'Test User'
}
],
team_permissions: [
{
name: 'Engineering',
id: 'team-1',
role: ShareRole.EDITOR
}
],
organization_permissions: [],
password_secret_id: null,
public_expiry_date: null,
public_enabled_by: null,
publicly_accessible: false,
public_password: null,
permission: ShareRole.OWNER
};
export const ShareTab: Story = {
args: {
shareAssetConfig: mockShareAssetConfig,
assetId: 'test-asset-id',
assetType: ShareAssetType.METRIC,
selectedOptions: ShareMenuTopBarOptions.Share,
onCopyLink: () => console.log('Copy link clicked'),
setOpenShareWithGroupAndTeam: () => console.log('Open share with group and team'),
goBack: () => console.log('Go back clicked')
}
};
export const PublishTab: Story = {
args: {
...ShareTab.args,
selectedOptions: ShareMenuTopBarOptions.Publish
}
};
export const EmbedTab: Story = {
args: {
...ShareTab.args,
selectedOptions: ShareMenuTopBarOptions.Embed
}
};
export const ShareWithGroupAndTeamTab: Story = {
args: {
...ShareTab.args,
selectedOptions: ShareMenuTopBarOptions.ShareWithGroupAndTeam
}
};
export const DashboardAsset: Story = {
args: {
...ShareTab.args,
assetType: ShareAssetType.DASHBOARD
}
};
export const CollectionAsset: Story = {
args: {
...ShareTab.args,
assetType: ShareAssetType.COLLECTION
}
};
export const WithPublicAccess: Story = {
args: {
...ShareTab.args,
shareAssetConfig: {
...mockShareAssetConfig,
publicly_accessible: true,
public_password: 'test-password',
public_expiry_date: '2024-12-31T23:59:59Z'
}
}
};

View File

@ -1,7 +1,6 @@
import { type BusterShare, ShareRole, ShareAssetType } from '@/api/asset_interfaces';
import React, { useState } from 'react';
import { type BusterShare, ShareAssetType } from '@/api/asset_interfaces';
import React from 'react';
import { ShareMenuTopBarOptions } from './ShareMenuTopBar';
import { useMemoizedFn } from '@/hooks';
import { ShareMenuContentBody } from './ShareMenuContentBody';
export const ShareMenuContent: React.FC<{

View File

@ -1,2 +1 @@
export * from './ShareMenu';
export * from './publicHelpers';

View File

@ -412,9 +412,7 @@ const useDeleteMetricSelectMenu = ({ metricId }: { metricId: string }) => {
};
const useRenameMetricSelectMenu = ({ metricId }: { metricId: string }) => {
const { mutateAsync: updateMetric } = useUpdateMetric();
const onSetFileView = useChatLayoutContextSelector((x) => x.onSetFileView);
return useMemo(
() => ({
label: 'Rename metric',
@ -444,6 +442,6 @@ export const useShareMenuSelectMenu = ({ metricId }: { metricId: string }) => {
icon: <ShareRight />,
items: [<div className="bg-red-200 p-2">SWAG</div>]
}),
[]
[metricId]
);
};

View File

@ -25,5 +25,5 @@
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules", "**/*.stories.tsx", "**/*.stories.ts"]
"exclude": ["node_modules"]
}