Skip to content

Commit

Permalink
feat(metadata-sidebar): disable delete button (#3677)
Browse files Browse the repository at this point in the history
* feat(metadata-sidebar): disable delete button

* feat(metadata-sidebar): remove console.log

* feat(metadata-sidebar): unit tests

* feat(metadata-sidebar): storybook tests
  • Loading branch information
karolinaru authored and jankowiakdawid committed Sep 27, 2024
1 parent 54bba6f commit 31e646c
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 7 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@
"@box/cldr-data": "^34.2.0",
"@box/frontend": "^10.0.0",
"@box/languages": "^1.0.0",
"@box/metadata-editor": "^0.53.0",
"@box/metadata-editor": "^0.54.0",
"@box/react-virtualized": "9.22.3-rc-box.9",
"@cfaester/enzyme-adapter-react-18": "^0.8.0",
"@chromatic-com/storybook": "^1.6.1",
Expand Down Expand Up @@ -304,7 +304,7 @@
"@box/blueprint-web-assets": "^4.21.0",
"@box/box-ai-content-answers": "^0.49.1",
"@box/cldr-data": ">=34.2.0",
"@box/metadata-editor": "^0.53.0",
"@box/metadata-editor": "^0.54.0",
"@box/react-virtualized": "9.22.3-rc-box.9",
"@hapi/address": "^2.1.4",
"axios": "^0.25.0",
Expand Down
3 changes: 3 additions & 0 deletions src/elements/content-sidebar/MetadataInstanceEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import React from 'react';

export interface MetadataInstanceEditorProps {
isBoxAiSuggestionsEnabled: boolean;
isDeleteButtonDisabled: boolean;
isUnsavedChangesModalOpen: boolean;
onCancel: () => void;
onDelete: (metadataInstance: MetadataTemplateInstance) => void;
Expand All @@ -19,6 +20,7 @@ export interface MetadataInstanceEditorProps {

const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
isBoxAiSuggestionsEnabled,
isDeleteButtonDisabled,
isUnsavedChangesModalOpen,
onDelete,
onSubmit,
Expand All @@ -34,6 +36,7 @@ const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
<AutofillContextProvider isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}>
<MetadataInstanceForm
isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}
isDeleteButtonDisabled={isDeleteButtonDisabled}
isUnsavedChangesModalOpen={isUnsavedChangesModalOpen}
selectedTemplateInstance={template}
onCancel={handleCancel}
Expand Down
5 changes: 4 additions & 1 deletion src/elements/content-sidebar/MetadataSidebarRedesign.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ function MetadataSidebarRedesign({ api, elementId, fileId, onError, isFeatureEna

const [editingTemplate, setEditingTemplate] = React.useState<MetadataTemplateInstance | null>(null);
const [isUnsavedChangesModalOpen, setIsUnsavedChangesModalOpen] = React.useState<boolean>(false);

const [isDeleteButtonDisabled, setIsDeleteButtonDisabled] = React.useState<boolean>(false);
const [selectedTemplates, setSelectedTemplates] =
React.useState<Array<MetadataTemplateInstance | MetadataTemplate>>(templateInstances);

Expand All @@ -96,6 +96,7 @@ function MetadataSidebarRedesign({ api, elementId, fileId, onError, isFeatureEna
const handleTemplateSelect = (selectedTemplate: MetadataTemplate) => {
setSelectedTemplates([...selectedTemplates, selectedTemplate]);
setEditingTemplate(convertTemplateToTemplateInstance(file, selectedTemplate));
setIsDeleteButtonDisabled(true);
};

const handleDeleteInstance = (metadataInstance: MetadataTemplateInstance) => {
Expand Down Expand Up @@ -157,6 +158,7 @@ function MetadataSidebarRedesign({ api, elementId, fileId, onError, isFeatureEna
{editingTemplate && (
<MetadataInstanceEditor
isBoxAiSuggestionsEnabled={isBoxAiSuggestionsEnabled}
isDeleteButtonDisabled={isDeleteButtonDisabled}
isUnsavedChangesModalOpen={isUnsavedChangesModalOpen}
onCancel={() => setEditingTemplate(null)}
onSubmit={handleSubmit}
Expand All @@ -170,6 +172,7 @@ function MetadataSidebarRedesign({ api, elementId, fileId, onError, isFeatureEna
isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}
onEdit={templateInstance => {
setEditingTemplate(templateInstance);
setIsDeleteButtonDisabled(false);
}}
onEditWithAutofill={noop}
templateInstances={templateInstances}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ describe('MetadataInstanceEditor', () => {

const defaultProps: MetadataInstanceEditorProps = {
isBoxAiSuggestionsEnabled: true,
isDeleteButtonDisabled: false,
isUnsavedChangesModalOpen: false,
template: mockMetadataTemplate,
onCancel: jest.fn(),
Expand Down Expand Up @@ -70,4 +71,19 @@ describe('MetadataInstanceEditor', () => {
const unsavedChangesModal = screen.getByText('Unsaved Changes');
expect(unsavedChangesModal).toBeInTheDocument();
});

test('should render MetadataInstanceForm with Delete button disabled', () => {
const props = { ...defaultProps, isDeleteButtonDisabled: true };
render(<MetadataInstanceEditor {...props} />);

const deleteButton = screen.getByRole('button', { name: 'Delete' });
expect(deleteButton).toBeDisabled();
});

test('should render MetadataInstanceForm with Delete button enabled', () => {
render(<MetadataInstanceEditor {...defaultProps} />);

const deleteButton = screen.getByRole('button', { name: 'Delete' });
expect(deleteButton).toBeEnabled();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -245,3 +245,37 @@ export const MetadataInstanceEditorAIEnabled: StoryObj<typeof MetadataSidebarRed
expect(autofillButton).toBeInTheDocument();
},
};

export const DeleteButtonIsDisabledWhenAddingNewMetadataTemplate: StoryObj<typeof MetadataSidebarRedesign> = {
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);

const addTemplateButton = await canvas.findByRole('button', { name: 'Add template' }, { timeout: 5000 });
expect(addTemplateButton).toBeInTheDocument();
await userEvent.click(addTemplateButton);

const customMetadataOption = canvas.getByRole('option', { name: 'Virus Scan' });
expect(customMetadataOption).toBeInTheDocument();
await userEvent.click(customMetadataOption);

const deleteButton = await canvas.findByRole('button', { name: 'Delete' });
expect(deleteButton).toBeDisabled();
},
};

export const DeleteButtonIsEnabledWhenEditingMetadataTemplateInstance: StoryObj<typeof MetadataSidebarRedesign> = {
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);

const editMetadataInstanceButton = await canvas.findByRole(
'button',
{ name: 'Edit My Template' },
{ timeout: 5000 },
);
expect(editMetadataInstanceButton).toBeInTheDocument();
await userEvent.click(editMetadataInstanceButton);

const deleteButton = await canvas.findByRole('button', { name: 'Delete' });
expect(deleteButton).toBeEnabled();
},
};
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1569,10 +1569,10 @@
resolved "https://registry.yarnpkg.com/@box/languages/-/languages-1.1.2.tgz#cd4266b3da62da18560d881e10b429653186be29"
integrity sha512-d64TGosx+KRmrLZj4CIyLp42LUiEbgBJ8n8cviMQwTJmfU0g+UwZqLjmQZR1j+Q9D64yV4xHzY9K1t5nInWWeQ==

"@box/metadata-editor@^0.53.0":
version "0.53.0"
resolved "https://registry.yarnpkg.com/@box/metadata-editor/-/metadata-editor-0.53.0.tgz#913851d2a8ad52e42b3f919a708f132d36f5be2b"
integrity sha512-W9BVauKnkHdaw3jmii2W25N0kWD0K9luITQpvM8zHjbHy5mNRAg8fX7tHmcNKR+kUyCpThW+QcWRHKf+3F3CsA==
"@box/metadata-editor@^0.54.0":
version "0.54.0"
resolved "https://registry.yarnpkg.com/@box/metadata-editor/-/metadata-editor-0.54.0.tgz#699266252fca2b776eb9df814b158d988e719f01"
integrity sha512-Og7w6DsoDoXpuujDcnrlTWiTmVONuuWDwDitcrXflNkxsx9ZVvgTFwKD9SVj2yW5HjMM5X46X1qHYDe40qDXkg==

"@box/[email protected]":
version "9.22.3-rc-box.9"
Expand Down

0 comments on commit 31e646c

Please sign in to comment.