From 1ec55d87bd83b32058466758e2e5927a55f05930 Mon Sep 17 00:00:00 2001 From: Jakub Kida Date: Tue, 16 Dec 2025 16:52:07 +0100 Subject: [PATCH 1/3] feat(metadata-editor): Parse autofill values correctly for taxonomy fields --- .../useSidebarMetadataFetcher.test.tsx | 48 +++++++++++++++++++ .../hooks/useSidebarMetadataFetcher.ts | 13 ++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx b/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx index b0fa503bb2..d2c7caf8aa 100644 --- a/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx +++ b/src/elements/content-sidebar/__tests__/useSidebarMetadataFetcher.test.tsx @@ -371,6 +371,54 @@ describe('useSidebarMetadataFetcher', () => { ]); }); + test('should map taxonomy field suggestions with value and displayValue', async () => { + const taxonomyTemplate = { + canEdit: true, + id: 'metadata_template_taxonomy', + fields: [ + { + key: 'taxonomyField', + type: 'taxonomy' as MetadataTemplateFieldType, + hidden: false, + }, + ], + scope: 'global', + templateKey: 'taxonomyTemplateKey', + }; + + const mockTaxonomySuggestions = { + taxonomyField: [ + { id: 'taxonomy-id-1', displayName: 'Taxonomy Item 1' }, + { id: 'taxonomy-id-2', displayName: 'Taxonomy Item 2' }, + ], + }; + + mockAPI.getMetadata.mockImplementation((file, successCallback) => { + successCallback({ + editors: [], + templates: [taxonomyTemplate], + templateInstances: [], + }); + }); + mockAPI.extractStructured.mockResolvedValue(mockTaxonomySuggestions); + + const { result } = setupHook(); + + await waitFor(() => expect(result.current.templates).toEqual([taxonomyTemplate])); + + const suggestions = await result.current.extractSuggestions('taxonomyTemplateKey', 'global'); + + expect(suggestions).toEqual([ + { + ...taxonomyTemplate.fields[0], + aiSuggestion: [ + { value: 'taxonomy-id-1', displayValue: 'Taxonomy Item 1' }, + { value: 'taxonomy-id-2', displayValue: 'Taxonomy Item 2' }, + ], + }, + ]); + }); + test('should handle user correctable error during suggestions extraction', async () => { mockAPI.extractStructured.mockRejectedValue({ response: mockRateLimitError }); diff --git a/src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts b/src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts index fda69bd954..dc46d66310 100644 --- a/src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts +++ b/src/elements/content-sidebar/hooks/useSidebarMetadataFetcher.ts @@ -264,10 +264,19 @@ function useSidebarMetadataFetcher( return fields.map(field => { const value = answer[field.key]; - // TODO: @box/metadadata-editor does not support AI suggestions, enable once supported - if (!value || field.type === 'taxonomy') { + + if (!value) { return field; } + if (field.type === 'taxonomy') { + return { + ...field, + aiSuggestion: value.map(item => ({ + value: item.id, + displayValue: item.displayName, + })), + }; + } return { ...field, aiSuggestion: value, From df963b51cb916c02ebd623540508e3d5492aa0a9 Mon Sep 17 00:00:00 2001 From: Jakub Kida Date: Tue, 16 Dec 2025 17:19:56 +0100 Subject: [PATCH 2/3] feat(metadata-editor): update packages --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2afbb97e10..b9e5847bce 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "@box/frontend": "^11.0.1", "@box/item-icon": "^0.27.1", "@box/languages": "^1.0.0", - "@box/metadata-editor": "^1.5.3", + "@box/metadata-editor": "^1.18.0", "@box/metadata-filter": "^1.41.3", "@box/metadata-view": "^1.10.0", "@box/react-virtualized": "^9.22.3-rc-box.10", @@ -296,13 +296,13 @@ "webpack-dev-server": "^5.2.1" }, "peerDependencies": { - "@box/blueprint-web": "^12.98.0", + "@box/blueprint-web": "^12.104.1", "@box/blueprint-web-assets": "^4.80.4", "@box/box-ai-agent-selector": "^0.53.0", "@box/box-ai-content-answers": "^0.139.0", "@box/box-item-type-selector": "^0.73.1", "@box/cldr-data": ">=34.2.0", - "@box/combobox-with-api": "^1.3.11", + "@box/combobox-with-api": "^1.18.0", "@box/copy-input": "^1.5.3", "@box/item-icon": "^0.27.1", "@box/metadata-editor": "^1.5.3", From c1817b136ed4a2699b3521ac60d595bac49c623b Mon Sep 17 00:00:00 2001 From: Jakub Kida Date: Tue, 16 Dec 2025 17:24:00 +0100 Subject: [PATCH 3/3] feat(metadata-editor): update lockfile --- yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6f2fc0d78c..f256b82607 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1512,10 +1512,10 @@ resolved "https://registry.yarnpkg.com/@box/languages/-/languages-1.1.2.tgz#cd4266b3da62da18560d881e10b429653186be29" integrity sha512-d64TGosx+KRmrLZj4CIyLp42LUiEbgBJ8n8cviMQwTJmfU0g+UwZqLjmQZR1j+Q9D64yV4xHzY9K1t5nInWWeQ== -"@box/metadata-editor@^1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@box/metadata-editor/-/metadata-editor-1.5.3.tgz#75eba5fb48697ce4f9e1428e8c7187fcac9c834b" - integrity sha512-49CaS2R8xnSlFKWjVscmx+YZJRV8NjYzzTKRMmw51f0Rs3I0VxRdxo0O+FThC6AtqRPE+3gvpLRMhXJlbTVL/w== +"@box/metadata-editor@^1.18.0": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@box/metadata-editor/-/metadata-editor-1.19.0.tgz#832b63be022dc3ef0482776378fbfdaaaa7e3a87" + integrity sha512-JtI+2PbRYxX8YW2PN+E9sMeJaAX25v24PTk5upbNN/vohTjpEuy8TWeZMziLT1UBwPtJ83NXqLY3F+6P2EC4aw== "@box/metadata-filter@^1.41.3": version "1.41.3" @@ -14400,7 +14400,7 @@ node-fetch@^2.6.12, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-forge@1.3.2, node-forge@^1: +node-forge@^1: version "1.3.2" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.2.tgz#d0d2659a26eef778bf84d73e7f55c08144ee7750" integrity sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==