box-ui-elements 23.5.0-beta.2 → 23.5.0-beta.4

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 (70) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/picker.js +1 -1
  4. package/dist/preview.css +1 -1
  5. package/dist/preview.js +1 -1
  6. package/dist/sidebar.css +1 -1
  7. package/dist/sidebar.js +1 -1
  8. package/es/elements/common/sub-header/SubHeader.js +3 -0
  9. package/es/elements/common/sub-header/SubHeader.js.map +1 -1
  10. package/es/elements/common/sub-header/SubHeaderLeftV2.js +3 -23
  11. package/es/elements/common/sub-header/SubHeaderLeftV2.js.map +1 -1
  12. package/es/elements/common/sub-header/SubHeaderRight.js +6 -2
  13. package/es/elements/common/sub-header/SubHeaderRight.js.map +1 -1
  14. package/es/elements/content-explorer/ContentExplorer.js +44 -5
  15. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  16. package/es/elements/content-explorer/ContentExplorer.scss +12 -0
  17. package/es/elements/content-explorer/MetadataSidePanel.js +92 -0
  18. package/es/elements/content-explorer/MetadataSidePanel.js.map +1 -0
  19. package/es/elements/content-explorer/MetadataSidePanel.scss +12 -0
  20. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +30 -0
  21. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
  22. package/es/elements/content-explorer/utils.js +67 -0
  23. package/es/elements/content-explorer/utils.js.map +1 -0
  24. package/es/features/metadata-instance-editor/CascadePolicy.js +3 -3
  25. package/es/features/metadata-instance-editor/CascadePolicy.js.flow +2 -3
  26. package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
  27. package/es/features/metadata-instance-editor/Instance.js +0 -2
  28. package/es/features/metadata-instance-editor/Instance.js.flow +0 -5
  29. package/es/features/metadata-instance-editor/Instance.js.map +1 -1
  30. package/es/features/metadata-instance-editor/Instances.js +0 -2
  31. package/es/features/metadata-instance-editor/Instances.js.flow +0 -3
  32. package/es/features/metadata-instance-editor/Instances.js.map +1 -1
  33. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js +0 -2
  34. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.flow +0 -3
  35. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.map +1 -1
  36. package/es/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js +0 -1
  37. package/es/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js.flow +0 -1
  38. package/es/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js.map +1 -1
  39. package/es/src/elements/common/sub-header/SubHeader.d.ts +2 -1
  40. package/es/src/elements/common/sub-header/SubHeaderLeftV2.d.ts +1 -1
  41. package/es/src/elements/common/sub-header/SubHeaderRight.d.ts +4 -1
  42. package/es/src/elements/content-explorer/ContentExplorer.d.ts +15 -0
  43. package/es/src/elements/content-explorer/MetadataSidePanel.d.ts +13 -0
  44. package/es/src/elements/content-explorer/__tests__/MetadataSidePanel.test.d.ts +1 -0
  45. package/es/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.d.ts +1 -0
  46. package/es/src/elements/content-explorer/utils.d.ts +22 -0
  47. package/package.json +3 -3
  48. package/src/elements/common/sub-header/SubHeader.tsx +4 -0
  49. package/src/elements/common/sub-header/SubHeaderLeftV2.tsx +3 -22
  50. package/src/elements/common/sub-header/SubHeaderRight.tsx +8 -2
  51. package/src/elements/content-explorer/ContentExplorer.scss +12 -0
  52. package/src/elements/content-explorer/ContentExplorer.tsx +120 -71
  53. package/src/elements/content-explorer/MetadataSidePanel.scss +12 -0
  54. package/src/elements/content-explorer/MetadataSidePanel.tsx +126 -0
  55. package/src/elements/content-explorer/__tests__/ContentExplorer.test.tsx +80 -16
  56. package/src/elements/content-explorer/__tests__/MetadataSidePanel.test.tsx +127 -0
  57. package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +26 -0
  58. package/src/elements/content-explorer/utils.ts +58 -0
  59. package/src/features/metadata-instance-editor/CascadePolicy.js +2 -3
  60. package/src/features/metadata-instance-editor/Instance.js +0 -5
  61. package/src/features/metadata-instance-editor/Instances.js +0 -3
  62. package/src/features/metadata-instance-editor/MetadataInstanceEditor.js +0 -3
  63. package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +0 -9
  64. package/src/features/metadata-instance-editor/__tests__/Instance.test.js +0 -28
  65. package/src/features/metadata-instance-editor/__tests__/Instances.test.js +7 -9
  66. package/src/features/metadata-instance-editor/__tests__/MetadataInstanceEditor.test.js +1 -48
  67. package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap +0 -1
  68. package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instances.test.js.snap +0 -2
  69. package/src/features/metadata-instance-editor/__tests__/__snapshots__/MetadataInstanceEditor.test.js.snap +0 -1
  70. package/src/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js +0 -1
