box-ui-elements 23.5.0-beta.4 → 24.0.0-beta.1

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 (37) 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/sidebar.css +1 -1
  6. package/dist/sidebar.js +1 -1
  7. package/es/constants.js +13 -0
  8. package/es/constants.js.flow +13 -0
  9. package/es/constants.js.map +1 -1
  10. package/es/elements/common/content-answers/ContentAnswersModal.js +1 -3
  11. package/es/elements/common/content-answers/ContentAnswersModal.js.map +1 -1
  12. package/es/elements/content-explorer/ContentExplorer.js +11 -5
  13. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  14. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +24 -3
  15. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
  16. package/es/elements/content-sidebar/BoxAISidebar.js.map +1 -1
  17. package/es/elements/content-sidebar/BoxAISidebarContent.js +2 -4
  18. package/es/elements/content-sidebar/BoxAISidebarContent.js.map +1 -1
  19. package/es/elements/content-sidebar/stories/BoxAISidebar.stories.js +0 -1
  20. package/es/elements/content-sidebar/stories/BoxAISidebar.stories.js.map +1 -1
  21. package/es/elements/content-sidebar/stories/tests/BoxAISidebar-visual.stories.js +0 -1
  22. package/es/elements/content-sidebar/stories/tests/BoxAISidebar-visual.stories.js.map +1 -1
  23. package/es/src/elements/common/content-answers/ContentAnswersModal.d.ts +0 -1
  24. package/es/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.d.ts +1 -0
  25. package/es/src/elements/content-sidebar/BoxAISidebar.d.ts +0 -1
  26. package/es/src/elements/content-sidebar/stories/BoxAISidebar.stories.d.ts +0 -1
  27. package/package.json +2 -2
  28. package/src/constants.js +13 -0
  29. package/src/elements/common/content-answers/ContentAnswersModal.tsx +0 -3
  30. package/src/elements/common/content-answers/__tests__/ContentAnswersModal.test.tsx +7 -2
  31. package/src/elements/content-explorer/ContentExplorer.tsx +15 -6
  32. package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +17 -3
  33. package/src/elements/content-sidebar/BoxAISidebar.tsx +0 -1
  34. package/src/elements/content-sidebar/BoxAISidebarContent.tsx +1 -3
  35. package/src/elements/content-sidebar/__tests__/BoxAISidebar.test.tsx +0 -8
  36. package/src/elements/content-sidebar/stories/BoxAISidebar.stories.tsx +0 -1
  37. package/src/elements/content-sidebar/stories/tests/BoxAISidebar-visual.stories.tsx +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataView-visual.stories.js","names":["http","HttpResponse","expect","userEvent","waitFor","within","Download","SignMeOthers","Sign","noop","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","mockRootFolder","scope","templateScope","templateKey","metadataScopeAndKey","metadataFieldNamePrefix","metadataQuery","from","ancestor_folder_id","sort_by","field_key","fields","key","direction","map","field","fieldsToShow","canEdit","displayName","columns","textValue","id","type","allowSorting","minWidth","maxWidth","defaultView","metadataView","args","metadataViewV2ElementProps","metadataViewProps","features","contentExplorer","metadataViewV2","metadataViewV2WithCustomActions","_objectSpread","tableProps","isSelectAllEnabled","itemActionMenuProps","actions","label","onClick","icon","subMenuTrigger","subMenuActions","play","canvas","getByRole","name","toBeInTheDocument","firstRow","ellipsesButton","click","initialFilterActionBarProps","initialFilterValues","value","metadataViewV2WithInitialFilterValues","actionBarProps","toHaveTextContent","contactRoleChip","fileTypeChip","sidePanelOpenWithSingleItemSelected","checkbox","metadataButton","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json","get"],"sources":["../../../../../src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react';\nimport { http, HttpResponse } from 'msw';\nimport { expect, userEvent, waitFor, within } from 'storybook/test';\nimport { Download, SignMeOthers } from '@box/blueprint-web-assets/icons/Fill/index';\nimport { Sign } from '@box/blueprint-web-assets/icons/Line';\nimport noop from 'lodash/noop';\n\nimport ContentExplorer from '../../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\nimport { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';\nimport { mockRootFolder } from '../../../common/__mocks__/mockRootFolder';\n\n// The intent behind relying on mockMetadata is to allow a developer to paste in their own metadata template schema for use with live API calls.\nconst { scope: templateScope, templateKey } = mockSchema;\n\nconst metadataScopeAndKey = `${templateScope}.${templateKey}`;\nconst metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;\n\n// This is the body of the metadata query API call.\n// https://developer.box.com/guides/metadata/queries/syntax/\nconst metadataQuery = {\n from: metadataScopeAndKey,\n ancestor_folder_id: '0',\n sort_by: [\n {\n field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`, // Default to sorting by the first field in the schema\n direction: 'asc',\n },\n ],\n fields: [\n // Default to returning all fields in the metadata template schema, and name as a standalone (non-metadata) field\n ...mockSchema.fields.map(field => `${metadataFieldNamePrefix}.${field.key}`),\n 'name',\n ],\n};\n\n// Used for metadata view v1\nconst fieldsToShow = [\n { key: `${metadataFieldNamePrefix}.name`, canEdit: false, displayName: 'Alias' },\n { key: `${metadataFieldNamePrefix}.industry`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.last_contacted_at`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.role`, canEdit: true },\n];\n\n// Used for metadata view v2\nconst columns = [\n {\n // Always include the name column\n textValue: 'Name',\n id: 'name',\n type: 'string',\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n },\n ...mockSchema.fields.map(field => ({\n textValue: field.displayName,\n id: `${metadataFieldNamePrefix}.${field.key}`,\n type: field.type,\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n })),\n];\n\n// Switches ContentExplorer to use Metadata View over standard, folder-based view.\nconst defaultView = 'metadata';\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataQuery,\n fieldsToShow,\n defaultView,\n },\n};\n\nconst metadataViewV2ElementProps = {\n metadataViewProps: {\n columns,\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n};\n\nexport const metadataViewV2: Story = {\n args: metadataViewV2ElementProps,\n};\n\nexport const metadataViewV2WithCustomActions: Story = {\n args: {\n ...metadataViewV2ElementProps,\n metadataViewProps: {\n columns,\n tableProps: {\n isSelectAllEnabled: true,\n },\n itemActionMenuProps: {\n actions: [\n {\n label: 'Download',\n onClick: noop,\n icon: Download,\n },\n ],\n subMenuTrigger: {\n label: 'Sign',\n icon: Sign,\n },\n subMenuActions: [\n {\n label: 'Request Signature',\n onClick: noop,\n icon: SignMeOthers,\n },\n ],\n },\n },\n },\n play: async ({ canvas }) => {\n await waitFor(() => {\n expect(canvas.getByRole('row', { name: /Child 2/i })).toBeInTheDocument();\n });\n const firstRow = canvas.getByRole('row', { name: /Child 2/i });\n const ellipsesButton = within(firstRow).getByRole('button', { name: 'Action menu' });\n userEvent.click(ellipsesButton);\n },\n};\n\nconst initialFilterActionBarProps = {\n initialFilterValues: {\n 'industry-filter': { value: ['Legal'] },\n 'mimetype-filter': { value: ['boxnoteType', 'documentType', 'threedType'] },\n 'role-filter': { value: ['Developer', 'Business Owner', 'Marketing'] },\n },\n};\n\nexport const metadataViewV2WithInitialFilterValues: Story = {\n args: {\n ...metadataViewV2ElementProps,\n metadataViewProps: {\n columns,\n actionBarProps: initialFilterActionBarProps,\n },\n },\n play: async ({ canvas }) => {\n // Wait for chips to update with initial values\n await waitFor(() => {\n expect(canvas.getByRole('button', { name: /Industry/i })).toHaveTextContent(/\\(1\\)/);\n });\n // Other chips should reflect initialized values\n const contactRoleChip = canvas.getByRole('button', { name: /Contact Role/i });\n expect(contactRoleChip).toHaveTextContent(/\\(3\\)/);\n\n const fileTypeChip = canvas.getByRole('button', { name: /Box Note/i });\n expect(fileTypeChip).toHaveTextContent(/\\+2/);\n },\n};\n\nexport const sidePanelOpenWithSingleItemSelected: Story = {\n args: {\n ...metadataViewV2ElementProps,\n metadataViewProps: {\n columns,\n tableProps: {\n isSelectAllEnabled: true,\n },\n },\n },\n\n play: async ({ canvas }) => {\n await waitFor(() => {\n expect(canvas.getByRole('row', { name: /Child 2/i })).toBeInTheDocument();\n });\n\n // Select the first row by clicking its checkbox\n const firstRow = canvas.getByRole('row', { name: /Child 2/i });\n const checkbox = within(firstRow).getByRole('checkbox');\n await userEvent.click(checkbox);\n\n const metadataButton = canvas.getByRole('button', { name: 'Metadata' });\n await userEvent.click(metadataButton);\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/tests/MetadataView/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/:id`, () => {\n return HttpResponse.json(mockRootFolder);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MetadataView-visual.stories.js","names":["http","HttpResponse","expect","userEvent","waitFor","within","Download","SignMeOthers","Sign","noop","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","mockRootFolder","scope","templateScope","templateKey","metadataScopeAndKey","metadataFieldNamePrefix","metadataQuery","from","ancestor_folder_id","order_by","field_key","fields","key","direction","map","field","fieldsToShow","canEdit","displayName","columns","textValue","id","type","allowsSorting","minWidth","maxWidth","defaultView","metadataView","args","metadataViewV2ElementProps","metadataViewProps","features","contentExplorer","metadataViewV2","metadataViewV2SortsFromHeader","play","canvas","getByRole","name","toBeInTheDocument","firstRow","industryHeader","click","metadataViewV2WithCustomActions","_objectSpread","tableProps","isSelectAllEnabled","itemActionMenuProps","actions","label","onClick","icon","subMenuTrigger","subMenuActions","ellipsesButton","initialFilterActionBarProps","initialFilterValues","value","metadataViewV2WithInitialFilterValues","actionBarProps","toHaveTextContent","contactRoleChip","fileTypeChip","sidePanelOpenWithSingleItemSelected","checkbox","metadataButton","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json","get"],"sources":["../../../../../src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react';\nimport { http, HttpResponse } from 'msw';\nimport { expect, userEvent, waitFor, within } from 'storybook/test';\nimport { Download, SignMeOthers } from '@box/blueprint-web-assets/icons/Fill/index';\nimport { Sign } from '@box/blueprint-web-assets/icons/Line';\nimport noop from 'lodash/noop';\n\nimport ContentExplorer from '../../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\nimport { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';\nimport { mockRootFolder } from '../../../common/__mocks__/mockRootFolder';\n\n// The intent behind relying on mockMetadata is to allow a developer to paste in their own metadata template schema for use with live API calls.\nconst { scope: templateScope, templateKey } = mockSchema;\n\nconst metadataScopeAndKey = `${templateScope}.${templateKey}`;\nconst metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;\n\n// This is the body of the metadata query API call.\n// https://developer.box.com/guides/metadata/queries/syntax/\nconst metadataQuery = {\n from: metadataScopeAndKey,\n ancestor_folder_id: '0',\n order_by: [\n {\n field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`, // Default to sorting by the first field in the schema\n direction: 'asc',\n },\n ],\n fields: [\n // Default to returning all fields in the metadata template schema, and name as a standalone (non-metadata) field\n ...mockSchema.fields.map(field => `${metadataFieldNamePrefix}.${field.key}`),\n 'name',\n ],\n};\n\n// Used for metadata view v1\nconst fieldsToShow = [\n { key: `${metadataFieldNamePrefix}.name`, canEdit: false, displayName: 'Alias' },\n { key: `${metadataFieldNamePrefix}.industry`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.last_contacted_at`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.role`, canEdit: true },\n];\n\n// Used for metadata view v2\nconst columns = [\n {\n // Always include the name column\n textValue: 'Name',\n id: 'name',\n type: 'string',\n allowsSorting: true,\n minWidth: 150,\n maxWidth: 150,\n },\n ...mockSchema.fields.map(field => ({\n textValue: field.displayName,\n id: `${metadataFieldNamePrefix}.${field.key}`,\n type: field.type,\n allowsSorting: true,\n minWidth: 150,\n maxWidth: 150,\n })),\n];\n\n// Switches ContentExplorer to use Metadata View over standard, folder-based view.\nconst defaultView = 'metadata';\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataQuery,\n fieldsToShow,\n defaultView,\n },\n};\n\nconst metadataViewV2ElementProps = {\n metadataViewProps: {\n columns,\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n};\n\nexport const metadataViewV2: Story = {\n args: metadataViewV2ElementProps,\n};\n\n// @TODO Assert that rows are actually sorted in a different order, once handleSortChange is implemented\nexport const metadataViewV2SortsFromHeader: Story = {\n args: metadataViewV2ElementProps,\n play: async ({ canvas }) => {\n await waitFor(() => {\n expect(canvas.getByRole('row', { name: /Industry/i })).toBeInTheDocument();\n });\n\n const firstRow = canvas.getByRole('row', { name: /Industry/i });\n const industryHeader = within(firstRow).getByRole('columnheader', { name: 'Industry' });\n userEvent.click(industryHeader);\n },\n};\n\nexport const metadataViewV2WithCustomActions: Story = {\n args: {\n ...metadataViewV2ElementProps,\n metadataViewProps: {\n columns,\n tableProps: {\n isSelectAllEnabled: true,\n },\n itemActionMenuProps: {\n actions: [\n {\n label: 'Download',\n onClick: noop,\n icon: Download,\n },\n ],\n subMenuTrigger: {\n label: 'Sign',\n icon: Sign,\n },\n subMenuActions: [\n {\n label: 'Request Signature',\n onClick: noop,\n icon: SignMeOthers,\n },\n ],\n },\n },\n },\n play: async ({ canvas }) => {\n await waitFor(() => {\n expect(canvas.getByRole('row', { name: /Child 2/i })).toBeInTheDocument();\n });\n const firstRow = canvas.getByRole('row', { name: /Child 2/i });\n const ellipsesButton = within(firstRow).getByRole('button', { name: 'Action menu' });\n userEvent.click(ellipsesButton);\n },\n};\n\nconst initialFilterActionBarProps = {\n initialFilterValues: {\n 'industry-filter': { value: ['Legal'] },\n 'mimetype-filter': { value: ['boxnoteType', 'documentType', 'threedType'] },\n 'role-filter': { value: ['Developer', 'Business Owner', 'Marketing'] },\n },\n};\n\nexport const metadataViewV2WithInitialFilterValues: Story = {\n args: {\n ...metadataViewV2ElementProps,\n metadataViewProps: {\n columns,\n actionBarProps: initialFilterActionBarProps,\n },\n },\n play: async ({ canvas }) => {\n // Wait for chips to update with initial values\n await waitFor(() => {\n expect(canvas.getByRole('button', { name: /Industry/i })).toHaveTextContent(/\\(1\\)/);\n });\n // Other chips should reflect initialized values\n const contactRoleChip = canvas.getByRole('button', { name: /Contact Role/i });\n expect(contactRoleChip).toHaveTextContent(/\\(3\\)/);\n\n const fileTypeChip = canvas.getByRole('button', { name: /Box Note/i });\n expect(fileTypeChip).toHaveTextContent(/\\+2/);\n },\n};\n\nexport const sidePanelOpenWithSingleItemSelected: Story = {\n args: {\n ...metadataViewV2ElementProps,\n metadataViewProps: {\n columns,\n tableProps: {\n isSelectAllEnabled: true,\n },\n },\n },\n\n play: async ({ canvas }) => {\n await waitFor(() => {\n expect(canvas.getByRole('row', { name: /Child 2/i })).toBeInTheDocument();\n });\n\n // Select the first row by clicking its checkbox\n const firstRow = canvas.getByRole('row', { name: /Child 2/i });\n const checkbox = within(firstRow).getByRole('checkbox');\n await userEvent.click(checkbox);\n\n const metadataButton = canvas.getByRole('button', { name: 'Metadata' });\n await userEvent.click(metadataButton);\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/tests/MetadataView/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/:id`, () => {\n return HttpResponse.json(mockRootFolder);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BoxAISidebar.js","names":["React","useIntl","AgentsProvider","BoxAISidebarContent","BoxAISidebarContext","SPREADSHEET_FILE_EXTENSIONS","messages","BoxAISidebar","props","cache","contentName","elementId","fileExtension","fileID","getSuggestedQuestions","isIntelligentQueryMode","isFeedbackEnabled","isFeedbackFormEnabled","isStopResponseEnabled","items","itemSize","localizedQuestions","onFeedbackFormSubmit","onUserInteraction","recordAction","renderRemoteModule","setCacheValue","shouldFeedbackFormIncludeFeedbackText","shouldPreinitSession","setHasQuestions","rest","_objectWithoutProperties","_excluded","questions","formatMessage","contextValue","useMemo","useEffect","length","questionsWithoutInProgress","isCompleted","slice","isSpreadsheet","includes","spreadsheetNotice","welcomeMessageSpreadsheetNotice","welcomeMessageIntelligentQueryNotice","handleSuggestedQuestionsFetched","fetchedSuggestedQuestions","suggestedQuestions","createElement","value","agents","Provider","_extends","cachedSuggestedQuestions","isOpen","itemID","itemIDs","onSuggestedQuestionsFetched","restoredQuestions","restoredSession","encodedSession","restoredShouldShowLandingPage","shouldShowLandingPage","warningNotice","warningNoticeAriaLabel","welcomeMessageSpreadsheetNoticeAriaLabel"],"sources":["../../../src/elements/content-sidebar/BoxAISidebar.tsx"],"sourcesContent":["/**\n * @file Box AI Sidebar Container\n * @author Box\n */\nimport * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { type FeedbackFormData, type ItemType, SuggestedQuestionType } from '@box/box-ai-content-answers';\nimport { AgentsProvider, RecordActionType } from '@box/box-ai-agent-selector';\nimport BoxAISidebarContent from './BoxAISidebarContent';\nimport { BoxAISidebarContext } from './context/BoxAISidebarContext';\nimport { SPREADSHEET_FILE_EXTENSIONS } from '../common/content-answers/constants';\nimport type { BoxAISidebarCache, BoxAISidebarCacheSetter } from './types/BoxAISidebarTypes';\nimport messages from '../common/content-answers/messages';\n\nexport interface BoxAISidebarProps {\n contentName: string;\n cache: BoxAISidebarCache;\n createSessionRequest: (payload: Record<string, unknown>, itemID: string) => Promise<unknown>;\n elementId: string;\n fetchTimeout: Record<string, unknown>;\n fileExtension: string;\n fileID: string;\n getAgentConfig: (payload: Record<string, unknown>) => Promise<unknown>;\n getAIStudioAgents: () => Promise<unknown>;\n getAnswer: (\n payload: Record<string, unknown>,\n itemID?: string,\n itemIDs?: Array<string>,\n state?: Record<string, unknown>,\n ) => Promise<unknown>;\n getAnswerStreaming: (\n payload: Record<string, unknown>,\n itemID?: string,\n itemIDs?: Array<string>,\n abortController?: AbortController,\n state?: Record<string, unknown>,\n ) => Promise<unknown>;\n getSuggestedQuestions: (itemID: string) => Promise<unknown> | null;\n hostAppName: string;\n isAgentSelectorEnabled: boolean;\n isAIStudioAgentSelectorEnabled: boolean;\n isCitationsEnabled: boolean;\n isDebugModeEnabled: boolean;\n isFeedbackEnabled: boolean;\n isFeedbackFormEnabled: boolean;\n isIntelligentQueryMode: boolean;\n isMarkdownEnabled: boolean;\n isResetChatEnabled: boolean;\n isStopResponseEnabled?: boolean;\n isStreamingEnabled: boolean;\n items: Array<ItemType>;\n itemSize?: string;\n localizedQuestions: Array<{ id: string; label: string; prompt: string }>;\n onFeedbackFormSubmit?: (data: FeedbackFormData, onSuccess: () => void) => void;\n onUserInteraction?: () => void;\n recordAction: (params: RecordActionType) => void;\n setCacheValue: BoxAISidebarCacheSetter;\n shouldFeedbackFormIncludeFeedbackText?: boolean;\n renderRemoteModule?: (elementId: string) => React.ReactNode;\n shouldPreinitSession?: boolean;\n setHasQuestions: (hasQuestions: boolean) => void;\n}\n\nconst BoxAISidebar = (props: BoxAISidebarProps) => {\n const {\n cache,\n contentName,\n elementId,\n fileExtension,\n fileID,\n getSuggestedQuestions,\n isIntelligentQueryMode,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n localizedQuestions,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n renderRemoteModule,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession = true,\n setHasQuestions,\n ...rest\n } = props;\n const { questions } = cache;\n const { formatMessage } = useIntl();\n const contextValue = React.useMemo(\n () => ({\n cache,\n contentName,\n elementId,\n fileExtension,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession,\n }),\n [\n cache,\n contentName,\n elementId,\n fileExtension,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession,\n ],\n );\n\n React.useEffect(() => {\n if (setHasQuestions) {\n setHasQuestions(questions.length > 0);\n }\n }, [questions.length, setHasQuestions]);\n\n if (renderRemoteModule) {\n return renderRemoteModule(elementId);\n }\n\n let questionsWithoutInProgress = questions;\n if (questions.length > 0 && !questions[questions.length - 1].isCompleted) {\n // pass only fully completed questions to not show loading indicator of question where we canceled API request\n questionsWithoutInProgress = questionsWithoutInProgress.slice(0, -1);\n }\n\n const isSpreadsheet = SPREADSHEET_FILE_EXTENSIONS.includes(fileExtension);\n\n let spreadsheetNotice = isSpreadsheet ? formatMessage(messages.welcomeMessageSpreadsheetNotice) : '';\n if (isIntelligentQueryMode) {\n spreadsheetNotice = formatMessage(messages.welcomeMessageIntelligentQueryNotice);\n } else if (isSpreadsheet) {\n spreadsheetNotice = formatMessage(messages.welcomeMessageSpreadsheetNotice);\n }\n\n const handleSuggestedQuestionsFetched = (fetchedSuggestedQuestions: SuggestedQuestionType[]) => {\n setCacheValue('suggestedQuestions', fetchedSuggestedQuestions);\n };\n\n const suggestedQuestions = getSuggestedQuestions === null ? localizedQuestions : [];\n\n return (\n // BoxAISidebarContent is using withApiWrapper that is not passing all provided props,\n // that's why we need to use provider to pass other props\n <AgentsProvider value={cache.agents}>\n <BoxAISidebarContext.Provider value={contextValue}>\n <BoxAISidebarContent\n cachedSuggestedQuestions={cache.suggestedQuestions}\n getSuggestedQuestions={getSuggestedQuestions}\n isOpen\n isStopResponseEnabled={isStopResponseEnabled}\n itemID={fileID}\n itemIDs={[fileID]}\n onSuggestedQuestionsFetched={handleSuggestedQuestionsFetched}\n restoredQuestions={questionsWithoutInProgress}\n restoredSession={cache.encodedSession}\n restoredShouldShowLandingPage={cache.shouldShowLandingPage}\n shouldPreinitSession={shouldPreinitSession}\n suggestedQuestions={\n cache.suggestedQuestions.length > 0 ? cache.suggestedQuestions : suggestedQuestions\n }\n warningNotice={spreadsheetNotice}\n warningNoticeAriaLabel={formatMessage(messages.welcomeMessageSpreadsheetNoticeAriaLabel)}\n {...rest}\n />\n </BoxAISidebarContext.Provider>\n </AgentsProvider>\n );\n};\n\nexport default BoxAISidebar;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BoxAISidebar.js","names":["React","useIntl","AgentsProvider","BoxAISidebarContent","BoxAISidebarContext","SPREADSHEET_FILE_EXTENSIONS","messages","BoxAISidebar","props","cache","contentName","elementId","fileExtension","fileID","getSuggestedQuestions","isIntelligentQueryMode","isFeedbackEnabled","isFeedbackFormEnabled","isStopResponseEnabled","items","itemSize","localizedQuestions","onFeedbackFormSubmit","onUserInteraction","recordAction","renderRemoteModule","setCacheValue","shouldFeedbackFormIncludeFeedbackText","shouldPreinitSession","setHasQuestions","rest","_objectWithoutProperties","_excluded","questions","formatMessage","contextValue","useMemo","useEffect","length","questionsWithoutInProgress","isCompleted","slice","isSpreadsheet","includes","spreadsheetNotice","welcomeMessageSpreadsheetNotice","welcomeMessageIntelligentQueryNotice","handleSuggestedQuestionsFetched","fetchedSuggestedQuestions","suggestedQuestions","createElement","value","agents","Provider","_extends","cachedSuggestedQuestions","isOpen","itemID","itemIDs","onSuggestedQuestionsFetched","restoredQuestions","restoredSession","encodedSession","restoredShouldShowLandingPage","shouldShowLandingPage","warningNotice","warningNoticeAriaLabel","welcomeMessageSpreadsheetNoticeAriaLabel"],"sources":["../../../src/elements/content-sidebar/BoxAISidebar.tsx"],"sourcesContent":["/**\n * @file Box AI Sidebar Container\n * @author Box\n */\nimport * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { type FeedbackFormData, type ItemType, SuggestedQuestionType } from '@box/box-ai-content-answers';\nimport { AgentsProvider, RecordActionType } from '@box/box-ai-agent-selector';\nimport BoxAISidebarContent from './BoxAISidebarContent';\nimport { BoxAISidebarContext } from './context/BoxAISidebarContext';\nimport { SPREADSHEET_FILE_EXTENSIONS } from '../common/content-answers/constants';\nimport type { BoxAISidebarCache, BoxAISidebarCacheSetter } from './types/BoxAISidebarTypes';\nimport messages from '../common/content-answers/messages';\n\nexport interface BoxAISidebarProps {\n contentName: string;\n cache: BoxAISidebarCache;\n createSessionRequest: (payload: Record<string, unknown>, itemID: string) => Promise<unknown>;\n elementId: string;\n fetchTimeout: Record<string, unknown>;\n fileExtension: string;\n fileID: string;\n getAgentConfig: (payload: Record<string, unknown>) => Promise<unknown>;\n getAIStudioAgents: () => Promise<unknown>;\n getAnswer: (\n payload: Record<string, unknown>,\n itemID?: string,\n itemIDs?: Array<string>,\n state?: Record<string, unknown>,\n ) => Promise<unknown>;\n getAnswerStreaming: (\n payload: Record<string, unknown>,\n itemID?: string,\n itemIDs?: Array<string>,\n abortController?: AbortController,\n state?: Record<string, unknown>,\n ) => Promise<unknown>;\n getSuggestedQuestions: (itemID: string) => Promise<unknown> | null;\n hostAppName: string;\n isAgentSelectorEnabled: boolean;\n isAIStudioAgentSelectorEnabled: boolean;\n isCitationsEnabled: boolean;\n isDebugModeEnabled: boolean;\n isFeedbackEnabled: boolean;\n isFeedbackFormEnabled: boolean;\n isIntelligentQueryMode: boolean;\n isMarkdownEnabled: boolean;\n isStopResponseEnabled?: boolean;\n isStreamingEnabled: boolean;\n items: Array<ItemType>;\n itemSize?: string;\n localizedQuestions: Array<{ id: string; label: string; prompt: string }>;\n onFeedbackFormSubmit?: (data: FeedbackFormData, onSuccess: () => void) => void;\n onUserInteraction?: () => void;\n recordAction: (params: RecordActionType) => void;\n setCacheValue: BoxAISidebarCacheSetter;\n shouldFeedbackFormIncludeFeedbackText?: boolean;\n renderRemoteModule?: (elementId: string) => React.ReactNode;\n shouldPreinitSession?: boolean;\n setHasQuestions: (hasQuestions: boolean) => void;\n}\n\nconst BoxAISidebar = (props: BoxAISidebarProps) => {\n const {\n cache,\n contentName,\n elementId,\n fileExtension,\n fileID,\n getSuggestedQuestions,\n isIntelligentQueryMode,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n localizedQuestions,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n renderRemoteModule,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession = true,\n setHasQuestions,\n ...rest\n } = props;\n const { questions } = cache;\n const { formatMessage } = useIntl();\n const contextValue = React.useMemo(\n () => ({\n cache,\n contentName,\n elementId,\n fileExtension,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession,\n }),\n [\n cache,\n contentName,\n elementId,\n fileExtension,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession,\n ],\n );\n\n React.useEffect(() => {\n if (setHasQuestions) {\n setHasQuestions(questions.length > 0);\n }\n }, [questions.length, setHasQuestions]);\n\n if (renderRemoteModule) {\n return renderRemoteModule(elementId);\n }\n\n let questionsWithoutInProgress = questions;\n if (questions.length > 0 && !questions[questions.length - 1].isCompleted) {\n // pass only fully completed questions to not show loading indicator of question where we canceled API request\n questionsWithoutInProgress = questionsWithoutInProgress.slice(0, -1);\n }\n\n const isSpreadsheet = SPREADSHEET_FILE_EXTENSIONS.includes(fileExtension);\n\n let spreadsheetNotice = isSpreadsheet ? formatMessage(messages.welcomeMessageSpreadsheetNotice) : '';\n if (isIntelligentQueryMode) {\n spreadsheetNotice = formatMessage(messages.welcomeMessageIntelligentQueryNotice);\n } else if (isSpreadsheet) {\n spreadsheetNotice = formatMessage(messages.welcomeMessageSpreadsheetNotice);\n }\n\n const handleSuggestedQuestionsFetched = (fetchedSuggestedQuestions: SuggestedQuestionType[]) => {\n setCacheValue('suggestedQuestions', fetchedSuggestedQuestions);\n };\n\n const suggestedQuestions = getSuggestedQuestions === null ? localizedQuestions : [];\n\n return (\n // BoxAISidebarContent is using withApiWrapper that is not passing all provided props,\n // that's why we need to use provider to pass other props\n <AgentsProvider value={cache.agents}>\n <BoxAISidebarContext.Provider value={contextValue}>\n <BoxAISidebarContent\n cachedSuggestedQuestions={cache.suggestedQuestions}\n getSuggestedQuestions={getSuggestedQuestions}\n isOpen\n isStopResponseEnabled={isStopResponseEnabled}\n itemID={fileID}\n itemIDs={[fileID]}\n onSuggestedQuestionsFetched={handleSuggestedQuestionsFetched}\n restoredQuestions={questionsWithoutInProgress}\n restoredSession={cache.encodedSession}\n restoredShouldShowLandingPage={cache.shouldShowLandingPage}\n shouldPreinitSession={shouldPreinitSession}\n suggestedQuestions={\n cache.suggestedQuestions.length > 0 ? cache.suggestedQuestions : suggestedQuestions\n }\n warningNotice={spreadsheetNotice}\n warningNoticeAriaLabel={formatMessage(messages.welcomeMessageSpreadsheetNoticeAriaLabel)}\n {...rest}\n />\n </BoxAISidebarContext.Provider>\n </AgentsProvider>\n );\n};\n\nexport default BoxAISidebar;\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- const _excluded = ["createSession", "encodedSession", "onClearAction", "onSelectedAgentCallback", "getAIStudioAgents", "hasRequestInProgress", "hostAppName", "isAIStudioAgentSelectorEnabled", "isLoading", "isResetChatEnabled", "onSelectAgent", "questions", "shouldShowLandingPage", "sendQuestion", "stopQuestion"];
1
+ const _excluded = ["createSession", "encodedSession", "onClearAction", "onSelectedAgentCallback", "getAIStudioAgents", "hasRequestInProgress", "hostAppName", "isAIStudioAgentSelectorEnabled", "isLoading", "onSelectAgent", "questions", "shouldShowLandingPage", "sendQuestion", "stopQuestion"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
4
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
@@ -38,7 +38,6 @@ function BoxAISidebarContent(props) {
38
38
  hostAppName,
39
39
  isAIStudioAgentSelectorEnabled,
40
40
  isLoading,
41
- isResetChatEnabled,
42
41
  onSelectAgent,
43
42
  questions,
44
43
  shouldShowLandingPage,
@@ -172,7 +171,7 @@ function BoxAISidebarContent(props) {
172
171
  variant: "sidebar"
173
172
  })));
