-
Notifications
You must be signed in to change notification settings - Fork 314
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(metadata-sidebar): Metadata sidebar redesign (#3654)
* feat(metadata-sidebar): Add metadata add template dropdown menu (#3606) * feat(metadata-sidebar): Add AddMetadataTemplateDropdown and improve basic styling * feat(metadata-sidebar): Fix failing tests Extend Jest configuration to not transforming metadata-editor code * feat(metadata-sidebar): add AddMetadataTemplateDropdown To MetadataSidebarRedesign * feat(content-sidebar): Bring back changes to mockServiceWorker.js No idea why they got there in the first place * feat(metadata-sidebar): update storybook * feat(metadata-sidebar): PR comments * feat(metadata-sidebar): simplify storybook * feat(metadata-sidebar): enum status * feat(metadata-sidebar): global variables and enum upper case change * feat(metadata-sidebar): useSidebarMetadataFetcher tests * feat(metadata-sidebar): useSidebarMetadataFetcher tests * feat(metadata-sidebar): PR comments * feat(metadata-sidebar): PR comments * feat(metadata-sidebar): loading status test * feat(metadata-sidebar): use SidebarContent + tests * feat(metadata-sidebar): template dropdown menu nit fixes --------- Co-authored-by: Karolina Rusek-Bieniek <[email protected]> Co-authored-by: Wiola <[email protected]> * feat(metadata-sidebar): add metadata empty state to metadata sidebar redesign (#3605) * chore(content-sidebar): Temporarily remove files while we be working with not yet publish internal library. Will remove this commit after the library will become publicly available on NPM and added to BUIE. feat(metadata-sidebar): MetadataEmptyState feat(metadata-sidebar): comment api to pass test feat(metadata-sidebar): uncomment comments feat(metadata-sidebar): add states feat(metadata-sidebar): tests update feat(metadata-sidebar): PR comments feat(metadata-sidebar): delete git add . in showEditor feat(metadata-sidebar): PR comments feat(metadata-sidebar): storybook tests feat(metadata-sidebar): update unit tests feat(metadata-sidebar): pr comments feat(metadata-sidebar): variables name changes feat(metadata-sidebar): PR comments feat(metadata-sidebar): PR comments feat(metadata-sidebar): global token change and status enum feat(metadata-sidebar): global token update feat(metadata-sidebar): global variables and enum upper case change feat(metadata-sidebar): PR comments feat(metadata-sidebar): styles import and title deletion feat(metadata-sidebar): convert type to interface * feat(metadata-sidebar): missing tests after rebase --------- Co-authored-by: Dawid Jankowiak <[email protected]> * feat(metadata-sidebar): Metadata Instance Editor (#3632) * feat(metadata-sidebar): metadata instance editor * feat(metadata-sidebar): modal and tests * feat(metadata-sidebar): isLoading change * feat(metadata-sidebar): change imports * feat(metadata-sidebar): pr comments * feat(metadata-sidebar): Metadata.test.js test fix * feat(metadata-sidebar): modal story additional check * feat(metadata-sidebar): modal open prop * feat(metadata-sidebar): stories * feat(metadata-sidebar): lint comments * feat(metadata-sidebar): stories update * feat(metadata-sidebar): Disable lint for 2 console.logs --------- Co-authored-by: Karolina Rusek-Bieniek <[email protected]> Co-authored-by: Wiola <[email protected]> Co-authored-by: karolinaru <[email protected]> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
- Loading branch information
1 parent
2b564de
commit fe4fede
Showing
14 changed files
with
838 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { | ||
MetadataInstanceForm, | ||
type MetadataTemplateInstance, | ||
UnsavedChangesModal, | ||
type MetadataTemplate, | ||
} from '@box/metadata-editor'; | ||
import React from 'react'; | ||
|
||
export interface MetadataInstanceEditorProps { | ||
isBoxAiSuggestionsEnabled: boolean; | ||
isUnsavedChangesModalOpen: boolean; | ||
template: MetadataTemplateInstance | MetadataTemplate; | ||
} | ||
|
||
const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({ | ||
isBoxAiSuggestionsEnabled, | ||
isUnsavedChangesModalOpen, | ||
template, | ||
}) => { | ||
const handleSubmit = () => { | ||
// TODO in a future PR | ||
}; | ||
const handleCancel = () => { | ||
// TODO in a future PR | ||
}; | ||
const handleDelete = () => { | ||
// TODO in a future PR | ||
}; | ||
|
||
return ( | ||
<> | ||
<MetadataInstanceForm | ||
isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled} | ||
isLoading={false} | ||
selectedTemplateInstance={template} | ||
onCancel={handleCancel} | ||
onDelete={handleDelete} | ||
onSubmit={handleSubmit} | ||
/> | ||
<UnsavedChangesModal | ||
onDismiss={handleCancel} | ||
onSaveAndContinue={handleSubmit} | ||
open={isUnsavedChangesModalOpen} | ||
/> | ||
</> | ||
); | ||
}; | ||
|
||
export default MetadataInstanceEditor; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,15 @@ | ||
@import '../common/variables'; | ||
@import '~@box/blueprint-web-assets/tokens/tokens.scss'; | ||
|
||
.bcs-MetadataSidebarRedesign { | ||
padding-inline: 10px; | ||
border-left: 1px solid $gray-10; | ||
|
||
.bcs-MetadataSidebarRedesign-content { | ||
position: absolute; | ||
top: 0; | ||
right: 0; | ||
bottom: 0; | ||
left: 0; | ||
padding: $space-2; | ||
background-color: $gray-02; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
src/elements/content-sidebar/__tests__/MetadataInstanceEditor.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import React from 'react'; | ||
import { type MetadataTemplate } from '@box/metadata-editor'; | ||
import { screen, render } from '../../../test-utils/testing-library'; | ||
import MetadataInstanceEditor, { MetadataInstanceEditorProps } from '../MetadataInstanceEditor'; | ||
|
||
describe('MetadataInstanceEditor', () => { | ||
const mockCustomMetadataTemplate: MetadataTemplate = { | ||
id: 'template-id', | ||
fields: [], | ||
scope: 'global', | ||
templateKey: 'properties', | ||
type: 'template-id', | ||
hidden: false, | ||
}; | ||
|
||
const mockMetadataTemplate: MetadataTemplate = { ...mockCustomMetadataTemplate, displayName: 'Template Name' }; | ||
|
||
const defaultProps: MetadataInstanceEditorProps = { | ||
isBoxAiSuggestionsEnabled: true, | ||
isUnsavedChangesModalOpen: false, | ||
template: mockMetadataTemplate, | ||
}; | ||
|
||
test('should render MetadataInstanceForm with correct props', () => { | ||
render(<MetadataInstanceEditor {...defaultProps} />); | ||
|
||
const templateHeader = screen.getByText(mockMetadataTemplate.displayName); | ||
expect(templateHeader).toBeInTheDocument(); | ||
}); | ||
|
||
test('should render MetadataInstanceForm with Custom Template', () => { | ||
const props = { ...defaultProps, template: mockCustomMetadataTemplate }; | ||
render(<MetadataInstanceEditor {...props} />); | ||
|
||
const templateHeader = screen.getByText('Custom Metadata'); | ||
expect(templateHeader).toBeInTheDocument(); | ||
}); | ||
|
||
test('should render UnsavedChangesModal if isUnsavedChangesModalOpen is true', () => { | ||
// Mock window.matchMedia to simulate media query behavior for this test, | ||
// as the UnsavedChangesModal component relies on it. | ||
Object.defineProperty(window, 'matchMedia', { | ||
writable: true, | ||
value: jest.fn().mockImplementation(query => ({ | ||
matches: false, | ||
media: query, | ||
onchange: null, | ||
addEventListener: jest.fn(), | ||
removeEventListener: jest.fn(), | ||
dispatchEvent: jest.fn(), | ||
})), | ||
}); | ||
|
||
const props = { ...defaultProps, isUnsavedChangesModalOpen: true }; | ||
render(<MetadataInstanceEditor {...props} />); | ||
|
||
const unsavedChangesModal = screen.getByText('Unsaved Changes'); | ||
expect(unsavedChangesModal).toBeInTheDocument(); | ||
}); | ||
}); |
Oops, something went wrong.