@@ -0,0 +1,127 @@
1
+ import * as React from 'react';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { render, screen } from '../../../test-utils/testing-library';
4
+ import MetadataSidePanel, { type MetadataSidePanelProps } from '../MetadataSidePanel';
5
+
6
+ // Mock scrollTo method
7
+ Object.defineProperty(Element.prototype, 'scrollTo', {
8
+ value: jest.fn(),
9
+ writable: true,
10
+ });
11
+
12
+ const mockCollection = {
13
+ items: [
14
+ {
15
+ id: '1',
16
+ name: 'Test File 1.pdf',
17
+ type: 'file',
18
+ metadata: {
19
+ enterprise_123: {
20
+ mockTemplate: {
21
+ alias: 'mock-alias-1',
22
+ },
23
+ },
24
+ },
25
+ },
26
+ {
27
+ id: '2',
28
+ name: 'Test File 2.docx',
29
+ type: 'file',
30
+ metadata: {
31
+ enterprise_123: {
32
+ mockTemplate: {
33
+ alias: 'mock-alias-2',
34
+ },
35
+ },
36
+ },
37
+ },
38
+ ],
39
+ nextMarker: null,
40
+ offset: 0,
41
+ totalCount: 2,
42
+ };
43
+
44
+ const mockMetadataTemplate = {
45
+ id: 'template-id',
46
+ displayName: 'Mock Template',
47
+ scope: 'enterprise_123',
48
+ templateKey: 'mockTemplate',
49
+ type: 'metadata_template',
50
+ hidden: false,
51
+ fields: [
52
+ {
53
+ id: '123',
54
+ key: 'alias',
55
+ displayName: 'Alias',
56
+ type: 'string',
57
+ hidden: false,
58
+ options: [],
59
+ },
60
+ ],
61
+ };
62
+
63
+ const mockOnClose = jest.fn();
64
+
65
+ describe('elements/content-explorer/MetadataSidePanel', () => {
66
+ const defaultProps: MetadataSidePanelProps = {
67
+ currentCollection: mockCollection,
68
+ onClose: mockOnClose,
69
+ metadataTemplate: mockMetadataTemplate,
70
+ selectedItemIds: new Set(['1']),
71
+ };
72
+
73
+ const renderComponent = (props: Partial<MetadataSidePanelProps> = {}) =>
74
+ render(<MetadataSidePanel {...defaultProps} {...props} />);
75
+
76
+ test('renders the metadata title', () => {
77
+ renderComponent();
78
+ expect(screen.getByText('Metadata')).toBeInTheDocument();
79
+ });
80
+
81
+ test('renders the close button with proper aria-label', () => {
82
+ renderComponent();
83
+ const closeButton = screen.getByLabelText('Close');
84
+ expect(closeButton).toBeInTheDocument();
85
+ });
86
+
87
+ test('renders the selected item text', () => {
88
+ renderComponent();
89
+ expect(screen.getByText('Test File 1.pdf')).toBeInTheDocument();
90
+ });
91
+
92
+ test('renders metadata instance (view mode) by default', () => {
93
+ renderComponent();
94
+ const editTemplateButton = screen.getByLabelText('Edit Mock Template');
95
+ expect(editTemplateButton).toBeInTheDocument();
96
+ });
97
+
98
+ test('renders field value of selected item', () => {
99
+ renderComponent();
100
+ const fieldValue = screen.getByText('mock-alias-1');
101
+ expect(fieldValue).toBeInTheDocument();
102
+ });
103
+
104
+ test('call onClose when close button is clicked', async () => {
105
+ renderComponent();
106
+ const closeButton = screen.getByLabelText('Close');
107
+ await userEvent.click(closeButton);
108
+ expect(mockOnClose).toHaveBeenCalledTimes(1);
109
+ });
110
+
111
+ test('render correct subtitle when multiple items are selected', () => {
112
+ renderComponent({ selectedItemIds: new Set(['1', '2']) });
113
+ const subtitle = screen.getByText('2 files selected');
114
+ expect(subtitle).toBeInTheDocument();
115
+ });
116
+
117
+ test('render cancel and submit button when in edit mode', async () => {
118
+ renderComponent();
119
+ const editTemplateButton = screen.getByLabelText('Edit Mock Template');
120
+ await userEvent.click(editTemplateButton);
121
+
122
+ const cancelButton = screen.getByRole('button', { name: 'Cancel' });
123
+ expect(cancelButton).toBeInTheDocument();
124
+ const submitButton = screen.getByRole('button', { name: 'Save' });
125
+ expect(submitButton).toBeInTheDocument();
126
+ });
127
+ });
@@ -164,6 +164,32 @@ export const metadataViewV2WithInitialFilterValues: Story = {
164
164
  },