174
173
  };
175
- const renderActions = () => /*#__PURE__*/React.createElement(React.Fragment, null, renderBoxAISidebarTitle(), isResetChatEnabled && /*#__PURE__*/React.createElement(ClearConversationButton, {
174
+ const renderActions = () => /*#__PURE__*/React.createElement(React.Fragment, null, renderBoxAISidebarTitle(), /*#__PURE__*/React.createElement(ClearConversationButton, {
176
175
  onClick: onClearAction
177
176
  }), /*#__PURE__*/React.createElement(Tooltip, {
178
177
  content: formatMessage(messages.sidebarBoxAISwitchToModalView),
@@ -224,7 +223,6 @@ function BoxAISidebarContent(props) {
224
223
  isAIStudioAgentSelectorEnabled: isAIStudioAgentSelectorEnabled,
225
224
  isFeedbackEnabled: isFeedbackEnabled,
226
225
  isFeedbackFormEnabled: isFeedbackFormEnabled,
227
- isResetChatEnabled: isResetChatEnabled,
228
226
  isStopResponseEnabled: isStopResponseEnabled,
229
227
  items: items,
230
228
  itemSize: itemSize,
@@ -1 +1 @@
1
- {"version":3,"file":"BoxAISidebarContent.js","names":["React","flow","useIntl","classNames","BoxAiAgentSelectorWithApi","useAgents","IconButton","Tooltip","ArrowsExpand","BoxAiContentAnswers","ClearConversationButton","IntelligenceModal","withApiWrapper","SidebarContent","withAPIContext","withErrorBoundary","withLogger","ORIGIN_BOXAI_SIDEBAR","SIDEBAR_VIEW_BOXAI","EVENT_JS_READY","mark","BoxAISidebarContext","BoxAISidebarTitle","messages","MARK_NAME_JS_READY","BoxAISidebarContent","props","createSession","encodedSession","onClearAction","onSelectedAgentCallback","getAIStudioAgents","hasRequestInProgress","hostAppName","isAIStudioAgentSelectorEnabled","isLoading","isResetChatEnabled","onSelectAgent","questions","shouldShowLandingPage","sendQuestion","stopQuestion","rest","_objectWithoutProperties","_excluded","formatMessage","isSessionInitiated","useRef","isModalOpen","setIsModalOpen","useState","cache","contentName","elementId","fileExtension","isFeedbackEnabled","isFeedbackFormEnabled","isStopResponseEnabled","items","itemSize","onFeedbackFormSubmit","onUserInteraction","recordAction","setCacheValue","shouldFeedbackFormIncludeFeedbackText","shouldPreinitSession","useContext","agents","requestState","selectedAgent","cacheQuestions","handleUserIntentToUseAI","userHasInteracted","handleModalClose","handleSwitchToModalClick","useEffect","length","isCompleted","prompt","action","component","feature","target","data","map","item","status","fileType","lastQuestion","current","id","renderBoxAISidebarTitle","createElement","className","disabled","fetcher","onAgentsListOpen","shouldHideAgentSelectorOnLoad","variant","renderActions","Fragment","onClick","content","sidebarBoxAISwitchToModalView","icon","size","actions","sidebarView","_extends","contentType","sidebarBoxAIContent","onUserIntentToUseAI","showLoadingIndicator","submitQuestion","extension","onOpenChange","open","undefined","stopPropagationOnEsc","shouldRenderProviders","BoxAISidebarComponent","BoxAISidebarContentDefaultExport"],"sources":["../../../src/elements/content-sidebar/BoxAISidebarContent.tsx"],"sourcesContent":["/**\n * @file Box AI sidebar component\n * @author Box\n */\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\nimport classNames from 'classnames';\nimport { BoxAiAgentSelectorWithApi, useAgents, type AgentType } from '@box/box-ai-agent-selector';\nimport { IconButton, Tooltip } from '@box/blueprint-web';\nimport { ArrowsExpand } from '@box/blueprint-web-assets/icons/Fill';\nimport {\n BoxAiContentAnswers,\n ClearConversationButton,\n IntelligenceModal,\n withApiWrapper,\n type ApiWrapperWithInjectedProps,\n} from '@box/box-ai-content-answers';\nimport SidebarContent from './SidebarContent';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withLogger } from '../common/logger';\nimport { ORIGIN_BOXAI_SIDEBAR, SIDEBAR_VIEW_BOXAI } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { BoxAISidebarContext } from './context/BoxAISidebarContext';\nimport BoxAISidebarTitle from './BoxAISidebarTitle';\n\nimport messages from '../common/messages';\n\nimport './BoxAISidebar.scss';\n\nconst MARK_NAME_JS_READY: string = `${ORIGIN_BOXAI_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nfunction BoxAISidebarContent(\n props: ApiWrapperWithInjectedProps & {\n onSelectedAgentCallback: (selectedAgent: AgentType) => void;\n shouldShowLandingPage: boolean;\n },\n) {\n const {\n createSession,\n encodedSession,\n onClearAction,\n onSelectedAgentCallback,\n getAIStudioAgents,\n hasRequestInProgress,\n hostAppName,\n isAIStudioAgentSelectorEnabled,\n isLoading,\n isResetChatEnabled,\n onSelectAgent,\n questions,\n shouldShowLandingPage,\n sendQuestion,\n stopQuestion,\n ...rest\n } = props;\n const { formatMessage } = useIntl();\n const isSessionInitiated = React.useRef<boolean>(false);\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const {\n cache,\n contentName,\n elementId,\n fileExtension,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession,\n } = React.useContext(BoxAISidebarContext);\n const { agents, requestState, selectedAgent } = useAgents();\n const { questions: cacheQuestions } = cache;\n\n if (cache.shouldShowLandingPage !== shouldShowLandingPage) {\n setCacheValue('shouldShowLandingPage', shouldShowLandingPage);\n }\n\n if (cache.encodedSession !== encodedSession) {\n setCacheValue('encodedSession', encodedSession);\n }\n\n if (cache.questions !== questions) {\n setCacheValue('questions', questions);\n }\n\n if (cache.agents.selectedAgent !== selectedAgent) {\n setCacheValue('agents', { agents, requestState, selectedAgent });\n }\n\n const handleUserIntentToUseAI = (userHasInteracted: boolean = false) => {\n // Create session if not already created or loading\n if (!shouldPreinitSession && !encodedSession && !isLoading && createSession) {\n createSession(true, false);\n }\n if (userHasInteracted && onUserInteraction) {\n onUserInteraction();\n }\n };\n\n const handleModalClose = () => {\n setIsModalOpen(false);\n };\n\n const handleSwitchToModalClick = () => {\n handleUserIntentToUseAI();\n setIsModalOpen(true);\n };\n\n React.useEffect(() => {\n if (shouldPreinitSession && !encodedSession && createSession) {\n createSession(true, true);\n }\n\n if (\n encodedSession &&\n cacheQuestions.length > 0 &&\n cacheQuestions[cacheQuestions.length - 1].isCompleted === false\n ) {\n // if we have cache with question that is not completed resend it to trigger an API\n sendQuestion({ prompt: cacheQuestions[cacheQuestions.length - 1].prompt });\n }\n\n if (recordAction) {\n recordAction({\n action: 'programmatic',\n component: 'sidebar',\n feature: 'answers',\n target: 'loaded',\n data: {\n items: items.map(item => {\n return { status: item.status, fileType: item.fileType };\n }),\n },\n });\n }\n\n return () => {\n // stop API request on unmount (e.g. during switching to another tab)\n stopQuestion();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Resend the last question (if it was sent before session loaded) after (re-)initializing session\n React.useEffect(() => {\n const lastQuestion = cacheQuestions[cacheQuestions.length - 1];\n if (!shouldPreinitSession && !isSessionInitiated.current && encodedSession && lastQuestion?.isLoading) {\n sendQuestion(lastQuestion, selectedAgent, false);\n isSessionInitiated.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [encodedSession]);\n\n React.useEffect(() => {\n onSelectedAgentCallback?.(selectedAgent);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAgent?.id]);\n\n const renderBoxAISidebarTitle = () => {\n return (\n <div className=\"bcs-BoxAISidebar-title-part\">\n <BoxAISidebarTitle isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled} />\n {isAIStudioAgentSelectorEnabled && (\n <div className=\"bcs-BoxAISidebar-agentSelector\">\n <BoxAiAgentSelectorWithApi\n disabled={hasRequestInProgress}\n fetcher={getAIStudioAgents}\n hostAppName={hostAppName}\n onAgentsListOpen={handleUserIntentToUseAI}\n onSelectAgent={onSelectAgent}\n recordAction={recordAction}\n shouldHideAgentSelectorOnLoad\n variant=\"sidebar\"\n />\n </div>\n )}\n </div>\n );\n };\n\n const renderActions = () => (\n <>\n {renderBoxAISidebarTitle()}\n {isResetChatEnabled && <ClearConversationButton onClick={onClearAction} />}\n <Tooltip content={formatMessage(messages.sidebarBoxAISwitchToModalView)} variant=\"standard\">\n <IconButton\n aria-label={formatMessage(messages.sidebarBoxAISwitchToModalView)}\n className=\"bcs-BoxAISidebar-expand\"\n data-target-id=\"IconButton-expandBoxAISidebar\"\n icon={ArrowsExpand}\n onClick={handleSwitchToModalClick}\n size=\"small\"\n />\n </Tooltip>\n </>\n );\n\n return (\n <>\n <SidebarContent\n actions={renderActions()}\n className={classNames('bcs-BoxAISidebar', { 'with-modal-open': isModalOpen })}\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_BOXAI}\n >\n <div className=\"bcs-BoxAISidebar-content\">\n <BoxAiContentAnswers\n className=\"bcs-BoxAISidebar-contentAnswers\"\n contentName={contentName}\n contentType={formatMessage(messages.sidebarBoxAIContent)}\n hostAppName={hostAppName}\n isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled}\n isFeedbackEnabled={isFeedbackEnabled}\n isFeedbackFormEnabled={isFeedbackFormEnabled}\n isStopResponseEnabled={isStopResponseEnabled}\n items={items}\n questions={questions}\n onFeedbackFormSubmit={onFeedbackFormSubmit}\n onUserIntentToUseAI={handleUserIntentToUseAI}\n shouldFeedbackFormIncludeFeedbackText={shouldFeedbackFormIncludeFeedbackText}\n shouldShowLandingPage={cache.shouldShowLandingPage}\n showLoadingIndicator={isLoading && shouldPreinitSession}\n stopQuestion={stopQuestion}\n submitQuestion={sendQuestion}\n variant=\"sidebar\"\n recordAction={recordAction}\n {...rest}\n />\n </div>\n </SidebarContent>\n <IntelligenceModal\n contentName={contentName}\n contentType={formatMessage(messages.sidebarBoxAIContent)}\n extension={fileExtension}\n getAIStudioAgents={getAIStudioAgents}\n hasRequestInProgress={hasRequestInProgress}\n hostAppName={hostAppName}\n isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled}\n isFeedbackEnabled={isFeedbackEnabled}\n isFeedbackFormEnabled={isFeedbackFormEnabled}\n isResetChatEnabled={isResetChatEnabled}\n isStopResponseEnabled={isStopResponseEnabled}\n items={items}\n itemSize={itemSize}\n onClearAction={onClearAction}\n onFeedbackFormSubmit={onFeedbackFormSubmit}\n onOpenChange={handleModalClose}\n onSelectAgent={onSelectAgent}\n onUserIntentToUseAI={handleUserIntentToUseAI}\n open={isModalOpen}\n questions={questions}\n recordAction={isModalOpen ? recordAction : undefined}\n shouldFeedbackFormIncludeFeedbackText={shouldFeedbackFormIncludeFeedbackText}\n shouldShowLandingPage={cache.shouldShowLandingPage}\n showLoadingIndicator={false}\n stopPropagationOnEsc\n stopQuestion={stopQuestion}\n submitQuestion={sendQuestion}\n variant=\"collapsible\"\n {...rest}\n shouldRenderProviders={false}\n />\n </>\n );\n}\n\nexport { BoxAISidebarContent as BoxAISidebarComponent };\n\nconst BoxAISidebarContentDefaultExport: typeof withAPIContext = flow([\n withLogger(ORIGIN_BOXAI_SIDEBAR),\n withErrorBoundary(ORIGIN_BOXAI_SIDEBAR),\n withAPIContext,\n withApiWrapper, // returns only props for Box AI, keep it at the end\n])(BoxAISidebarContent);\n\nexport default BoxAISidebarContentDefaultExport;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BoxAISidebarContent.js","names":["React","flow","useIntl","classNames","BoxAiAgentSelectorWithApi","useAgents","IconButton","Tooltip","ArrowsExpand","BoxAiContentAnswers","ClearConversationButton","IntelligenceModal","withApiWrapper","SidebarContent","withAPIContext","withErrorBoundary","withLogger","ORIGIN_BOXAI_SIDEBAR","SIDEBAR_VIEW_BOXAI","EVENT_JS_READY","mark","BoxAISidebarContext","BoxAISidebarTitle","messages","MARK_NAME_JS_READY","BoxAISidebarContent","props","createSession","encodedSession","onClearAction","onSelectedAgentCallback","getAIStudioAgents","hasRequestInProgress","hostAppName","isAIStudioAgentSelectorEnabled","isLoading","onSelectAgent","questions","shouldShowLandingPage","sendQuestion","stopQuestion","rest","_objectWithoutProperties","_excluded","formatMessage","isSessionInitiated","useRef","isModalOpen","setIsModalOpen","useState","cache","contentName","elementId","fileExtension","isFeedbackEnabled","isFeedbackFormEnabled","isStopResponseEnabled","items","itemSize","onFeedbackFormSubmit","onUserInteraction","recordAction","setCacheValue","shouldFeedbackFormIncludeFeedbackText","shouldPreinitSession","useContext","agents","requestState","selectedAgent","cacheQuestions","handleUserIntentToUseAI","userHasInteracted","handleModalClose","handleSwitchToModalClick","useEffect","length","isCompleted","prompt","action","component","feature","target","data","map","item","status","fileType","lastQuestion","current","id","renderBoxAISidebarTitle","createElement","className","disabled","fetcher","onAgentsListOpen","shouldHideAgentSelectorOnLoad","variant","renderActions","Fragment","onClick","content","sidebarBoxAISwitchToModalView","icon","size","actions","sidebarView","_extends","contentType","sidebarBoxAIContent","onUserIntentToUseAI","showLoadingIndicator","submitQuestion","extension","onOpenChange","open","undefined","stopPropagationOnEsc","shouldRenderProviders","BoxAISidebarComponent","BoxAISidebarContentDefaultExport"],"sources":["../../../src/elements/content-sidebar/BoxAISidebarContent.tsx"],"sourcesContent":["/**\n * @file Box AI sidebar component\n * @author Box\n */\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport { useIntl } from 'react-intl';\nimport classNames from 'classnames';\nimport { BoxAiAgentSelectorWithApi, useAgents, type AgentType } from '@box/box-ai-agent-selector';\nimport { IconButton, Tooltip } from '@box/blueprint-web';\nimport { ArrowsExpand } from '@box/blueprint-web-assets/icons/Fill';\nimport {\n BoxAiContentAnswers,\n ClearConversationButton,\n IntelligenceModal,\n withApiWrapper,\n type ApiWrapperWithInjectedProps,\n} from '@box/box-ai-content-answers';\nimport SidebarContent from './SidebarContent';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withLogger } from '../common/logger';\nimport { ORIGIN_BOXAI_SIDEBAR, SIDEBAR_VIEW_BOXAI } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { BoxAISidebarContext } from './context/BoxAISidebarContext';\nimport BoxAISidebarTitle from './BoxAISidebarTitle';\n\nimport messages from '../common/messages';\n\nimport './BoxAISidebar.scss';\n\nconst MARK_NAME_JS_READY: string = `${ORIGIN_BOXAI_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nfunction BoxAISidebarContent(\n props: ApiWrapperWithInjectedProps & {\n onSelectedAgentCallback: (selectedAgent: AgentType) => void;\n shouldShowLandingPage: boolean;\n },\n) {\n const {\n createSession,\n encodedSession,\n onClearAction,\n onSelectedAgentCallback,\n getAIStudioAgents,\n hasRequestInProgress,\n hostAppName,\n isAIStudioAgentSelectorEnabled,\n isLoading,\n onSelectAgent,\n questions,\n shouldShowLandingPage,\n sendQuestion,\n stopQuestion,\n ...rest\n } = props;\n const { formatMessage } = useIntl();\n const isSessionInitiated = React.useRef<boolean>(false);\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const {\n cache,\n contentName,\n elementId,\n fileExtension,\n isFeedbackEnabled,\n isFeedbackFormEnabled,\n isStopResponseEnabled,\n items,\n itemSize,\n onFeedbackFormSubmit,\n onUserInteraction,\n recordAction,\n setCacheValue,\n shouldFeedbackFormIncludeFeedbackText,\n shouldPreinitSession,\n } = React.useContext(BoxAISidebarContext);\n const { agents, requestState, selectedAgent } = useAgents();\n const { questions: cacheQuestions } = cache;\n\n if (cache.shouldShowLandingPage !== shouldShowLandingPage) {\n setCacheValue('shouldShowLandingPage', shouldShowLandingPage);\n }\n\n if (cache.encodedSession !== encodedSession) {\n setCacheValue('encodedSession', encodedSession);\n }\n\n if (cache.questions !== questions) {\n setCacheValue('questions', questions);\n }\n\n if (cache.agents.selectedAgent !== selectedAgent) {\n setCacheValue('agents', { agents, requestState, selectedAgent });\n }\n\n const handleUserIntentToUseAI = (userHasInteracted: boolean = false) => {\n // Create session if not already created or loading\n if (!shouldPreinitSession && !encodedSession && !isLoading && createSession) {\n createSession(true, false);\n }\n if (userHasInteracted && onUserInteraction) {\n onUserInteraction();\n }\n };\n\n const handleModalClose = () => {\n setIsModalOpen(false);\n };\n\n const handleSwitchToModalClick = () => {\n handleUserIntentToUseAI();\n setIsModalOpen(true);\n };\n\n React.useEffect(() => {\n if (shouldPreinitSession && !encodedSession && createSession) {\n createSession(true, true);\n }\n\n if (\n encodedSession &&\n cacheQuestions.length > 0 &&\n cacheQuestions[cacheQuestions.length - 1].isCompleted === false\n ) {\n // if we have cache with question that is not completed resend it to trigger an API\n sendQuestion({ prompt: cacheQuestions[cacheQuestions.length - 1].prompt });\n }\n\n if (recordAction) {\n recordAction({\n action: 'programmatic',\n component: 'sidebar',\n feature: 'answers',\n target: 'loaded',\n data: {\n items: items.map(item => {\n return { status: item.status, fileType: item.fileType };\n }),\n },\n });\n }\n\n return () => {\n // stop API request on unmount (e.g. during switching to another tab)\n stopQuestion();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Resend the last question (if it was sent before session loaded) after (re-)initializing session\n React.useEffect(() => {\n const lastQuestion = cacheQuestions[cacheQuestions.length - 1];\n if (!shouldPreinitSession && !isSessionInitiated.current && encodedSession && lastQuestion?.isLoading) {\n sendQuestion(lastQuestion, selectedAgent, false);\n isSessionInitiated.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [encodedSession]);\n\n React.useEffect(() => {\n onSelectedAgentCallback?.(selectedAgent);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAgent?.id]);\n\n const renderBoxAISidebarTitle = () => {\n return (\n <div className=\"bcs-BoxAISidebar-title-part\">\n <BoxAISidebarTitle isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled} />\n {isAIStudioAgentSelectorEnabled && (\n <div className=\"bcs-BoxAISidebar-agentSelector\">\n <BoxAiAgentSelectorWithApi\n disabled={hasRequestInProgress}\n fetcher={getAIStudioAgents}\n hostAppName={hostAppName}\n onAgentsListOpen={handleUserIntentToUseAI}\n onSelectAgent={onSelectAgent}\n recordAction={recordAction}\n shouldHideAgentSelectorOnLoad\n variant=\"sidebar\"\n />\n </div>\n )}\n </div>\n );\n };\n\n const renderActions = () => (\n <>\n {renderBoxAISidebarTitle()}\n <ClearConversationButton onClick={onClearAction} />\n <Tooltip content={formatMessage(messages.sidebarBoxAISwitchToModalView)} variant=\"standard\">\n <IconButton\n aria-label={formatMessage(messages.sidebarBoxAISwitchToModalView)}\n className=\"bcs-BoxAISidebar-expand\"\n data-target-id=\"IconButton-expandBoxAISidebar\"\n icon={ArrowsExpand}\n onClick={handleSwitchToModalClick}\n size=\"small\"\n />\n </Tooltip>\n </>\n );\n\n return (\n <>\n <SidebarContent\n actions={renderActions()}\n className={classNames('bcs-BoxAISidebar', { 'with-modal-open': isModalOpen })}\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_BOXAI}\n >\n <div className=\"bcs-BoxAISidebar-content\">\n <BoxAiContentAnswers\n className=\"bcs-BoxAISidebar-contentAnswers\"\n contentName={contentName}\n contentType={formatMessage(messages.sidebarBoxAIContent)}\n hostAppName={hostAppName}\n isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled}\n isFeedbackEnabled={isFeedbackEnabled}\n isFeedbackFormEnabled={isFeedbackFormEnabled}\n isStopResponseEnabled={isStopResponseEnabled}\n items={items}\n questions={questions}\n onFeedbackFormSubmit={onFeedbackFormSubmit}\n onUserIntentToUseAI={handleUserIntentToUseAI}\n shouldFeedbackFormIncludeFeedbackText={shouldFeedbackFormIncludeFeedbackText}\n shouldShowLandingPage={cache.shouldShowLandingPage}\n showLoadingIndicator={isLoading && shouldPreinitSession}\n stopQuestion={stopQuestion}\n submitQuestion={sendQuestion}\n variant=\"sidebar\"\n recordAction={recordAction}\n {...rest}\n />\n </div>\n </SidebarContent>\n <IntelligenceModal\n contentName={contentName}\n contentType={formatMessage(messages.sidebarBoxAIContent)}\n extension={fileExtension}\n getAIStudioAgents={getAIStudioAgents}\n hasRequestInProgress={hasRequestInProgress}\n hostAppName={hostAppName}\n isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled}\n isFeedbackEnabled={isFeedbackEnabled}\n isFeedbackFormEnabled={isFeedbackFormEnabled}\n isStopResponseEnabled={isStopResponseEnabled}\n items={items}\n itemSize={itemSize}\n onClearAction={onClearAction}\n onFeedbackFormSubmit={onFeedbackFormSubmit}\n onOpenChange={handleModalClose}\n onSelectAgent={onSelectAgent}\n onUserIntentToUseAI={handleUserIntentToUseAI}\n open={isModalOpen}\n questions={questions}\n recordAction={isModalOpen ? recordAction : undefined}\n shouldFeedbackFormIncludeFeedbackText={shouldFeedbackFormIncludeFeedbackText}\n shouldShowLandingPage={cache.shouldShowLandingPage}\n showLoadingIndicator={false}\n stopPropagationOnEsc\n stopQuestion={stopQuestion}\n submitQuestion={sendQuestion}\n variant=\"collapsible\"\n {...rest}\n shouldRenderProviders={false}\n />\n </>\n );\n}\n\nexport { BoxAISidebarContent as BoxAISidebarComponent };\n\nconst BoxAISidebarContentDefaultExport: typeof withAPIContext = flow([\n withLogger(ORIGIN_BOXAI_SIDEBAR),\n withErrorBoundary(ORIGIN_BOXAI_SIDEBAR),\n withAPIContext,\n withApiWrapper, // returns only props for Box AI, keep it at the end\n])(BoxAISidebarContent);\n\nexport default BoxAISidebarContentDefaultExport;\n"],"mappings":"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","ignoreList":[]}
@@ -43,7 +43,6 @@ export default {
43
43
  isFeedbackEnabled: true,
44
44
  isIntelligentQueryMode: false,
45
45
  isMarkdownEnabled: true,
46
- isResetChatEnabled: true,
47
46
  isStopResponseEnabled: true,
48
47
  isStreamingEnabled: false,
49
48
  items: [{
@@ -1 +1 @@
1
- {"version":3,"file":"BoxAISidebar.stories.js","names":["ContentSidebar","mockFeatures","basic","withFileTypeNotSupported","args","features","boxai","sidebar","disabledTooltip","enabled","showOnlyNavButton","title","component","fileId","global","FILE_ID","token","TOKEN","boxAISidebarProps","createSessionRequest","encodedSession","fetchTimeout","initial","getAgentConfig","getAIStudioAgents","getAnswer","getAnswerStreaming","getSuggestedQuestions","hostAppName","isAgentSelectorEnabled","isAIStudioAgentSelectorEnabled","isCitationsEnabled","isDebugModeEnabled","isFeedbackEnabled","isIntelligentQueryMode","isMarkdownEnabled","isResetChatEnabled","isStopResponseEnabled","isStreamingEnabled","items","id","name","type","fileType","status","recordAction"],"sources":["../../../../src/elements/content-sidebar/stories/BoxAISidebar.stories.tsx"],"sourcesContent":["import ContentSidebar from '../ContentSidebar';\n\nconst mockFeatures = {\n 'boxai.sidebar.enabled': true,\n};\n\nexport const basic = {};\n\nexport const withFileTypeNotSupported = {\n args: {\n features: {\n boxai: {\n sidebar: {\n disabledTooltip: 'Box AI is not currently supported for this file type',\n enabled: true,\n showOnlyNavButton: true,\n },\n },\n },\n },\n};\n\nexport default {\n title: 'Elements/ContentSidebar/BoxAISidebar',\n component: ContentSidebar,\n args: {\n features: mockFeatures,\n fileId: global.FILE_ID,\n token: global.TOKEN,\n boxAISidebarProps: {\n createSessionRequest: () => ({ encodedSession: '1234' }),\n fetchTimeout: { initial: 20000 },\n getAgentConfig: () => ({}),\n getAIStudioAgents: () => ({}),\n getAnswer: () => ({}),\n getAnswerStreaming: () => ({}),\n getSuggestedQuestions: null,\n hostAppName: 'storybook-test',\n isAgentSelectorEnabled: false,\n isAIStudioAgentSelectorEnabled: true,\n isCitationsEnabled: true,\n isDebugModeEnabled: true,\n isFeedbackEnabled: true,\n isIntelligentQueryMode: false,\n isMarkdownEnabled: true,\n isResetChatEnabled: true,\n isStopResponseEnabled: true,\n isStreamingEnabled: false,\n items: [{ id: '123', name: 'Document (PDF).pdf', type: 'file', fileType: 'pdf', status: 'supported' }],\n recordAction: () => ({}),\n },\n },\n};\n"],"mappings":"AAAA,OAAOA,cAAc,MAAM,mBAAmB;AAE9C,MAAMC,YAAY,GAAG;EACjB,uBAAuB,EAAE;AAC7B,CAAC;AAED,OAAO,MAAMC,KAAK,GAAG,CAAC,CAAC;AAEvB,OAAO,MAAMC,wBAAwB,GAAG;EACpCC,IAAI,EAAE;IACFC,QAAQ,EAAE;MACNC,KAAK,EAAE;QACHC,OAAO,EAAE;UACLC,eAAe,EAAE,sDAAsD;UACvEC,OAAO,EAAE,IAAI;UACbC,iBAAiB,EAAE;QACvB;MACJ;IACJ;EACJ;AACJ,CAAC;AAED,eAAe;EACXC,KAAK,EAAE,sCAAsC;EAC7CC,SAAS,EAAEZ,cAAc;EACzBI,IAAI,EAAE;IACFC,QAAQ,EAAEJ,YAAY;IACtBY,MAAM,EAAEC,MAAM,CAACC,OAAO;IACtBC,KAAK,EAAEF,MAAM,CAACG,KAAK;IACnBC,iBAAiB,EAAE;MACfC,oBAAoB,EAAEA,CAAA,MAAO;QAAEC,cAAc,EAAE;MAAO,CAAC,CAAC;MACxDC,YAAY,EAAE;QAAEC,OAAO,EAAE;MAAM,CAAC;MAChCC,cAAc,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC1BC,iBAAiB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC7BC,SAAS,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MACrBC,kBAAkB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC9BC,qBAAqB,EAAE,IAAI;MAC3BC,WAAW,EAAE,gBAAgB;MAC7BC,sBAAsB,EAAE,KAAK;MAC7BC,8BAA8B,EAAE,IAAI;MACpCC,kBAAkB,EAAE,IAAI;MACxBC,kBAAkB,EAAE,IAAI;MACxBC,iBAAiB,EAAE,IAAI;MACvBC,sBAAsB,EAAE,KAAK;MAC7BC,iBAAiB,EAAE,IAAI;MACvBC,kBAAkB,EAAE,IAAI;MACxBC,qBAAqB,EAAE,IAAI;MAC3BC,kBAAkB,EAAE,KAAK;MACzBC,KAAK,EAAE,CAAC;QAAEC,EAAE,EAAE,KAAK;QAAEC,IAAI,EAAE,oBAAoB;QAAEC,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE,KAAK;QAAEC,MAAM,EAAE;MAAY,CAAC,CAAC;MACtGC,YAAY,EAAEA,CAAA,MAAO,CAAC,CAAC;IAC3B;EACJ;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"BoxAISidebar.stories.js","names":["ContentSidebar","mockFeatures","basic","withFileTypeNotSupported","args","features","boxai","sidebar","disabledTooltip","enabled","showOnlyNavButton","title","component","fileId","global","FILE_ID","token","TOKEN","boxAISidebarProps","createSessionRequest","encodedSession","fetchTimeout","initial","getAgentConfig","getAIStudioAgents","getAnswer","getAnswerStreaming","getSuggestedQuestions","hostAppName","isAgentSelectorEnabled","isAIStudioAgentSelectorEnabled","isCitationsEnabled","isDebugModeEnabled","isFeedbackEnabled","isIntelligentQueryMode","isMarkdownEnabled","isStopResponseEnabled","isStreamingEnabled","items","id","name","type","fileType","status","recordAction"],"sources":["../../../../src/elements/content-sidebar/stories/BoxAISidebar.stories.tsx"],"sourcesContent":["import ContentSidebar from '../ContentSidebar';\n\nconst mockFeatures = {\n 'boxai.sidebar.enabled': true,\n};\n\nexport const basic = {};\n\nexport const withFileTypeNotSupported = {\n args: {\n features: {\n boxai: {\n sidebar: {\n disabledTooltip: 'Box AI is not currently supported for this file type',\n enabled: true,\n showOnlyNavButton: true,\n },\n },\n },\n },\n};\n\nexport default {\n title: 'Elements/ContentSidebar/BoxAISidebar',\n component: ContentSidebar,\n args: {\n features: mockFeatures,\n fileId: global.FILE_ID,\n token: global.TOKEN,\n boxAISidebarProps: {\n createSessionRequest: () => ({ encodedSession: '1234' }),\n fetchTimeout: { initial: 20000 },\n getAgentConfig: () => ({}),\n getAIStudioAgents: () => ({}),\n getAnswer: () => ({}),\n getAnswerStreaming: () => ({}),\n getSuggestedQuestions: null,\n hostAppName: 'storybook-test',\n isAgentSelectorEnabled: false,\n isAIStudioAgentSelectorEnabled: true,\n isCitationsEnabled: true,\n isDebugModeEnabled: true,\n isFeedbackEnabled: true,\n isIntelligentQueryMode: false,\n isMarkdownEnabled: true,\n isStopResponseEnabled: true,\n isStreamingEnabled: false,\n items: [{ id: '123', name: 'Document (PDF).pdf', type: 'file', fileType: 'pdf', status: 'supported' }],\n recordAction: () => ({}),\n },\n },\n};\n"],"mappings":"AAAA,OAAOA,cAAc,MAAM,mBAAmB;AAE9C,MAAMC,YAAY,GAAG;EACjB,uBAAuB,EAAE;AAC7B,CAAC;AAED,OAAO,MAAMC,KAAK,GAAG,CAAC,CAAC;AAEvB,OAAO,MAAMC,wBAAwB,GAAG;EACpCC,IAAI,EAAE;IACFC,QAAQ,EAAE;MACNC,KAAK,EAAE;QACHC,OAAO,EAAE;UACLC,eAAe,EAAE,sDAAsD;UACvEC,OAAO,EAAE,IAAI;UACbC,iBAAiB,EAAE;QACvB;MACJ;IACJ;EACJ;AACJ,CAAC;AAED,eAAe;EACXC,KAAK,EAAE,sCAAsC;EAC7CC,SAAS,EAAEZ,cAAc;EACzBI,IAAI,EAAE;IACFC,QAAQ,EAAEJ,YAAY;IACtBY,MAAM,EAAEC,MAAM,CAACC,OAAO;IACtBC,KAAK,EAAEF,MAAM,CAACG,KAAK;IACnBC,iBAAiB,EAAE;MACfC,oBAAoB,EAAEA,CAAA,MAAO;QAAEC,cAAc,EAAE;MAAO,CAAC,CAAC;MACxDC,YAAY,EAAE;QAAEC,OAAO,EAAE;MAAM,CAAC;MAChCC,cAAc,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC1BC,iBAAiB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC7BC,SAAS,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MACrBC,kBAAkB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC9BC,qBAAqB,EAAE,IAAI;MAC3BC,WAAW,EAAE,gBAAgB;MAC7BC,sBAAsB,EAAE,KAAK;MAC7BC,8BAA8B,EAAE,IAAI;MACpCC,kBAAkB,EAAE,IAAI;MACxBC,kBAAkB,EAAE,IAAI;MACxBC,iBAAiB,EAAE,IAAI;MACvBC,sBAAsB,EAAE,KAAK;MAC7BC,iBAAiB,EAAE,IAAI;MACvBC,qBAAqB,EAAE,IAAI;MAC3BC,kBAAkB,EAAE,KAAK;MACzBC,KAAK,EAAE,CAAC;QAAEC,EAAE,EAAE,KAAK;QAAEC,IAAI,EAAE,oBAAoB;QAAEC,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE,KAAK;QAAEC,MAAM,EAAE;MAAY,CAAC,CAAC;MACtGC,YAAY,EAAEA,CAAA,MAAO,CAAC,CAAC;IAC3B;EACJ;AACJ,CAAC","ignoreList":[]}
@@ -50,7 +50,6 @@ const meta = {
50
50
  isDebugModeEnabled: true,
51
51
  isIntelligentQueryMode: false,
52
52
  isMarkdownEnabled: true,
53
- isResetChatEnabled: true,
54
53
  isStopResponseEnabled: true,
55
54
  isStreamingEnabled: false,
56
55
  items: [{
@@ -1 +1 @@
1
- {"version":3,"file":"BoxAISidebar-visual.stories.js","names":["expect","within","http","HttpResponse","ContentSidebar","mockFileRequest","mockUserRequest","mockFeatures","basic","play","canvasElement","canvas","clearButton","findByRole","name","toBeInTheDocument","findByText","findByPlaceholderText","meta","title","component","args","features","fileId","global","FILE_ID","token","TOKEN","boxAISidebarProps","createSessionRequest","encodedSession","fetchTimeout","initial","getAgentConfig","getAIStudioAgents","getAnswer","getAnswerStreaming","getSuggestedQuestions","hostAppName","isAgentSelectorEnabled","isAIStudioAgentSelectorEnabled","isCitationsEnabled","isFeedbackEnabled","isDebugModeEnabled","isIntelligentQueryMode","isMarkdownEnabled","isResetChatEnabled","isStopResponseEnabled","isStreamingEnabled","items","id","type","fileType","status","localizedQuestions","label","prompt","recordAction","parameters","msw","handlers","get","url","json","response"],"sources":["../../../../../src/elements/content-sidebar/stories/tests/BoxAISidebar-visual.stories.tsx"],"sourcesContent":["import { type StoryObj, type Meta } from '@storybook/react';\nimport { expect, within } from 'storybook/test';\nimport { http, HttpResponse } from 'msw';\nimport type { HttpHandler } from 'msw';\nimport ContentSidebar from '../../ContentSidebar';\nimport BoxAISidebar from '../../BoxAISidebar';\nimport { mockFileRequest, mockUserRequest } from '../../../common/__mocks__/mockRequests';\n\nconst mockFeatures = {\n 'boxai.sidebar.enabled': true,\n};\n\nexport const basic: StoryObj<typeof BoxAISidebar> = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const clearButton = await canvas.findByRole('button', { name: 'Clear conversation' });\n expect(clearButton).toBeInTheDocument();\n\n expect(await canvas.findByText(/Welcome to Box AI/i)).toBeInTheDocument();\n expect(await canvas.findByText('Chat cleared when you close content')).toBeInTheDocument();\n expect(await canvas.findByPlaceholderText('Ask Box AI')).toBeInTheDocument();\n expect(await canvas.findByText('Summarize this document')).toBeInTheDocument();\n expect(await canvas.findByText('What are the key takeaways?')).toBeInTheDocument();\n expect(await canvas.findByText('How can this document be improved?')).toBeInTheDocument();\n expect(await canvas.findByText('Are there any next steps defined?')).toBeInTheDocument();\n },\n};\n\nconst meta: Meta<typeof ContentSidebar> & { parameters: { msw: { handlers: HttpHandler[] } } } = {\n title: 'Elements/ContentSidebar/BoxAISidebar/tests/visual-regression-tests',\n component: ContentSidebar,\n args: {\n features: mockFeatures,\n fileId: global.FILE_ID,\n token: global.TOKEN,\n boxAISidebarProps: {\n createSessionRequest: () => ({ encodedSession: '1234' }),\n fetchTimeout: { initial: 20000 },\n getAgentConfig: () => ({}),\n getAIStudioAgents: () => ({}),\n getAnswer: () => ({}),\n getAnswerStreaming: () => ({}),\n getSuggestedQuestions: null,\n hostAppName: 'storybook-test',\n isAgentSelectorEnabled: false,\n isAIStudioAgentSelectorEnabled: true,\n isCitationsEnabled: true,\n isFeedbackEnabled: true,\n isDebugModeEnabled: true,\n isIntelligentQueryMode: false,\n isMarkdownEnabled: true,\n isResetChatEnabled: true,\n isStopResponseEnabled: true,\n isStreamingEnabled: false,\n items: [{ id: '123', name: 'Document (PDF).pdf', type: 'file', fileType: 'pdf', status: 'supported' }],\n localizedQuestions: [\n {\n id: 'suggested-question-1',\n label: 'Summarize this document',\n prompt: 'Summarize this document',\n },\n {\n id: 'suggested-question-2',\n label: 'What are the key takeaways?',\n prompt: 'What are the key takeaways?',\n },\n {\n id: 'suggested-question-3',\n label: 'How can this document be improved?',\n prompt: 'How can this document be improved?',\n },\n {\n id: 'suggested-question-4',\n label: 'Are there any next steps defined?',\n prompt: 'Are there any next steps defined?',\n },\n ],\n recordAction: () => ({}),\n },\n },\n parameters: {\n msw: {\n handlers: [\n http.get(mockUserRequest.url, () => {\n return HttpResponse.json(mockUserRequest.response);\n }),\n http.get(mockFileRequest.url, () => {\n return HttpResponse.json(mockFileRequest.response);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"AACA,SAASA,MAAM,EAAEC,MAAM,QAAQ,gBAAgB;AAC/C,SAASC,IAAI,EAAEC,YAAY,QAAQ,KAAK;AAExC,OAAOC,cAAc,MAAM,sBAAsB;AAEjD,SAASC,eAAe,EAAEC,eAAe,QAAQ,wCAAwC;AAEzF,MAAMC,YAAY,GAAG;EACjB,uBAAuB,EAAE;AAC7B,CAAC;AAED,OAAO,MAAMC,KAAoC,GAAG;EAChDC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGV,MAAM,CAACS,aAAa,CAAC;IACpC,MAAME,WAAW,GAAG,MAAMD,MAAM,CAACE,UAAU,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAqB,CAAC,CAAC;IACrFd,MAAM,CAACY,WAAW,CAAC,CAACG,iBAAiB,CAAC,CAAC;IAEvCf,MAAM,CAAC,MAAMW,MAAM,CAACK,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IACzEf,MAAM,CAAC,MAAMW,MAAM,CAACK,UAAU,CAAC,qCAAqC,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IAC1Ff,MAAM,CAAC,MAAMW,MAAM,CAACM,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAC5Ef,MAAM,CAAC,MAAMW,MAAM,CAACK,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IAC9Ef,MAAM,CAAC,MAAMW,MAAM,CAACK,UAAU,CAAC,6BAA6B,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IAClFf,MAAM,CAAC,MAAMW,MAAM,CAACK,UAAU,CAAC,oCAAoC,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;IACzFf,MAAM,CAAC,MAAMW,MAAM,CAACK,UAAU,CAAC,mCAAmC,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EAC5F;AACJ,CAAC;AAED,MAAMG,IAAwF,GAAG;EAC7FC,KAAK,EAAE,oEAAoE;EAC3EC,SAAS,EAAEhB,cAAc;EACzBiB,IAAI,EAAE;IACFC,QAAQ,EAAEf,YAAY;IACtBgB,MAAM,EAAEC,MAAM,CAACC,OAAO;IACtBC,KAAK,EAAEF,MAAM,CAACG,KAAK;IACnBC,iBAAiB,EAAE;MACfC,oBAAoB,EAAEA,CAAA,MAAO;QAAEC,cAAc,EAAE;MAAO,CAAC,CAAC;MACxDC,YAAY,EAAE;QAAEC,OAAO,EAAE;MAAM,CAAC;MAChCC,cAAc,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC1BC,iBAAiB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC7BC,SAAS,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MACrBC,kBAAkB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC9BC,qBAAqB,EAAE,IAAI;MAC3BC,WAAW,EAAE,gBAAgB;MAC7BC,sBAAsB,EAAE,KAAK;MAC7BC,8BAA8B,EAAE,IAAI;MACpCC,kBAAkB,EAAE,IAAI;MACxBC,iBAAiB,EAAE,IAAI;MACvBC,kBAAkB,EAAE,IAAI;MACxBC,sBAAsB,EAAE,KAAK;MAC7BC,iBAAiB,EAAE,IAAI;MACvBC,kBAAkB,EAAE,IAAI;MACxBC,qBAAqB,EAAE,IAAI;MAC3BC,kBAAkB,EAAE,KAAK;MACzBC,KAAK,EAAE,CAAC;QAAEC,EAAE,EAAE,KAAK;QAAEpC,IAAI,EAAE,oBAAoB;QAAEqC,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE,KAAK;QAAEC,MAAM,EAAE;MAAY,CAAC,CAAC;MACtGC,kBAAkB,EAAE,CAChB;QACIJ,EAAE,EAAE,sBAAsB;QAC1BK,KAAK,EAAE,yBAAyB;QAChCC,MAAM,EAAE;MACZ,CAAC,EACD;QACIN,EAAE,EAAE,sBAAsB;QAC1BK,KAAK,EAAE,6BAA6B;QACpCC,MAAM,EAAE;MACZ,CAAC,EACD;QACIN,EAAE,EAAE,sBAAsB;QAC1BK,KAAK,EAAE,oCAAoC;QAC3CC,MAAM,EAAE;MACZ,CAAC,EACD;QACIN,EAAE,EAAE,sBAAsB;QAC1BK,KAAK,EAAE,mCAAmC;QAC1CC,MAAM,EAAE;MACZ,CAAC,CACJ;MACDC,YAAY,EAAEA,CAAA,MAAO,CAAC,CAAC;IAC3B;EACJ,CAAC;EACDC,UAAU,EAAE;IACRC,GAAG,EAAE;MACDC,QAAQ,EAAE,CACN1D,IAAI,CAAC2D,GAAG,CAACvD,eAAe,CAACwD,GAAG,EAAE,MAAM;QAChC,OAAO3D,YAAY,CAAC4D,IAAI,CAACzD,eAAe,CAAC0D,QAAQ,CAAC;MACtD,CAAC,CAAC,EACF9D,IAAI,CAAC2D,GAAG,CAACxD,eAAe,CAACyD,GAAG,EAAE,MAAM;QAChC,OAAO3D,YAAY,CAAC4D,IAAI,CAAC1D,eAAe,CAAC2D,QAAQ,CAAC;MACtD,CAAC,CAAC;IAEV;EACJ;AACJ,CAAC;AAED,eAAe9C,IAAI","ignoreList":[]}
1
+ {"version":3,"file":"BoxAISidebar-visual.stories.js","names":["expect","within","http","HttpResponse","ContentSidebar","mockFileRequest","mockUserRequest","mockFeatures","basic","play","canvasElement","canvas","clearButton","findByRole","name","toBeInTheDocument","findByText","findByPlaceholderText","meta","title","component","args","features","fileId","global","FILE_ID","token","TOKEN","boxAISidebarProps","createSessionRequest","encodedSession","fetchTimeout","initial","getAgentConfig","getAIStudioAgents","getAnswer","getAnswerStreaming","getSuggestedQuestions","hostAppName","isAgentSelectorEnabled","isAIStudioAgentSelectorEnabled","isCitationsEnabled","isFeedbackEnabled","isDebugModeEnabled","isIntelligentQueryMode","isMarkdownEnabled","isStopResponseEnabled","isStreamingEnabled","items","id","type","fileType","status","localizedQuestions","label","prompt","recordAction","parameters","msw","handlers","get","url","json","response"],"sources":["../../../../../src/elements/content-sidebar/stories/tests/BoxAISidebar-visual.stories.tsx"],"sourcesContent":["import { type StoryObj, type Meta } from '@storybook/react';\nimport { expect, within } from 'storybook/test';\nimport { http, HttpResponse } from 'msw';\nimport type { HttpHandler } from 'msw';\nimport ContentSidebar from '../../ContentSidebar';\nimport BoxAISidebar from '../../BoxAISidebar';\nimport { mockFileRequest, mockUserRequest } from '../../../common/__mocks__/mockRequests';\n\nconst mockFeatures = {\n 'boxai.sidebar.enabled': true,\n};\n\nexport const basic: StoryObj<typeof BoxAISidebar> = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n const clearButton = await canvas.findByRole('button', { name: 'Clear conversation' });\n expect(clearButton).toBeInTheDocument();\n\n expect(await canvas.findByText(/Welcome to Box AI/i)).toBeInTheDocument();\n expect(await canvas.findByText('Chat cleared when you close content')).toBeInTheDocument();\n expect(await canvas.findByPlaceholderText('Ask Box AI')).toBeInTheDocument();\n expect(await canvas.findByText('Summarize this document')).toBeInTheDocument();\n expect(await canvas.findByText('What are the key takeaways?')).toBeInTheDocument();\n expect(await canvas.findByText('How can this document be improved?')).toBeInTheDocument();\n expect(await canvas.findByText('Are there any next steps defined?')).toBeInTheDocument();\n },\n};\n\nconst meta: Meta<typeof ContentSidebar> & { parameters: { msw: { handlers: HttpHandler[] } } } = {\n title: 'Elements/ContentSidebar/BoxAISidebar/tests/visual-regression-tests',\n component: ContentSidebar,\n args: {\n features: mockFeatures,\n fileId: global.FILE_ID,\n token: global.TOKEN,\n boxAISidebarProps: {\n createSessionRequest: () => ({ encodedSession: '1234' }),\n fetchTimeout: { initial: 20000 },\n getAgentConfig: () => ({}),\n getAIStudioAgents: () => ({}),\n getAnswer: () => ({}),\n getAnswerStreaming: () => ({}),\n getSuggestedQuestions: null,\n hostAppName: 'storybook-test',\n isAgentSelectorEnabled: false,\n isAIStudioAgentSelectorEnabled: true,\n isCitationsEnabled: true,\n isFeedbackEnabled: true,\n isDebugModeEnabled: true,\n isIntelligentQueryMode: false,\n isMarkdownEnabled: true,\n isStopResponseEnabled: true,\n isStreamingEnabled: false,\n items: [{ id: '123', name: 'Document (PDF).pdf', type: 'file', fileType: 'pdf', status: 'supported' }],\n localizedQuestions: [\n {\n id: 'suggested-question-1',\n label: 'Summarize this document',\n prompt: 'Summarize this document',\n },\n {\n id: 'suggested-question-2',\n label: 'What are the key takeaways?',\n prompt: 'What are the key takeaways?',\n },\n {\n id: 'suggested-question-3',\n label: 'How can this document be improved?',\n prompt: 'How can this document be improved?',\n },\n {\n id: 'suggested-question-4',\n label: 'Are there any next steps defined?',\n prompt: 'Are there any next steps defined?',\n },\n ],\n recordAction: () => ({}),\n },\n },\n parameters: {\n msw: {\n handlers: [\n http.get(mockUserRequest.url, () => {\n return HttpResponse.json(mockUserRequest.response);\n }),\n http.get(mockFileRequest.url, () => {\n return HttpResponse.json(mockFileRequest.response);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,6 @@ import { BoxItem } from '../../../common/types/core';
4
4
  export interface ExternalProps {
5
5
  isCitationsEnabled?: boolean;
6
6
  isMarkdownEnabled?: boolean;
7
- isResetChatEnabled?: boolean;
8
7
  onAsk?: () => void;
9
8
  onClearConversation?: () => void;
10
9
  onRequestClose?: () => void;
@@ -3,6 +3,7 @@ import ContentExplorer from '../../ContentExplorer';
3
3
  type Story = StoryObj<typeof ContentExplorer>;
4
4
  export declare const metadataView: Story;
5
5
  export declare const metadataViewV2: Story;
6
+ export declare const metadataViewV2SortsFromHeader: Story;
6
7
  export declare const metadataViewV2WithCustomActions: Story;
7
8
  export declare const metadataViewV2WithInitialFilterValues: Story;
8
9
  export declare const sidePanelOpenWithSingleItemSelected: Story;
@@ -28,7 +28,6 @@ export interface BoxAISidebarProps {
28
28
  isFeedbackFormEnabled: boolean;
29
29
  isIntelligentQueryMode: boolean;
30
30
  isMarkdownEnabled: boolean;
31
- isResetChatEnabled: boolean;
32
31
  isStopResponseEnabled?: boolean;
33
32
  isStreamingEnabled: boolean;
34
33
  items: Array<ItemType>;
@@ -41,7 +41,6 @@ declare const _default: {
41
41
  isFeedbackEnabled: boolean;
42
42
  isIntelligentQueryMode: boolean;
43
43
  isMarkdownEnabled: boolean;
44
- isResetChatEnabled: boolean;
45
44
  isStopResponseEnabled: boolean;
46
45
  isStreamingEnabled: boolean;
47
46
  items: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-ui-elements",
3
- "version": "23.5.0-beta.4",
3
+ "version": "24.0.0-beta.1",
4
4
  "description": "Box UI Elements",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -131,7 +131,7 @@
131
131
  "@box/blueprint-web": "12.43.0",
132
132
  "@box/blueprint-web-assets": "4.61.5",
133
133
  "@box/box-ai-agent-selector": "^0.53.0",
134
- "@box/box-ai-content-answers": "^0.124.1",
134
+ "@box/box-ai-content-answers": "^0.139.0",
135
135
  "@box/box-item-type-selector": "^0.63.12",
136
136
  "@box/cldr-data": "^34.2.0",
137
137
  "@box/combobox-with-api": "^0.34.9",
package/src/constants.js CHANGED
@@ -168,6 +168,19 @@ export const FIELD_CLASSIFICATION: 'classification' = 'classification';
168
168
  export const FIELD_ENTERPRISE: 'enterprise' = 'enterprise';
169
169
  export const FIELD_HOSTNAME: 'hostname' = 'hostname';
170
170
 
171
+ /* ----------------------- Item-Prefixed Fields for MD Query API --------------------------- */
172
+ const ITEM_PREFIX = 'item.';
173
+ export const FIELD_ITEM_TYPE = `${ITEM_PREFIX}${FIELD_TYPE}`;
174
+ export const FIELD_ITEM_NAME = `${ITEM_PREFIX}${FIELD_NAME}`;
175
+ export const FIELD_ITEM_DESCRIPTION = `${ITEM_PREFIX}${FIELD_DESCRIPTION}`;
176
+ export const FIELD_ITEM_EXTENSION = `${ITEM_PREFIX}${FIELD_EXTENSION}`;
177
+ export const FIELD_ITEM_OWNED_BY = `${ITEM_PREFIX}${FIELD_OWNED_BY}`;
178
+ export const FIELD_ITEM_CREATED_AT = `${ITEM_PREFIX}${FIELD_CREATED_AT}`;
179
+ export const FIELD_ITEM_MODIFIED_AT = `${ITEM_PREFIX}${FIELD_MODIFIED_AT}`;
180
+ export const FIELD_ITEM_CONTENT_CREATED_AT = `${ITEM_PREFIX}${FIELD_CONTENT_CREATED_AT}`;
181
+ export const FIELD_ITEM_CONTENT_MODIFIED_AT = `${ITEM_PREFIX}${FIELD_CONTENT_MODIFIED_AT}`;
182
+ export const FIELD_ITEM_QUICK_SEARCH_CONTENT = `${ITEM_PREFIX}quick_search_content`;
183
+
171
184
  /* ----------------------- Permissions --------------------------- */
172
185
  export const PERMISSION_CAN_COMMENT = 'can_comment';
173
186
  export const PERMISSION_CAN_CREATE_ANNOTATIONS = 'can_create_annotations';
@@ -27,7 +27,6 @@ import messages from './messages';
27
27
  export interface ExternalProps {
28
28
  isCitationsEnabled?: boolean;
29
29
  isMarkdownEnabled?: boolean;
30
- isResetChatEnabled?: boolean;
31
30
  onAsk?: () => void;
32
31
  onClearConversation?: () => void;
33
32
  onRequestClose?: () => void;
@@ -50,7 +49,6 @@ const ContentAnswersModal = ({
50
49
  suggestedQuestions,
51
50
  isCitationsEnabled = true,
52
51
  isMarkdownEnabled = true,
53
- isResetChatEnabled = true,
54
52
  }: ContentAnswersModalProps) => {
55
53
  const { formatMessage } = useIntl();
56
54
  const [isLoading, setIsLoading] = useState<boolean>(false);
@@ -176,7 +174,6 @@ const ContentAnswersModal = ({
176
174
  hasRequestInProgress={isLoading}
177
175
  isCitationsEnabled={isCitationsEnabled}
178
176
  isMarkdownEnabled={isMarkdownEnabled}
179
- isResetChatEnabled={isResetChatEnabled}
180
177
  onClearAction={handleClearConversation}
181
178
  onOpenChange={handleOnRequestClose}
182
179
  open={isOpen}
@@ -16,7 +16,12 @@ import {
16
16
  import APIContext from '../../api-context';
17
17
 
18
18
  describe('elements/common/content-answers/ContentAnswersModal', () => {
19
- const mockQuestion = { isCompleted: false, isLoading: true, prompt: 'summarize another question' };
19
+ const mockQuestion = {
20
+ isCompleted: false,
21
+ isLoading: true,
22
+ prompt: 'summarize another question',
23
+ promptType: 'user_input',
24
+ };
20
25
  const renderComponent = (api = mockApi, props?: {}) => {
21
26
  render(
22
27
  <Notification.Provider>
@@ -137,7 +142,7 @@ describe('elements/common/content-answers/ContentAnswersModal', () => {
137
142
  await userEvent.click(submitButton);
138
143
 
139
144
  expect(mockApi.getIntelligenceAPI().ask).lastCalledWith(
140
- { isCompleted: false, isLoading: true, prompt: 'Another question?' },
145
+ { isCompleted: false, isLoading: true, prompt: 'Another question?', promptType: 'user_input' },
141
146
  [{ id: mockFile.id, type: 'file' }],
142
147
  [{ answer: 'summarize answer', created_at: '', prompt: 'summarize another question' }],
143
148
  {
@@ -49,6 +49,7 @@ import {
49
49
  DEFAULT_HOSTNAME_STATIC,
50
50
  DEFAULT_SEARCH_DEBOUNCE,
51
51
  SORT_ASC,
52
+ FIELD_ITEM_NAME,
52
53
  FIELD_NAME,
53
54
  FIELD_PERMISSIONS_CAN_SHARE,
54
55
  FIELD_SHARED_LINK,
@@ -454,12 +455,6 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
454
455
  metadataQueryClone.limit = DEFAULT_PAGE_SIZE;
455
456
  }
456
457
 
457
- metadataQueryClone.order_by = [
458
- {
459
- field_key: sortBy,
460
- direction: sortDirection,
461
- },
462
- ];
463
458
  // Reset search state, the view and show busy indicator
464
459
  this.setState({
465
460
  searchQuery: '',
@@ -468,8 +463,22 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
468
463
  });
469
464
 
470
465
  if (isFeatureEnabled(features, 'contentExplorer.metadataViewV2')) {
466
+ metadataQueryClone.order_by = [
467
+ {
468
+ // Default to the prefixed name field for metadata view v2 only, while not touching the default sortBy for other views.
469
+ field_key: sortBy === FIELD_NAME ? FIELD_ITEM_NAME : sortBy,
470
+ direction: sortDirection,
471
+ },
472
+ ];
473
+
471
474
  this.metadataQueryAPIHelper = new MetadataQueryAPIHelperV2(this.api);
472
475
  } else {
476
+ metadataQueryClone.order_by = [
477
+ {
478
+ field_key: sortBy,
479
+ direction: sortDirection,
480
+ },
481
+ ];
473
482
  this.metadataQueryAPIHelper = new MetadataQueryAPIHelper(this.api);
474
483
  }
475
484
 
@@ -21,7 +21,7 @@ const metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;
21
21
  const metadataQuery = {
22
22
  from: metadataScopeAndKey,
23
23
  ancestor_folder_id: '0',
24
- sort_by: [
24
+ order_by: [
25
25
  {
26
26
  field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`, // Default to sorting by the first field in the schema
27
27
  direction: 'asc',
@@ -49,7 +49,7 @@ const columns = [
49
49
  textValue: 'Name',
50
50
  id: 'name',
51
51
  type: 'string',
52
- allowSorting: true,
52
+ allowsSorting: true,
53
53
  minWidth: 150,
54
54
  maxWidth: 150,
55
55
  },
@@ -57,7 +57,7 @@ const columns = [
57
57
  textValue: field.displayName,
58
58
  id: `${metadataFieldNamePrefix}.${field.key}`,
59
59
  type: field.type,
60
- allowSorting: true,
60
+ allowsSorting: true,
61
61
  minWidth: 150,
62
62
  maxWidth: 150,
63
63
  })),
@@ -94,6 +94,20 @@ export const metadataViewV2: Story = {
94
94
  args: metadataViewV2ElementProps,
95
95
  };
96
96
 
97
+ // @TODO Assert that rows are actually sorted in a different order, once handleSortChange is implemented
98
+ export const metadataViewV2SortsFromHeader: Story = {
99
+ args: metadataViewV2ElementProps,
100
+ play: async ({ canvas }) => {
101
+ await waitFor(() => {
102
+ expect(canvas.getByRole('row', { name: /Industry/i })).toBeInTheDocument();
103
+ });
104
+
105
+ const firstRow = canvas.getByRole('row', { name: /Industry/i });
106
+ const industryHeader = within(firstRow).getByRole('columnheader', { name: 'Industry' });
107
+ userEvent.click(industryHeader);
108
+ },
109
+ };
110
+
97
111
  export const metadataViewV2WithCustomActions: Story = {
98
112
  args: {
99
113
  ...metadataViewV2ElementProps,
@@ -45,7 +45,6 @@ export interface BoxAISidebarProps {
45
45
  isFeedbackFormEnabled: boolean;
46
46
  isIntelligentQueryMode: boolean;
47
47
  isMarkdownEnabled: boolean;
48
- isResetChatEnabled: boolean;
49
48
  isStopResponseEnabled?: boolean;
50
49
  isStreamingEnabled: boolean;
51
50
  items: Array<ItemType>;
@@ -50,7 +50,6 @@ function BoxAISidebarContent(
50
50
  hostAppName,
51
51
  isAIStudioAgentSelectorEnabled,
52
52
  isLoading,
53
- isResetChatEnabled,
54
53
  onSelectAgent,
55
54
  questions,
56
55
  shouldShowLandingPage,
@@ -191,7 +190,7 @@ function BoxAISidebarContent(
191
190
  const renderActions = () => (
192
191
  <>
193
192
  {renderBoxAISidebarTitle()}
194
- {isResetChatEnabled && <ClearConversationButton onClick={onClearAction} />}
193
+ <ClearConversationButton onClick={onClearAction} />
195
194
  <Tooltip content={formatMessage(messages.sidebarBoxAISwitchToModalView)} variant="standard">
196
195
  <IconButton
197
196
  aria-label={formatMessage(messages.sidebarBoxAISwitchToModalView)}
@@ -248,7 +247,6 @@ function BoxAISidebarContent(
248
247
  isAIStudioAgentSelectorEnabled={isAIStudioAgentSelectorEnabled}
249
248
  isFeedbackEnabled={isFeedbackEnabled}
250
249
  isFeedbackFormEnabled={isFeedbackFormEnabled}
251
- isResetChatEnabled={isResetChatEnabled}
252
250
  isStopResponseEnabled={isStopResponseEnabled}
253
251
  items={items}
254
252
  itemSize={itemSize}