box-ui-elements 23.4.0-beta.10 → 23.4.0-beta.11

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.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/preview.css +1 -1
  4. package/dist/preview.js +1 -1
  5. package/dist/preview.js.LICENSE.txt +0 -10
  6. package/dist/sidebar.css +1 -1
  7. package/dist/sidebar.js +1 -1
  8. package/dist/sidebar.js.LICENSE.txt +0 -10
  9. package/es/elements/content-sidebar/MetadataInstanceEditor.js +4 -2
  10. package/es/elements/content-sidebar/MetadataInstanceEditor.js.map +1 -1
  11. package/es/elements/content-sidebar/MetadataSidebarRedesign.js +4 -1
  12. package/es/elements/content-sidebar/MetadataSidebarRedesign.js.map +1 -1
  13. package/es/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.js +29 -0
  14. package/es/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.js.map +1 -1
  15. package/es/src/elements/content-sidebar/MetadataInstanceEditor.d.ts +1 -0
  16. package/es/src/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.d.ts +1 -0
  17. package/i18n/ja-JP.js +1 -1
  18. package/i18n/ja-JP.properties +1 -1
  19. package/package.json +5 -5
  20. package/src/elements/content-sidebar/MetadataInstanceEditor.tsx +3 -0
  21. package/src/elements/content-sidebar/MetadataSidebarRedesign.tsx +3 -0
  22. package/src/elements/content-sidebar/stories/tests/MetadataSidebarRedesign-visual.stories.tsx +24 -0
  23. package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +7 -2
  24. package/src/features/metadata-instance-editor/__tests__/Instance.test.js +1 -1
  25. package/src/features/metadata-instance-editor/__tests__/Instances.test.js +3 -3
  26. package/src/features/metadata-instance-editor/__tests__/MetadataInstanceEditor.test.js +3 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-ui-elements",
3
- "version": "23.4.0-beta.10",
3
+ "version": "23.4.0-beta.11",
4
4
  "description": "Box UI Elements",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -125,14 +125,14 @@
125
125
  "@babel/types": "^7.24.7",
126
126
  "@box/blueprint-web": "^12.7.1",
127
127
  "@box/blueprint-web-assets": "^4.48.4",
128
- "@box/box-ai-agent-selector": "^0.31.0",
128
+ "@box/box-ai-agent-selector": "^0.41.10",
129
129
  "@box/box-ai-content-answers": "^0.124.1",
130
130
  "@box/cldr-data": "^34.2.0",
131
131
  "@box/combobox-with-api": "^0.34.9",
132
132
  "@box/frontend": "^11.0.1",
133
133
  "@box/item-icon": "^0.9.83",
134
134
  "@box/languages": "^1.0.0",
135
- "@box/metadata-editor": "^0.104.2",
135
+ "@box/metadata-editor": "^0.110.1",
136
136
  "@box/react-virtualized": "9.22.3-rc-box.9",
137
137
  "@cfaester/enzyme-adapter-react-18": "^0.8.0",
138
138
  "@chromatic-com/storybook": "^1.6.1",