165
165
  };
166
166
 
167
+ export const sidePanelOpenWithSingleItemSelected: Story = {
168
+ args: {
169
+ ...metadataViewV2ElementProps,
170
+ metadataViewProps: {
171
+ columns,
172
+ tableProps: {
173
+ isSelectAllEnabled: true,
174
+ },
175
+ },
176
+ },
177
+
178
+ play: async ({ canvas }) => {
179
+ await waitFor(() => {
180
+ expect(canvas.getByRole('row', { name: /Child 2/i })).toBeInTheDocument();
181
+ });
182
+
183
+ // Select the first row by clicking its checkbox
184
+ const firstRow = canvas.getByRole('row', { name: /Child 2/i });
185
+ const checkbox = within(firstRow).getByRole('checkbox');
186
+ await userEvent.click(checkbox);
187
+
188
+ const metadataButton = canvas.getByRole('button', { name: 'Metadata' });
189
+ await userEvent.click(metadataButton);
190
+ },
191
+ };
192
+
167
193
  const meta: Meta<typeof ContentExplorer> = {
168
194
  title: 'Elements/ContentExplorer/tests/MetadataView/visual',
169
195
  component: ContentExplorer,
@@ -0,0 +1,58 @@
1
+ import { useMemo } from 'react';
2
+ import { useIntl } from 'react-intl';
3
+
4
+ import type { MetadataTemplate } from '@box/metadata-editor';
5
+ import type { Selection } from 'react-aria-components';
6
+ import type { BoxItem, Collection } from '../../common/types/core';
7
+
8
+ import messages from '../common/messages';
9
+
10
+ // Get selected item text
11
+ export function useSelectedItemText(currentCollection: Collection, selectedItemIds: Selection): string {
12
+ const { formatMessage } = useIntl();
13
+
14
+ return useMemo(() => {
15
+ const selectedCount = selectedItemIds === 'all' ? currentCollection.items.length : selectedItemIds.size;
16
+ if (selectedCount === 0) return '';
17
+
18
+ // Case 1: Single selected item - show item name
19
+ if (selectedCount === 1) {
20
+ const selectedKey =
21
+ selectedItemIds === 'all' ? currentCollection.items[0].id : selectedItemIds.values().next().value;
22
+ const selectedItem = currentCollection.items.find(item => item.id === selectedKey);
23
+ return selectedItem?.name ?? '';
24
+ }
25
+
26
+ // Case 2: Multiple selected items - show count
27
+ return formatMessage(messages.numFilesSelected, { numSelected: selectedCount });
28
+ }, [currentCollection.items, formatMessage, selectedItemIds]);
29
+ }
30
+
31
+ // Get template instance based on metadata template and selected items
32
+ export function getTemplateInstance(metadataTemplate: MetadataTemplate, selectedItems: BoxItem[]) {
33
+ const { displayName, fields, hidden, id, scope, templateKey, type } = metadataTemplate;
34
+
35
+ const selectedItemsFields = fields.map(
36
+ ({ displayName: fieldDisplayName, hidden: fieldHidden, id: fieldId, key, options, type: fieldType }) => ({
37
+ displayName: fieldDisplayName,
38
+ hidden: fieldHidden,
39
+ id: fieldId,
40
+ key,
41
+ options,
42
+ type: fieldType,
43
+ // TODO: Add support for multiple selected items
44
+ value: selectedItems[0].metadata[scope][templateKey][key],
45
+ }),
46
+ );
47
+
48
+ return {
49
+ canEdit: true,
50
+ displayName,
51
+ hidden,
52
+ id,
53
+ fields: selectedItemsFields,
54
+ scope,
55
+ templateKey,
56
+ type,
57
+ };
58
+ }
@@ -27,7 +27,6 @@ const AI_LINK = 'https://www.box.com/ai';
27
27
  type Props = {
28
28
  canEdit: boolean,
29
29
  canUseAIFolderExtraction: boolean,
30
- canUseAIFolderExtractionAgentSelector: boolean,
31
30
  cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,
32
31
  isAIFolderExtractionEnabled: boolean,
33
32
  isCascadingEnabled: boolean,
@@ -44,7 +43,6 @@ type Props = {
44
43
  const CascadePolicy = ({
45
44
  canEdit,
46
45
  canUseAIFolderExtraction,
47
- canUseAIFolderExtractionAgentSelector,
48
46
  cascadePolicyConfiguration,
49
47
  isCascadingEnabled,
50
48
  isCascadingOverwritten,
@@ -194,13 +192,14 @@ const CascadePolicy = ({
194
192
  <FormattedMessage {...messages.aiAutofillLearnMore} />
195
193
  </Link>
196
194
  </div>
197
- {canUseAIFolderExtractionAgentSelector && isAIFolderExtractionEnabled && (
195
+ {isAIFolderExtractionEnabled && (
198
196
  <div className="metadata-cascade-ai-agent-selector">
199
197
  <BoxAiAgentSelectorWithApiContainer
200
198
  disabled={isExistingCascadePolicy}
201
199
  fetcher={agentFetcher}
202
200
  onSelectAgent={handleAgentSelect}
203
201
  recordAction={() => {}}
202
+ selectorAlignment="left"
204
203
  />
205
204
  </div>
206
205
  )}
@@ -55,7 +55,6 @@ import './Instance.scss';
55
55
  type Props = {
56
56
  canEdit: boolean,
57
57
  canUseAIFolderExtraction?: boolean,
58
- canUseAIFolderExtractionAgentSelector?: boolean,
59
58
  cascadePolicy?: MetadataCascadePolicy, // eslint-disable-line
60
59
  data: MetadataFields,
61
60
  hasError: boolean,
@@ -642,7 +641,6 @@ class Instance extends React.PureComponent<Props, State> {
642
641
  render() {
643
642
  const {
644
643
  canUseAIFolderExtraction = false,
645
- canUseAIFolderExtractionAgentSelector = false,
646
644
  cascadePolicy = {},
647
645
  isDirty,
648
646
  isCascadingPolicyApplicable,
@@ -703,9 +701,6 @@ class Instance extends React.PureComponent<Props, State> {
703
701
  cascadePolicyConfiguration={cascadePolicy?.cascadePolicyConfiguration}
704
702
  canEdit={isEditing && !!cascadePolicy.canEdit}
705
703
  canUseAIFolderExtraction={canUseAIFolderExtraction}
706
- canUseAIFolderExtractionAgentSelector={
707
- canUseAIFolderExtractionAgentSelector
708
- }
709
704
  isAIFolderExtractionEnabled={isAIFolderExtractionEnabled}
710
705
  isCascadingEnabled={isCascadingEnabled}
711
706
  isCascadingOverwritten={isCascadingOverwritten}
@@ -7,7 +7,6 @@ import type { JSONPatchOperations } from '../../common/types/api';
7
7
 
8
8
  type Props = {
9
9
  canUseAIFolderExtraction?: boolean,
10
- canUseAIFolderExtractionAgentSelector?: boolean,
11
10
  editors?: Array<MetadataEditor>,
12
11
  isCascadingPolicyApplicable?: boolean,
13
12
  onModification?: (id: string, isDirty: boolean) => void,
@@ -23,7 +22,6 @@ type Props = {
23
22
 
24
23
  const Instances = ({
25
24
  canUseAIFolderExtraction = false,
26
- canUseAIFolderExtractionAgentSelector = false,
27
25
  isCascadingPolicyApplicable = false,
28
26
  editors = [],
29
27
  onModification,
@@ -39,7 +37,6 @@ const Instances = ({
39
37
  <Instance
40
38
  canEdit={instance.canEdit}
41
39
  canUseAIFolderExtraction={canUseAIFolderExtraction}
42
- canUseAIFolderExtractionAgentSelector={canUseAIFolderExtractionAgentSelector}
43
40
  cascadePolicy={instance.cascadePolicy}
44
41
  data={instance.data}
45
42
  hasError={hasError}
@@ -15,7 +15,6 @@ type Props = {
15
15
  blurExceptionClassNames?: Array<string>,
16
16
  canAdd: boolean,
17
17
  canUseAIFolderExtraction?: boolean,
18
- canUseAIFolderExtractionAgentSelector?: boolean,
19
18
  editors?: Array<MetadataEditor>,
20
19
  isCascadingPolicyApplicable?: boolean,
21
20
  isDropdownBusy?: boolean,
@@ -38,7 +37,6 @@ const MetadataInstanceEditor = ({
38
37
  blurExceptionClassNames,
39
38
  canAdd,
40
39
  canUseAIFolderExtraction = false,
41
- canUseAIFolderExtractionAgentSelector = false,
42
40
  isCascadingPolicyApplicable = false,
43
41
  isDropdownBusy,
44
42
  editors = [],
@@ -66,7 +64,6 @@ const MetadataInstanceEditor = ({
66
64
  <ScrollWrapper>
67
65
  <Instances
68
66
  canUseAIFolderExtraction={canUseAIFolderExtraction}
69
- canUseAIFolderExtractionAgentSelector={canUseAIFolderExtractionAgentSelector}
70
67
  editors={editors}
71
68
  isCascadingPolicyApplicable={isCascadingPolicyApplicable}
72
69
  onModification={onModification}
@@ -118,7 +118,6 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
118
118
  <CascadePolicy
119
119
  canEdit
120
120
  canUseAIFolderExtraction
121
- canUseAIFolderExtractionAgentSelector
122
121
  shouldShowCascadeOptions
123
122
  isAIFolderExtractionEnabled
124
123
  onAIFolderExtractionToggle={jest.fn()}
@@ -133,18 +132,12 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
133
132
  expect(screen.getByRole('combobox', { name: 'Standard' })).toBeInTheDocument();
134
133
  });
135
134
 
136
- test('should not render AI agent selector when canUseAIFolderExtractionAgentSelector is false', () => {
137
- render(<CascadePolicy canEdit canUseAIFolderExtraction shouldShowCascadeOptions />);
138
- expect(screen.queryByRole('combobox', { name: 'Standard' })).not.toBeInTheDocument();
139
- });
140
-
141
135
  test('should call onAIAgentSelect when an agent is selected', async () => {
142
136
  const onAIAgentSelect = jest.fn();
143
137
  render(
144
138
  <CascadePolicy
145
139
  canEdit
146
140
  canUseAIFolderExtraction
147
- canUseAIFolderExtractionAgentSelector
148
141
  shouldShowCascadeOptions
149
142
  isAIFolderExtractionEnabled
150
143
  onAIAgentSelect={onAIAgentSelect}
@@ -185,7 +178,6 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
185
178
  <CascadePolicy
186
179
  canEdit
187
180
  canUseAIFolderExtraction
188
- canUseAIFolderExtractionAgentSelector
189
181
  shouldShowCascadeOptions
190
182
  isAIFolderExtractionEnabled
191
183
  cascadePolicyConfiguration={cascadePolicyConfiguration}
@@ -207,7 +199,6 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
207
199
  <CascadePolicy
208
200
  canEdit
209
201
  canUseAIFolderExtraction
210
- canUseAIFolderExtractionAgentSelector
211
202
  shouldShowCascadeOptions
212
203
  isAIFolderExtractionEnabled
213
204
  onAIFolderExtractionToggle={jest.fn()}
@@ -771,7 +771,6 @@ const getBaseProps = (props = {}) => ({
771
771
  cascadePolicyType: 'regular', // default to non-AI
772
772
  },
773
773
  canUseAIFolderExtraction: true, // Assume feature flag is on
774
- canUseAIFolderExtractionAgentSelector: false,
775
774
  ...props,
776
775
  });
777
776
 
@@ -862,33 +861,6 @@ describe('Instance Component - React Testing Library', () => {
862
861
  });
863
862
 
864
863
  describe('Props passed to CascadePolicy', () => {
865
- test('should pass canUseAIFolderExtractionAgentSelector to CascadePolicy', async () => {
866
- render(
867
- <Instance
868
- {...getBaseProps({
869
- canUseAIFolderExtractionAgentSelector: true,
870
- cascadePolicy: {
871
- id: 'policy-1',
872
- canEdit: true,
873
- isEnabled: true,
874
- cascadePolicyType: CASCADE_POLICY_TYPE_AI_EXTRACT,
875
- },
876
- })}
877
- />,
878
- );
879
-
880
- const editButton = screen.queryByRole('button', { name: 'Edit Metadata' });
881
- if (editButton) await userEvent.click(editButton); // Enter edit mode to ensure CascadePolicy options are visible
882
-
883
- const cascadeToggle = screen.getByRole('switch', { name: 'Enable Cascade Policy' });
884
- expect(cascadeToggle).toBeChecked();
885
-
886
- const aiToggle = screen.getByRole('switch', { name: 'Box AI Autofill' });
887
- expect(aiToggle).toBeChecked();
888
-
889
- expect(screen.getByRole('combobox', { name: 'Standard' })).toBeInTheDocument();
890
- });
891
-
892
864
  test('should disable CascadePolicy options when a cascade already exists', async () => {
893
865
  render(<Instance {...getBaseProps()} />);
894
866
 
@@ -253,11 +253,9 @@ describe('features/metadata-editor-editor/Instances', () => {
253
253
  });
254
254
  });
255
255
 
256
- describe('Instances component - canUseAIFolderExtractionAgentSelector prop', () => {
257
- test('should pass canUseAIFolderExtractionAgentSelector to child Instance components, showing agent selector', async () => {
258
- const props = getInstancesBaseProps({
259
- canUseAIFolderExtractionAgentSelector: true,
260
- });
256
+ describe('Instances component - AI agent selector', () => {
257
+ test('should show AI agent selector when canUseAIFolderExtraction is true', async () => {
258
+ const props = getInstancesBaseProps();
261
259
  props.editors[0].instance.cascadePolicy.cascadePolicyType = CASCADE_POLICY_TYPE_AI_EXTRACT;
262
260
  render(<Instances {...props} />);
263
261
 
@@ -273,11 +271,11 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
273
271
  expect(screen.getByRole('combobox', { name: 'Standard' })).toBeInTheDocument();
274
272
  });
275
273
 
276
- test('should not show agent selector in child Instance if canUseAIFolderExtractionAgentSelector is false', async () => {
274
+ test('should not show agent selector in child Instance if canUseAIFolderExtraction is false', async () => {
277
275
  render(
278
276
  <Instances
279
277
  {...getInstancesBaseProps({
280
- canUseAIFolderExtractionAgentSelector: false,
278
+ canUseAIFolderExtraction: false,
281
279
  })}
282
280
  />,
283
281
  );
@@ -288,9 +286,9 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
288
286
  expect(screen.queryByRole('combobox', { name: 'Standard' })).not.toBeInTheDocument();
289
287
  });
290
288
 
291
- test('should not show agent selector in child Instance if canUseAIFolderExtractionAgentSelector is undefined', async () => {
289
+ test('should not show agent selector in child Instance if canUseAIFolderExtraction is undefined', async () => {
292
290
  const props = getInstancesBaseProps();
293
- delete props.canUseAIFolderExtractionAgentSelector;
291
+ delete props.canUseAIFolderExtraction;
294
292
  render(<Instances {...props} />);
295
293
 
296
294
  const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
@@ -534,57 +534,10 @@ describe('features/metadata-editor-editor/MetadataInstanceEditor', () => {
534
534
  });
535
535
  });
536
536
 
537
- describe('MetadataInstanceEditor - canUseAIFolderExtractionAgentSelector prop', () => {
538
- test('should propagate canUseAIFolderExtractionAgentSelector, showing agent selector', async () => {
539
- const props = getMetadataEditorBaseProps({
540
- canUseAIFolderExtraction: true,
541
- canUseAIFolderExtractionAgentSelector: true,
542
- });
543
- props.editors[0].instance.cascadePolicy.cascadePolicyType = 'ai_extract';
544
- render(<MetadataInstanceEditor {...props} />);
545
-
546
- const editButton = await screen.findByRole('button', { name: 'Edit Metadata' }, { timeout: 3000 });
547
- await userEvent.click(editButton);
548
-
549
- const cascadeToggle = screen.getByRole('switch', { name: 'Enable Cascade Policy' });
550
- expect(cascadeToggle).toBeChecked();
551
-
552
- const aiToggle = screen.getByRole('switch', { name: 'Box AI Autofill' });
553
- expect(aiToggle).toBeChecked();
554
-
555
- expect(screen.getByRole('combobox', { name: 'Standard' })).toBeInTheDocument();
556
- });
557
-
558
- test('should not show agent selector if canUseAIFolderExtractionAgentSelector is false', async () => {
559
- render(
560
- <MetadataInstanceEditor
561
- {...getMetadataEditorBaseProps({
562
- canUseAIFolderExtractionAgentSelector: false,
563
- })}
564
- />,
565
- );
566
-
567
- const editButton = await screen.findByRole('button', { name: 'Edit Metadata' });
568
- await userEvent.click(editButton);
569
-
570
- expect(screen.queryByRole('combobox', { name: 'Standard' })).not.toBeInTheDocument();
571
- });
572
-
573
- test('should not show agent selector if canUseAIFolderExtractionAgentSelector is undefined', async () => {
574
- const props = getMetadataEditorBaseProps();
575
- delete props.canUseAIFolderExtractionAgentSelector;
576
- render(<MetadataInstanceEditor {...props} />);
577
-
578
- const editButton = await screen.findByRole('button', { name: 'Edit Metadata' });
579
- await userEvent.click(editButton);
580
-
581
- expect(screen.queryByRole('combobox', { name: 'Standard' })).not.toBeInTheDocument();
582
- });
583
-
537
+ describe('MetadataInstanceEditor agent selector', () => {
584
538
  test('should show "Enhanced" in the combobox when the second option is selected', async () => {
585
539
  const props = getMetadataEditorBaseProps({
586
540
  canUseAIFolderExtraction: true,
587
- canUseAIFolderExtractionAgentSelector: true,
588
541
  });
589
542
  props.editors[0].instance.cascadePolicy.cascadePolicyType = 'ai_extract';
590
543
  props.editors[0].instance.cascadePolicy.id = null;
@@ -416,7 +416,6 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
416
416
  >
417
417
  <CascadePolicy
418
418
  canUseAIFolderExtraction={false}
419
- canUseAIFolderExtractionAgentSelector={false}
420
419
  isAIFolderExtractionEnabled={false}
421
420
  isCascadingEnabled={true}
422
421
  isCascadingOverwritten={false}
@@ -5,7 +5,6 @@ exports[`features/metadata-editor-editor/Instances should correctly render edito
5
5
  <injectIntl(Instance)
6
6
  canEdit={true}
7
7
  canUseAIFolderExtraction={false}
8
- canUseAIFolderExtractionAgentSelector={false}
9
8
  data={
10
9
  {
11
10
  "datefield": "2018-06-20T00:00:00.000Z",
@@ -111,7 +110,6 @@ exports[`features/metadata-editor-editor/Instances should correctly render edito
111
110
  <injectIntl(Instance)
112
111
  canEdit={false}
113
112
  canUseAIFolderExtraction={false}
114
- canUseAIFolderExtractionAgentSelector={false}
115
113
  data={
116
114
  {
117
115
  "datefield": "2018-06-20T00:00:00.000Z",
@@ -772,7 +772,6 @@ exports[`features/metadata-editor-editor/MetadataInstanceEditor should correctly
772
772
  >
773
773
  <Instances
774
774
  canUseAIFolderExtraction={false}
775
- canUseAIFolderExtractionAgentSelector={false}
776
775
  editors={
777
776
  [
778
777
  {
@@ -5,7 +5,6 @@ import CascadePolicy from '../../CascadePolicy';
5
5
  const baseProps = {
6
6
  canEdit: true,
7
7
  canUseAIFolderExtraction: true,
8
- canUseAIFolderExtractionAgentSelector: true,
9
8
  isAIFolderExtractionEnabled: false,
10
9
  isCascadingEnabled: true,
11
10
  isCascadingOverwritten: false,