box-ui-elements 23.4.0-beta.19 → 23.4.0-beta.20

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 (26) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/picker.js +1 -1
  3. package/dist/preview.js +1 -1
  4. package/dist/sidebar.js +1 -1
  5. package/dist/uploader.js +1 -1
  6. package/es/elements/common/types/SidebarNavigation.js.flow +1 -1
  7. package/es/elements/common/types/SidebarNavigation.js.map +1 -1
  8. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +38 -8
  9. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +104 -48
  10. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -1
  11. package/es/elements/content-sidebar/versions/VersionsSidebar.js +37 -8
  12. package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +101 -48
  13. package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
  14. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +2 -1
  15. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +3 -2
  16. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  17. package/es/src/elements/common/types/SidebarNavigation.d.ts +1 -1
  18. package/package.json +3 -3
  19. package/src/elements/common/types/SidebarNavigation.js.flow +1 -1
  20. package/src/elements/common/types/SidebarNavigation.ts +1 -1
  21. package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +104 -48
  22. package/src/elements/content-sidebar/versions/VersionsSidebar.js +101 -48
  23. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +3 -2
  24. package/src/elements/content-sidebar/versions/__tests__/StaticVersionSidebar.test.js +56 -2
  25. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +50 -1
  26. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
@@ -24,6 +24,7 @@ import { withAPIContext } from '../../common/api-context';
24
24
  import type { FeatureConfig } from '../../common/feature-checking';
25
25
  import type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';
26
26
  import type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';
27
+ import { ViewType, type ViewTypeValues } from '../../common/types/SidebarNavigation';
27
28
 
28
29
  type Props = {
29
30
  api: API,
@@ -40,7 +41,7 @@ type Props = {
40
41
  onVersionPreview: VersionActionCallback,
41
42
  onVersionPromote: VersionActionCallback,
42
43
  onVersionRestore: VersionActionCallback,
43
- parentName: string,
44
+ parentName: ViewTypeValues,
44
45
  versionId?: string,
45
46
  };
46
47
 
@@ -63,7 +64,7 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
63
64
  onVersionPreview: noop,
64
65
  onVersionPromote: noop,
65
66
  onVersionRestore: noop,
66
- parentName: '',
67
+ parentName: ViewType.DETAILS,
67
68
  };
68
69
 
69
70
  api: VersionsSidebarAPI;
@@ -100,7 +100,8 @@ describe('elements/content-sidebar/versions/StaticVersionSidebar', () => {
100
100
  expect(backButton).toHaveAttribute('data-resin-target', 'back');
101
101
  });
102
102
 
