Skip to content

Commit 2941a97

Browse files
authored
feat(metadata-sidebar): disable delete button (#3677)
* feat(metadata-sidebar): disable delete button * feat(metadata-sidebar): remove console.log * feat(metadata-sidebar): unit tests * feat(metadata-sidebar): storybook tests
1 parent 549188a commit 2941a97

File tree

6 files changed

+63
-7
lines changed

6 files changed

+63
-7
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
"@box/cldr-data": "^34.2.0",
129129
"@box/frontend": "^10.0.0",
130130
"@box/languages": "^1.0.0",
131-
"@box/metadata-editor": "^0.53.0",
131+
"@box/metadata-editor": "^0.54.0",
132132
"@box/react-virtualized": "9.22.3-rc-box.9",
133133
"@cfaester/enzyme-adapter-react-18": "^0.8.0",
134134
"@chromatic-com/storybook": "^1.6.1",
@@ -304,7 +304,7 @@
304304
"@box/blueprint-web-assets": "^4.21.0",
305305
"@box/box-ai-content-answers": "^0.49.1",
306306
"@box/cldr-data": ">=34.2.0",
307-
"@box/metadata-editor": "^0.53.0",
307+
"@box/metadata-editor": "^0.54.0",
308308
"@box/react-virtualized": "9.22.3-rc-box.9",
309309
"@hapi/address": "^2.1.4",
310310
"axios": "^0.25.0",

src/elements/content-sidebar/MetadataInstanceEditor.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import React from 'react';
99

1010
export interface MetadataInstanceEditorProps {
1111
isBoxAiSuggestionsEnabled: boolean;
12+
isDeleteButtonDisabled: boolean;
1213
isUnsavedChangesModalOpen: boolean;
1314
onCancel: () => void;
1415
onDelete: (metadataInstance: MetadataTemplateInstance) => void;
@@ -19,6 +20,7 @@ export interface MetadataInstanceEditorProps {
1920

2021
const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
2122
isBoxAiSuggestionsEnabled,
23+
isDeleteButtonDisabled,
2224
isUnsavedChangesModalOpen,
2325
onDelete,
2426
onSubmit,
@@ -34,6 +36,7 @@ const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
3436
<AutofillContextProvider isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}>
3537
<MetadataInstanceForm
3638
isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}
39+
isDeleteButtonDisabled={isDeleteButtonDisabled}
3740
isUnsavedChangesModalOpen={isUnsavedChangesModalOpen}
3841
selectedTemplateInstance={template}
3942
onCancel={handleCancel}

src/elements/content-sidebar/MetadataSidebarRedesign.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function MetadataSidebarRedesign({
8787

8888
const [editingTemplate, setEditingTemplate] = React.useState<MetadataTemplateInstance | null>(null);
8989
const [isUnsavedChangesModalOpen, setIsUnsavedChangesModalOpen] = React.useState<boolean>(false);
90-
90+
const [isDeleteButtonDisabled, setIsDeleteButtonDisabled] = React.useState<boolean>(false);
9191
const [selectedTemplates, setSelectedTemplates] =
9292
React.useState<Array<MetadataTemplateInstance | MetadataTemplate>>(templateInstances);
9393

@@ -102,6 +102,7 @@ function MetadataSidebarRedesign({
102102
const handleTemplateSelect = (selectedTemplate: MetadataTemplate) => {
103103
setSelectedTemplates([...selectedTemplates, selectedTemplate]);
104104
setEditingTemplate(convertTemplateToTemplateInstance(file, selectedTemplate));
105+
setIsDeleteButtonDisabled(true);
105106
};
106107

107108
const handleDeleteInstance = (metadataInstance: MetadataTemplateInstance) => {
@@ -163,6 +164,7 @@ function MetadataSidebarRedesign({
163164
{editingTemplate && (
164165
<MetadataInstanceEditor
165166
isBoxAiSuggestionsEnabled={isBoxAiSuggestionsEnabled}
167+
isDeleteButtonDisabled={isDeleteButtonDisabled}
166168
isUnsavedChangesModalOpen={isUnsavedChangesModalOpen}
167169
onCancel={() => setEditingTemplate(null)}
168170
onSubmit={handleSubmit}
@@ -176,6 +178,7 @@ function MetadataSidebarRedesign({
176178
isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}
177179
onEdit={templateInstance => {
178180
setEditingTemplate(templateInstance);
181+
setIsDeleteButtonDisabled(false);
179182
}}
180183
onEditWithAutofill={noop}
181184
templateInstances={templateInstances}

src/elements/content-sidebar/__tests__/MetadataInstanceEditor.test.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ describe('MetadataInstanceEditor', () => {
2626

2727
const defaultProps: MetadataInstanceEditorProps = {
2828
isBoxAiSuggestionsEnabled: true,
29+
isDeleteButtonDisabled: false,
2930
isUnsavedChangesModalOpen: false,
3031
template: mockMetadataTemplate,
3132
onCancel: jest.fn(),
@@ -70,4 +71,19 @@ describe('MetadataInstanceEditor', () => {
7071
const unsavedChangesModal = screen.getByText('Unsaved Changes');
7172
expect(unsavedChangesModal).toBeInTheDocument();
7273
});
74+
75+
test('should render MetadataInstanceForm with Delete button disabled', () => {
76+
const props = { ...defaultProps, isDeleteButtonDisabled: true };
77+
render(<MetadataInstanceEditor {...props} />);
78+
79+
const deleteButton = screen.getByRole('button', { name: 'Delete' });
80+
expect(deleteButton).toBeDisabled();
81+
});
82+
83+
test('should render MetadataInstanceForm with Delete button enabled', () => {
84+
render(<MetadataInstanceEditor {...defaultProps} />);
85+
86+
const deleteButton = screen.getByRole('button', { name: 'Delete' });
87+
expect(deleteButton).toBeEnabled();
88+
});
7389
});

src/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,37 @@ export const MetadataInstanceEditorCancelChanges: StoryObj<typeof MetadataSideba
214214
);
215215
},
216216
};
217+
218+
export const DeleteButtonIsDisabledWhenAddingNewMetadataTemplate: StoryObj<typeof MetadataSidebarRedesign> = {
219+
play: async ({ canvasElement }) => {
220+
const canvas = within(canvasElement);
221+
222+
const addTemplateButton = await canvas.findByRole('button', { name: 'Add template' }, { timeout: 5000 });
223+
expect(addTemplateButton).toBeInTheDocument();
224+
await userEvent.click(addTemplateButton);
225+
226+
const customMetadataOption = canvas.getByRole('option', { name: 'Virus Scan' });
227+
expect(customMetadataOption).toBeInTheDocument();
228+
await userEvent.click(customMetadataOption);
229+
230+
const deleteButton = await canvas.findByRole('button', { name: 'Delete' });
231+
expect(deleteButton).toBeDisabled();
232+
},
233+
};
234+
235+
export const DeleteButtonIsEnabledWhenEditingMetadataTemplateInstance: StoryObj<typeof MetadataSidebarRedesign> = {
236+
play: async ({ canvasElement }) => {
237+
const canvas = within(canvasElement);
238+
239+
const editMetadataInstanceButton = await canvas.findByRole(
240+
'button',
241+
{ name: 'Edit My Template' },
242+
{ timeout: 5000 },
243+
);
244+
expect(editMetadataInstanceButton).toBeInTheDocument();
245+
await userEvent.click(editMetadataInstanceButton);
246+
247+
const deleteButton = await canvas.findByRole('button', { name: 'Delete' });
248+
expect(deleteButton).toBeEnabled();
249+
},
250+
};

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,10 +1569,10 @@
15691569
resolved "https://registry.yarnpkg.com/@box/languages/-/languages-1.1.2.tgz#cd4266b3da62da18560d881e10b429653186be29"
15701570
integrity sha512-d64TGosx+KRmrLZj4CIyLp42LUiEbgBJ8n8cviMQwTJmfU0g+UwZqLjmQZR1j+Q9D64yV4xHzY9K1t5nInWWeQ==
15711571

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

15771577
"@box/react-virtualized@9.22.3-rc-box.9":
15781578
version "9.22.3-rc-box.9"

0 commit comments

Comments
 (0)