Skip to content

Commit 1f953c0

Browse files
authored
feat(metadata-instance-editor): remove ai agent selector split and fi… (#4226)
* feat(metadata-instance-editor): remove ai agent selector split and fix styling * fix: tests * fix: tests * feat: use new box ai agent selector with alignment
1 parent 330ae33 commit 1f953c0

File tree

14 files changed

+19
-147
lines changed

14 files changed

+19
-147
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
"@babel/types": "^7.24.7",
127127
"@box/blueprint-web": "12.43.0",
128128
"@box/blueprint-web-assets": "4.61.5",
129-
"@box/box-ai-agent-selector": "^0.52.0",
129+
"@box/box-ai-agent-selector": "^0.53.0",
130130
"@box/box-ai-content-answers": "^0.124.1",
131131
"@box/box-item-type-selector": "^0.63.12",
132132
"@box/cldr-data": "^34.2.0",
@@ -295,7 +295,7 @@
295295
"peerDependencies": {
296296
"@box/blueprint-web": "12.43.0",
297297
"@box/blueprint-web-assets": "4.61.5",
298-
"@box/box-ai-agent-selector": "^0.52.0",
298+
"@box/box-ai-agent-selector": "^0.53.0",
299299
"@box/box-ai-content-answers": "^0.124.1",
300300
"@box/box-item-type-selector": "^0.63.12",
301301
"@box/cldr-data": ">=34.2.0",

src/features/metadata-instance-editor/CascadePolicy.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ const AI_LINK = 'https://www.box.com/ai';
2727
type Props = {
2828
canEdit: boolean,
2929
canUseAIFolderExtraction: boolean,
30-
canUseAIFolderExtractionAgentSelector: boolean,
3130
cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,
3231
isAIFolderExtractionEnabled: boolean,
3332
isCascadingEnabled: boolean,
@@ -44,7 +43,6 @@ type Props = {
4443
const CascadePolicy = ({
4544
canEdit,
4645
canUseAIFolderExtraction,
47-
canUseAIFolderExtractionAgentSelector,
4846
cascadePolicyConfiguration,
4947
isCascadingEnabled,
5048
isCascadingOverwritten,
@@ -194,13 +192,14 @@ const CascadePolicy = ({
194192
<FormattedMessage {...messages.aiAutofillLearnMore} />
195193
</Link>
196194
</div>
197-
{canUseAIFolderExtractionAgentSelector && isAIFolderExtractionEnabled && (
195+
{isAIFolderExtractionEnabled && (
198196
<div className="metadata-cascade-ai-agent-selector">
199197
<BoxAiAgentSelectorWithApiContainer
200198
disabled={isExistingCascadePolicy}
201199
fetcher={agentFetcher}
202200
onSelectAgent={handleAgentSelect}
203201
recordAction={() => {}}
202+
selectorAlignment="left"
204203
/>
205204
</div>
206205
)}

src/features/metadata-instance-editor/Instance.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ import './Instance.scss';
5555
type Props = {
5656
canEdit: boolean,
5757
canUseAIFolderExtraction?: boolean,
58-
canUseAIFolderExtractionAgentSelector?: boolean,
5958
cascadePolicy?: MetadataCascadePolicy, // eslint-disable-line
6059
data: MetadataFields,
6160
hasError: boolean,
@@ -642,7 +641,6 @@ class Instance extends React.PureComponent<Props, State> {
642641
render() {
643642
const {
644643
canUseAIFolderExtraction = false,
645-
canUseAIFolderExtractionAgentSelector = false,
646644
cascadePolicy = {},
647645
isDirty,
648646
isCascadingPolicyApplicable,
@@ -703,9 +701,6 @@ class Instance extends React.PureComponent<Props, State> {
703701
cascadePolicyConfiguration={cascadePolicy?.cascadePolicyConfiguration}
704702
canEdit={isEditing && !!cascadePolicy.canEdit}
705703
canUseAIFolderExtraction={canUseAIFolderExtraction}
706-
canUseAIFolderExtractionAgentSelector={
707-
canUseAIFolderExtractionAgentSelector
708-
}
709704
isAIFolderExtractionEnabled={isAIFolderExtractionEnabled}
710705
isCascadingEnabled={isCascadingEnabled}
711706
isCascadingOverwritten={isCascadingOverwritten}

src/features/metadata-instance-editor/Instances.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import type { JSONPatchOperations } from '../../common/types/api';
77

88
type Props = {
99
canUseAIFolderExtraction?: boolean,
10-
canUseAIFolderExtractionAgentSelector?: boolean,
1110
editors?: Array<MetadataEditor>,
1211
isCascadingPolicyApplicable?: boolean,
1312
onModification?: (id: string, isDirty: boolean) => void,
@@ -23,7 +22,6 @@ type Props = {
2322

2423
const Instances = ({
2524
canUseAIFolderExtraction = false,
26-
canUseAIFolderExtractionAgentSelector = false,
2725
isCascadingPolicyApplicable = false,
2826
editors = [],
2927
onModification,
@@ -39,7 +37,6 @@ const Instances = ({
3937
<Instance
4038
canEdit={instance.canEdit}
4139
canUseAIFolderExtraction={canUseAIFolderExtraction}
42-
canUseAIFolderExtractionAgentSelector={canUseAIFolderExtractionAgentSelector}
4340
cascadePolicy={instance.cascadePolicy}
4441
data={instance.data}
4542
hasError={hasError}

src/features/metadata-instance-editor/MetadataInstanceEditor.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ type Props = {
1515
blurExceptionClassNames?: Array<string>,
1616
canAdd: boolean,
1717
canUseAIFolderExtraction?: boolean,
18-
canUseAIFolderExtractionAgentSelector?: boolean,
1918
editors?: Array<MetadataEditor>,
2019
isCascadingPolicyApplicable?: boolean,
2120
isDropdownBusy?: boolean,
@@ -38,7 +37,6 @@ const MetadataInstanceEditor = ({
3837
blurExceptionClassNames,
3938
canAdd,
4039
canUseAIFolderExtraction = false,
41-
canUseAIFolderExtractionAgentSelector = false,
4240
isCascadingPolicyApplicable = false,
4341
isDropdownBusy,
4442
editors = [],
@@ -66,7 +64,6 @@ const MetadataInstanceEditor = ({
6664
<ScrollWrapper>
6765
<Instances
6866
canUseAIFolderExtraction={canUseAIFolderExtraction}
69-
canUseAIFolderExtractionAgentSelector={canUseAIFolderExtractionAgentSelector}
7067
editors={editors}
7168
isCascadingPolicyApplicable={isCascadingPolicyApplicable}
7269
onModification={onModification}

src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
118118
<CascadePolicy
119119
canEdit
120120
canUseAIFolderExtraction
121-
canUseAIFolderExtractionAgentSelector
122121
shouldShowCascadeOptions
123122
isAIFolderExtractionEnabled
124123
onAIFolderExtractionToggle={jest.fn()}
@@ -133,18 +132,12 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
133132
expect(screen.getByRole('combobox', { name: 'Standard' })).toBeInTheDocument();
134133
});
135134

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-
141135
test('should call onAIAgentSelect when an agent is selected', async () => {
142136
const onAIAgentSelect = jest.fn();
143137
render(
144138
<CascadePolicy
145139
canEdit
146140
canUseAIFolderExtraction
147-
canUseAIFolderExtractionAgentSelector
148141
shouldShowCascadeOptions
149142
isAIFolderExtractionEnabled
150143
onAIAgentSelect={onAIAgentSelect}
@@ -185,7 +178,6 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
185178
<CascadePolicy
186179
canEdit
187180
canUseAIFolderExtraction
188-
canUseAIFolderExtractionAgentSelector
189181
shouldShowCascadeOptions
190182
isAIFolderExtractionEnabled
191183
cascadePolicyConfiguration={cascadePolicyConfiguration}
@@ -207,7 +199,6 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
207199
<CascadePolicy
208200
canEdit
209201
canUseAIFolderExtraction
210-
canUseAIFolderExtractionAgentSelector
211202
shouldShowCascadeOptions
212203
isAIFolderExtractionEnabled
213204
onAIFolderExtractionToggle={jest.fn()}

src/features/metadata-instance-editor/__tests__/Instance.test.js

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,6 @@ const getBaseProps = (props = {}) => ({
771771
cascadePolicyType: 'regular', // default to non-AI
772772
},
773773
canUseAIFolderExtraction: true, // Assume feature flag is on
774-
canUseAIFolderExtractionAgentSelector: false,
775774
...props,
776775
});
777776

@@ -862,33 +861,6 @@ describe('Instance Component - React Testing Library', () => {
862861
});
863862

864863
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-
892864
test('should disable CascadePolicy options when a cascade already exists', async () => {
893865
render(<Instance {...getBaseProps()} />);
894866

src/features/metadata-instance-editor/__tests__/Instances.test.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,9 @@ describe('features/metadata-editor-editor/Instances', () => {
253253
});
254254
});
255255

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();
261259
props.editors[0].instance.cascadePolicy.cascadePolicyType = CASCADE_POLICY_TYPE_AI_EXTRACT;
262260
render(<Instances {...props} />);
263261

@@ -273,11 +271,11 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
273271
expect(screen.getByRole('combobox', { name: 'Standard' })).toBeInTheDocument();
274272
});
275273

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 () => {
277275
render(
278276
<Instances
279277
{...getInstancesBaseProps({
280-
canUseAIFolderExtractionAgentSelector: false,
278+
canUseAIFolderExtraction: false,
281279
})}
282280
/>,
283281
);
@@ -288,9 +286,9 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
288286
expect(screen.queryByRole('combobox', { name: 'Standard' })).not.toBeInTheDocument();
289287
});
290288

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 () => {
292290
const props = getInstancesBaseProps();
293-
delete props.canUseAIFolderExtractionAgentSelector;
291+
delete props.canUseAIFolderExtraction;
294292
render(<Instances {...props} />);
295293

296294
const editButton = screen.getByRole('button', { name: 'Edit Metadata' });

src/features/metadata-instance-editor/__tests__/MetadataInstanceEditor.test.js

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -534,57 +534,10 @@ describe('features/metadata-editor-editor/MetadataInstanceEditor', () => {
534534
});
535535
});
536536

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', () => {
584538
test('should show "Enhanced" in the combobox when the second option is selected', async () => {
585539
const props = getMetadataEditorBaseProps({
586540
canUseAIFolderExtraction: true,
587-
canUseAIFolderExtractionAgentSelector: true,
588541
});
589542
props.editors[0].instance.cascadePolicy.cascadePolicyType = 'ai_extract';
590543
props.editors[0].instance.cascadePolicy.id = null;

src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,6 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
416416
>
417417
<CascadePolicy
418418
canUseAIFolderExtraction={false}
419-
canUseAIFolderExtractionAgentSelector={false}
420419
isAIFolderExtractionEnabled={false}
421420
isCascadingEnabled={true}
422421
isCascadingOverwritten={false}

0 commit comments

Comments
 (0)