@@ -297,12 +297,12 @@
297
297
  "peerDependencies": {
298
298
  "@box/blueprint-web": "^12.7.1",
299
299
  "@box/blueprint-web-assets": "^4.48.4",
300
- "@box/box-ai-agent-selector": "^0.31.0",
300
+ "@box/box-ai-agent-selector": "^0.41.10",
301
301
  "@box/box-ai-content-answers": "^0.124.1",
302
302
  "@box/cldr-data": ">=34.2.0",
303
303
  "@box/combobox-with-api": "^0.34.9",
304
304
  "@box/item-icon": "^0.9.83",
305
- "@box/metadata-editor": "^0.104.2",
305
+ "@box/metadata-editor": "^0.110.1",
306
306
  "@box/react-virtualized": "9.22.3-rc-box.9",
307
307
  "@hapi/address": "^2.1.4",
308
308
  "axios": "^0.30.0",
@@ -29,6 +29,7 @@ export interface MetadataInstanceEditorProps {
29
29
  setIsUnsavedChangesModalOpen: (isUnsavedChangesModalOpen: boolean) => void;
30
30
  taxonomyOptionsFetcher: TaxonomyOptionsFetcher;
31
31
  template: MetadataTemplateInstance;
32
+ isAdvancedExtractAgentEnabled?: boolean;
32
33
  }
33
34
 
34
35
  const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
@@ -48,6 +49,7 @@ const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
48
49
  setIsUnsavedChangesModalOpen,
49
50
  taxonomyOptionsFetcher,
50
51
  template,
52
+ isAdvancedExtractAgentEnabled = false,
51
53
  }) => {
52
54
  return (
53
55
  <MetadataInstanceForm
@@ -68,6 +70,7 @@ const MetadataInstanceEditor: React.FC<MetadataInstanceEditorProps> = ({
68
70
  selectedTemplateInstance={template}
69
71
  setIsUnsavedChangesModalOpen={setIsUnsavedChangesModalOpen}
70
72
  taxonomyOptionsFetcher={taxonomyOptionsFetcher}
73
+ isAdvancedExtractAgentEnabled={isAdvancedExtractAgentEnabled}
71
74
  />
72
75
  );
73
76
  };
@@ -114,6 +114,7 @@ function MetadataSidebarRedesign({
114
114
  const isBoxAiSuggestionsEnabled: boolean = useFeatureEnabled('metadata.aiSuggestions.enabled');
115
115
  const isBetaLanguageEnabled: boolean = useFeatureEnabled('metadata.betaLanguage.enabled');
116
116
  const isMetadataMultiLevelTaxonomyFieldEnabled: boolean = useFeatureEnabled('metadata.multilevelTaxonomy.enabled');
117
+ const isAdvancedExtractAgentEnabled: boolean = useFeatureEnabled('metadata.extractAdvancedAgents.enabled');
117
118
  const isDeleteConfirmationModalCheckboxEnabled: boolean = useFeatureEnabled(
118
119
  'metadata.deleteConfirmationModalCheckbox.enabled',
119
120
  );
@@ -324,11 +325,13 @@ function MetadataSidebarRedesign({
324
325
  setIsUnsavedChangesModalOpen={setIsUnsavedChangesModalOpen}
325
326
  taxonomyOptionsFetcher={taxonomyOptionsFetcher}
326
327
  template={editingTemplate}
328
+ isAdvancedExtractAgentEnabled={isAdvancedExtractAgentEnabled}
327
329
  />
328
330
  )}
329
331
  {showList && (
330
332
  <MetadataInstanceList
331
333
  areAiSuggestionsAvailable={areAiSuggestionsAvailable}
334
+ isAdvancedExtractAgentEnabled={isAdvancedExtractAgentEnabled}
332
335
  isAiSuggestionsFeatureEnabled={isBoxAiSuggestionsEnabled}
333
336
  isBetaLanguageEnabled={isBetaLanguageEnabled}
334
337
  onEdit={templateInstance => {
@@ -425,6 +425,30 @@ export const MetadataInstanceEditorAIEnabled: StoryObj<typeof MetadataSidebarRed
425
425
  },
426
426
  };
427
427
 
428
+ export const MetadataInstanceEditorAIEnabledAdvancedExtractAgent: StoryObj<typeof MetadataSidebarRedesign> = {
429
+ args: {
430
+ features: {
431
+ ...mockFeatures,
432
+ 'metadata.aiSuggestions.enabled': true,
433
+ 'metadata.extractAdvancedAgents.enabled': true,
434
+ },
435
+ },
436
+ play: async ({ canvasElement }) => {
437
+ const canvas = within(canvasElement);
438
+ // Edit one instance
439
+ const editButton = await canvas.findByRole('button', { name: 'Edit My Template' });
440
+ await userEvent.click(editButton);
441
+
442
+ // Find the SplitButton
443
+ const splitButton = await canvas.findByRole('button', { name: /Autofill/ });
444
+ expect(splitButton).toBeVisible();
445
+
446
+ await userEvent.hover(splitButton);
447
+ const dropdownButton = await canvas.findByRole('button', { name: 'See agent options.' });
448
+ expect(dropdownButton).toBeVisible();
449
+ },
450
+ };
451
+
428
452
  export const ShowErrorWhenAIAPIIsUnavailable: StoryObj<typeof MetadataSidebarRedesign> = {
429
453
  args: {
430
454
  features: {
@@ -7,6 +7,11 @@ import { screen, render, within } from '../../../test-utils/testing-library';
7
7
  import CascadePolicy from '../CascadePolicy';
8
8
 
9
9
  describe('features/metadata-instance-editor/CascadePolicy', () => {
10
+ beforeEach(() => {
11
+ // reset any previous tests that may have set localStorage
12
+ localStorage.removeItem('aiAgent');
13
+ });
14
+
10
15
  test('should correctly render cascade policy read only mode', () => {
11
16
  const wrapper = shallow(<CascadePolicy id="fakeId" isCascadingEnabled shouldShowCascadeOptions />);
12
17
  expect(wrapper).toMatchSnapshot();
@@ -100,12 +105,12 @@ describe('features/metadata-instance-editor/CascadePolicy', () => {
100
105
  shouldShowCascadeOptions
101
106
  />,
102
107
  );
103
- expect(screen.getByRole('button', { name: 'Agent Basic' })).toBeInTheDocument();
108
+ expect(screen.getByRole('combobox', { name: 'Basic' })).toBeInTheDocument();
104
109
  });
105
110
 
106
111
  test('should not render AI agent selector when canUseAIFolderExtractionAgentSelector is false', () => {
107
112
  render(<CascadePolicy canEdit canUseAIFolderExtraction shouldShowCascadeOptions />);
108
- expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
113
+ expect(screen.queryByRole('combobox', { name: 'Basic' })).not.toBeInTheDocument();
109
114
  });
110
115
  });
111
116
 
@@ -863,7 +863,7 @@ describe('Instance Component - React Testing Library', () => {
863
863
  const editButton = screen.queryByRole('button', { name: 'Edit Metadata' });
864
864
  if (editButton) await userEvent.click(editButton); // Enter edit mode to ensure CascadePolicy options are visible
865
865
 
866
- expect(screen.getByRole('button', { name: 'Agent Basic' })).toBeInTheDocument();
866
+ expect(screen.getByRole('combobox', { name: 'Basic' })).toBeInTheDocument();
867
867
  });
868
868
 
869
869
  test('should pass isExistingAIExtractionCascadePolicy=true to CascadePolicy if policy is ai_extract', async () => {
@@ -265,7 +265,7 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
265
265
  const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
266
266
  await userEvent.click(editButton);
267
267
 
268
- expect(screen.getByRole('button', { name: 'Agent Basic' })).toBeInTheDocument();
268
+ expect(screen.getByRole('combobox', { name: 'Basic' })).toBeInTheDocument();
269
269
  });
270
270
 
271
271
  test('should not show agent selector in child Instance if canUseAIFolderExtractionAgentSelector is false', async () => {
@@ -280,7 +280,7 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
280
280
  const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
281
281
  await userEvent.click(editButton);
282
282
 
283
- expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
283
+ expect(screen.queryByRole('combobox', { name: 'Basic' })).not.toBeInTheDocument();
284
284
  });
285
285
 
286
286
  test('should not show agent selector in child Instance if canUseAIFolderExtractionAgentSelector is undefined', async () => {
@@ -291,6 +291,6 @@ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', ()
291
291
  const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
292
292
  await userEvent.click(editButton);
293
293
 
294
- expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
294
+ expect(screen.queryByRole('combobox', { name: 'Basic' })).not.toBeInTheDocument();
295
295
  });
296
296
  });
@@ -547,7 +547,7 @@ describe('MetadataInstanceEditor - canUseAIFolderExtractionAgentSelector prop',
547
547
  const editButton = await screen.findByRole('button', { name: 'Edit Metadata' }, { timeout: 3000 });
548
548
  await userEvent.click(editButton);
549
549
 
550
- expect(screen.getByRole('button', { name: 'Agent Basic' })).toBeInTheDocument();
550
+ expect(screen.getByRole('combobox', { name: 'Basic' })).toBeInTheDocument();
551
551
  });
552
552
 
553
553
  test('should not show agent selector if canUseAIFolderExtractionAgentSelector is false', async () => {
@@ -562,7 +562,7 @@ describe('MetadataInstanceEditor - canUseAIFolderExtractionAgentSelector prop',
562
562
  const editButton = await screen.findByRole('button', { name: 'Edit Metadata' });
563
563
  await userEvent.click(editButton);
564
564
 
565
- expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
565
+ expect(screen.queryByRole('combobox', { name: 'Basic' })).not.toBeInTheDocument();
566
566
  });
567
567
 
568
568
  test('should not show agent selector if canUseAIFolderExtractionAgentSelector is undefined', async () => {
@@ -573,6 +573,6 @@ describe('MetadataInstanceEditor - canUseAIFolderExtractionAgentSelector prop',
573
573
  const editButton = await screen.findByRole('button', { name: 'Edit Metadata' });
574
574
  await userEvent.click(editButton);
575
575
 
576
- expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
576
+ expect(screen.queryByRole('combobox', { name: 'Basic' })).not.toBeInTheDocument();
577
577
  });
578
578
  });