103
- test('should navigate when BackButton is clicked', async () => {
103
+ test('should navigate when BackButton is clicked and not use internal handler', async () => {
104
+ const mockNavigationHandler = jest.fn();
104
105
  let currentLocation;
105
106
 
106
107
  const TestWrapper = ({ children }) => (
@@ -117,7 +118,11 @@ describe('elements/content-sidebar/versions/StaticVersionSidebar', () => {
117
118
 
118
119
  render(
119
120
  <TestWrapper>
120
- <StaticVersionSidebar {...defaultProps} parentName="details" />
121
+ <StaticVersionSidebar
122
+ {...defaultProps}
123
+ parentName="details"
124
+ internalSidebarNavigationHandler={mockNavigationHandler}
125
+ />
121
126
  </TestWrapper>,
122
127
  );
123
128
 
@@ -127,7 +132,10 @@ describe('elements/content-sidebar/versions/StaticVersionSidebar', () => {
127
132
  const user = userEvent();
128
133
  await user.click(backButton);
129
134
 
135
+ // Should use router navigation
130
136
  expect(currentLocation.pathname).toBe('/details');
137
+ // Should not use internal handler when router is enabled
138
+ expect(mockNavigationHandler).not.toHaveBeenCalled();
131
139
  });
132
140
 
133
141
  test('should pass loading state to LoadingIndicatorWrapper', () => {
@@ -166,4 +174,50 @@ describe('elements/content-sidebar/versions/StaticVersionSidebar', () => {
166
174
  expect(upgradeButton).toHaveAttribute('type', 'button');
167
175
  expect(upgradeButton).toHaveTextContent('Upgrade');
168
176
  });
177
+
178
+ describe('when routerDisabled is true', () => {
179
+ const renderComponentWithoutRouter = (props = {}) => {
180
+ return render(<StaticVersionSidebar {...defaultProps} routerDisabled {...props} />);
181
+ };
182
+
183
+ test('should render without React Router', () => {
184
+ renderComponentWithoutRouter();
185
+
186
+ expect(screen.getByRole('tabpanel')).toBeInTheDocument();
187
+ expect(screen.getByTestId('back-button')).toBeInTheDocument();
188
+ expect(screen.getByTestId('versions-menu')).toBeInTheDocument();
189
+ });
190
+
191
+ test('should use internalSidebarNavigationHandler when BackButton is clicked', async () => {
192
+ const mockNavigationHandler = jest.fn();
193
+ const user = userEvent();
194
+
195
+ renderComponentWithoutRouter({
196
+ internalSidebarNavigationHandler: mockNavigationHandler,
197
+ parentName: 'details',
198
+ });
199
+
200
+ const backButton = screen.getByTestId('back-button');
201
+ await user.click(backButton);
202
+
203
+ expect(mockNavigationHandler).toHaveBeenCalledTimes(1);
204
+ expect(mockNavigationHandler).toHaveBeenCalledWith({ sidebar: 'details' });
205
+ });
206
+
207
+ test('should pass props to VersionsMenu when router is disabled', () => {
208
+ const mockInternalSidebarNavigation = {
209
+ sidebar: 'activity',
210
+ open: true,
211
+ };
212
+
213
+ renderComponentWithoutRouter({
214
+ internalSidebarNavigation: mockInternalSidebarNavigation,
215
+ });
216
+
217
+ // Verify VersionsMenu is rendered (props are passed but not visible in mock)
218
+ expect(screen.getByTestId('versions-menu')).toBeInTheDocument();
219
+ });
220
+ });
221
+
222
+
169
223
  });
@@ -132,6 +132,7 @@ describe('elements/content-sidebar/versions/VersionsSidebar', () => {
132
132
  });
133
133
 
134
134
  test('should navigate to parent name when back button is clicked', async () => {
135
+ const mockNavigationHandler = jest.fn();
135
136
  let currentLocation;
136
137
 
137
138
  const TestWrapper = ({ children }) => (
@@ -148,7 +149,11 @@ describe('elements/content-sidebar/versions/VersionsSidebar', () => {
148
149
 
149
150
  render(
150
151
  <TestWrapper>
151
- <VersionsSidebar {...defaultProps} parentName="activity" />
152
+ <VersionsSidebar
153
+ {...defaultProps}
154
+ parentName="activity"
155
+ internalSidebarNavigationHandler={mockNavigationHandler}
156
+ />
152
157
  </TestWrapper>,
153
158
  );
154
159
 
@@ -159,5 +164,49 @@ describe('elements/content-sidebar/versions/VersionsSidebar', () => {
159
164
  await user.click(backButton);
160
165
 
161
166
  expect(currentLocation.pathname).toBe('/activity');
167
+ expect(mockNavigationHandler).not.toHaveBeenCalled();
168
+ });
169
+
170
+ describe('when routerDisabled is true', () => {
171
+ const renderComponentWithoutRouter = (props = {}) => {
172
+ return render(<VersionsSidebar {...defaultProps} routerDisabled {...props} />);
173
+ };
174
+
175
+ test('should render without React Router', () => {
176
+ renderComponentWithoutRouter();
177
+
178
+ expect(screen.getByText('Version History')).toBeInTheDocument();
179
+ expect(screen.getByTestId('back-button')).toBeInTheDocument();
180
+ expect(screen.getByTestId('versions-menu')).toBeInTheDocument();
181
+ });
182
+
183
+ test('should use internalSidebarNavigationHandler when BackButton is clicked', async () => {
184
+ const mockNavigationHandler = jest.fn();
185
+ const user = userEvent();
186
+
187
+ renderComponentWithoutRouter({
188
+ internalSidebarNavigationHandler: mockNavigationHandler,
189
+ parentName: 'details',
190
+ });
191
+
192
+ const backButton = screen.getByTestId('back-button');
193
+ await user.click(backButton);
194
+
195
+ expect(mockNavigationHandler).toHaveBeenCalledTimes(1);
196
+ expect(mockNavigationHandler).toHaveBeenCalledWith({ sidebar: 'details' });
197
+ });
198
+
199
+ test('should pass props to VersionsMenu when router is disabled', () => {
200
+ const mockInternalSidebarNavigation = {
201
+ sidebar: 'activity',
202
+ open: true,
203
+ };
204
+
205
+ renderComponentWithoutRouter({
206
+ internalSidebarNavigation: mockInternalSidebarNavigation,
207
+ });
208
+
209
+ expect(screen.getByTestId('versions-menu')).toBeInTheDocument();
210
+ });
162
211
  });
163
212
  });
@@ -12,7 +12,7 @@ exports[`elements/content-sidebar/versions/VersionsSidebarContainer handleFetchE
12
12
  isLoading={false}
13
13
  isWatermarked={false}
14
14
  onUpgradeClick={[Function]}
15
- parentName=""
15
+ parentName="details"
16
16
  versionCount={0}
17
17
  versionLimit={Infinity}
18
18
  versions={[]}
@@ -36,7 +36,7 @@ exports[`elements/content-sidebar/versions/VersionsSidebarContainer handleFetchE
36
36
  onPreview={[Function]}
37
37
  onPromote={[Function]}
38
38
  onRestore={[Function]}
39
- parentName=""
39
+ parentName="details"
40
40
  versionCount={0}
41
41
  versionLimit={Infinity}
42
42
  versions={[]}