box-ui-elements 23.5.0-beta.2 → 23.5.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +1 -1
- package/dist/picker.js +1 -1
- package/dist/preview.css +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +1 -1
- package/es/elements/common/sub-header/SubHeader.js +3 -0
- package/es/elements/common/sub-header/SubHeader.js.map +1 -1
- package/es/elements/common/sub-header/SubHeaderLeftV2.js +3 -23
- package/es/elements/common/sub-header/SubHeaderLeftV2.js.map +1 -1
- package/es/elements/common/sub-header/SubHeaderRight.js +6 -2
- package/es/elements/common/sub-header/SubHeaderRight.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.js +44 -5
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.scss +12 -0
- package/es/elements/content-explorer/MetadataSidePanel.js +92 -0
- package/es/elements/content-explorer/MetadataSidePanel.js.map +1 -0
- package/es/elements/content-explorer/MetadataSidePanel.scss +12 -0
- package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +30 -0
- package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
- package/es/elements/content-explorer/utils.js +67 -0
- package/es/elements/content-explorer/utils.js.map +1 -0
- package/es/features/metadata-instance-editor/CascadePolicy.js +3 -3
- package/es/features/metadata-instance-editor/CascadePolicy.js.flow +2 -3
- package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
- package/es/features/metadata-instance-editor/Instance.js +0 -2
- package/es/features/metadata-instance-editor/Instance.js.flow +0 -5
- package/es/features/metadata-instance-editor/Instance.js.map +1 -1
- package/es/features/metadata-instance-editor/Instances.js +0 -2
- package/es/features/metadata-instance-editor/Instances.js.flow +0 -3
- package/es/features/metadata-instance-editor/Instances.js.map +1 -1
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js +0 -2
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.flow +0 -3
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.map +1 -1
- package/es/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js +0 -1
- package/es/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js.flow +0 -1
- package/es/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js.map +1 -1
- package/es/src/elements/common/sub-header/SubHeader.d.ts +2 -1
- package/es/src/elements/common/sub-header/SubHeaderLeftV2.d.ts +1 -1
- package/es/src/elements/common/sub-header/SubHeaderRight.d.ts +4 -1
- package/es/src/elements/content-explorer/ContentExplorer.d.ts +15 -0
- package/es/src/elements/content-explorer/MetadataSidePanel.d.ts +13 -0
- package/es/src/elements/content-explorer/__tests__/MetadataSidePanel.test.d.ts +1 -0
- package/es/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.d.ts +1 -0
- package/es/src/elements/content-explorer/utils.d.ts +22 -0
- package/package.json +3 -3
- package/src/elements/common/sub-header/SubHeader.tsx +4 -0
- package/src/elements/common/sub-header/SubHeaderLeftV2.tsx +3 -22
- package/src/elements/common/sub-header/SubHeaderRight.tsx +8 -2
- package/src/elements/content-explorer/ContentExplorer.scss +12 -0
- package/src/elements/content-explorer/ContentExplorer.tsx +120 -71
- package/src/elements/content-explorer/MetadataSidePanel.scss +12 -0
- package/src/elements/content-explorer/MetadataSidePanel.tsx +126 -0
- package/src/elements/content-explorer/__tests__/ContentExplorer.test.tsx +80 -16
- package/src/elements/content-explorer/__tests__/MetadataSidePanel.test.tsx +127 -0
- package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +26 -0
- package/src/elements/content-explorer/utils.ts +58 -0
- package/src/features/metadata-instance-editor/CascadePolicy.js +2 -3
- package/src/features/metadata-instance-editor/Instance.js +0 -5
- package/src/features/metadata-instance-editor/Instances.js +0 -3
- package/src/features/metadata-instance-editor/MetadataInstanceEditor.js +0 -3
- package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +0 -9
- package/src/features/metadata-instance-editor/__tests__/Instance.test.js +0 -28
- package/src/features/metadata-instance-editor/__tests__/Instances.test.js +7 -9
- package/src/features/metadata-instance-editor/__tests__/MetadataInstanceEditor.test.js +1 -48
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap +0 -1
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instances.test.js.snap +0 -2
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/MetadataInstanceEditor.test.js.snap +0 -1
- package/src/features/metadata-instance-editor/stories/tests/CascadePolicy-visual.stories.js +0 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl';
|
|
3
|
+
import { IconButton, SidePanel, Text } from '@box/blueprint-web';
|
|
4
|
+
import { XMark } from '@box/blueprint-web-assets/icons/Fill/index';
|
|
5
|
+
import { FileDefault } from '@box/blueprint-web-assets/icons/Line/index';
|
|
6
|
+
import { AutofillContextProvider, MetadataInstance, MetadataInstanceForm } from '@box/metadata-editor';
|
|
7
|
+
import { getTemplateInstance, useSelectedItemText } from './utils';
|
|
8
|
+
import messages from '../common/messages';
|
|
9
|
+
import './MetadataSidePanel.scss';
|
|
10
|
+
const MetadataSidePanel = ({
|
|
11
|
+
currentCollection,
|
|
12
|
+
onClose,
|
|
13
|
+
selectedItemIds,
|
|
14
|
+
metadataTemplate
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
formatMessage
|
|
18
|
+
} = useIntl();
|
|
19
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
20
|
+
const [isUnsavedChangesModalOpen, setIsUnsavedChangesModalOpen] = useState(false);
|
|
21
|
+
const selectedItemText = useSelectedItemText(currentCollection, selectedItemIds);
|
|
22
|
+
const selectedItems = selectedItemIds === 'all' ? currentCollection.items : currentCollection.items.filter(item => selectedItemIds.has(item.id));
|
|
23
|
+
const templateInstance = getTemplateInstance(metadataTemplate, selectedItems);
|
|
24
|
+
const handleMetadataInstanceEdit = () => {
|
|
25
|
+
setIsEditing(true);
|
|
26
|
+
};
|
|
27
|
+
const handleMetadataInstanceFormCancel = () => {
|
|
28
|
+
setIsEditing(false);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
+
const handleMetadataInstanceFormChange = values => {
|
|
33
|
+
// TODO: Implement on form change
|
|
34
|
+
};
|
|
35
|
+
const handleMetadataInstanceFormDiscardUnsavedChanges = () => {
|
|
36
|
+
setIsUnsavedChangesModalOpen(false);
|
|
37
|
+
setIsEditing(false);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
41
|
+
const handleMetadataInstanceFormSubmit = async (values, operations) => {
|
|
42
|
+
// TODO: Implement onSave callback
|
|
43
|
+
};
|
|
44
|
+
return /*#__PURE__*/React.createElement(SidePanel, {
|
|
45
|
+
variant: "persistent"
|
|
46
|
+
}, /*#__PURE__*/React.createElement(SidePanel.Header, null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Text, {
|
|
47
|
+
as: "span",
|
|
48
|
+
variant: "titleLarge"
|
|
49
|
+
}, formatMessage(messages.sidebarMetadataTitle)), /*#__PURE__*/React.createElement("div", {
|
|
50
|
+
className: "bce-MetadataSidePanel-subtitle"
|
|
51
|
+
}, /*#__PURE__*/React.createElement(FileDefault, null), /*#__PURE__*/React.createElement(Text, {
|
|
52
|
+
as: "span",
|
|
53
|
+
color: "textOnLightSecondary",
|
|
54
|
+
variant: "subtitle"
|
|
55
|
+
}, selectedItemText))), /*#__PURE__*/React.createElement(IconButton, {
|
|
56
|
+
"aria-label": formatMessage(messages.close),
|
|
57
|
+
icon: XMark,
|
|
58
|
+
onClick: onClose,
|
|
59
|
+
size: "large"
|
|
60
|
+
})), /*#__PURE__*/React.createElement(SidePanel.ScrollableContainer, null, /*#__PURE__*/React.createElement("div", {
|
|
61
|
+
className: "bce-MetadataSidePanel-content"
|
|
62
|
+
}, /*#__PURE__*/React.createElement(AutofillContextProvider, {
|
|
63
|
+
fetchSuggestions: null,
|
|
64
|
+
isAiSuggestionsFeatureEnabled: false
|
|
65
|
+
}, isEditing ? /*#__PURE__*/React.createElement(MetadataInstanceForm, {
|
|
66
|
+
areAiSuggestionsAvailable: false,
|
|
67
|
+
isAiSuggestionsFeatureEnabled: false,
|
|
68
|
+
isBetaLanguageEnabled: false,
|
|
69
|
+
isDeleteButtonDisabled: true,
|
|
70
|
+
isDeleteConfirmationModalCheckboxEnabled: false,
|
|
71
|
+
isLargeFile: false,
|
|
72
|
+
isMultilevelTaxonomyFieldEnabled: false,
|
|
73
|
+
isUnsavedChangesModalOpen: isUnsavedChangesModalOpen,
|
|
74
|
+
selectedTemplateInstance: templateInstance,
|
|
75
|
+
onCancel: handleMetadataInstanceFormCancel,
|
|
76
|
+
onChange: handleMetadataInstanceFormChange,
|
|
77
|
+
onDelete: null,
|
|
78
|
+
onDiscardUnsavedChanges: handleMetadataInstanceFormDiscardUnsavedChanges,
|
|
79
|
+
onSubmit: handleMetadataInstanceFormSubmit,
|
|
80
|
+
setIsUnsavedChangesModalOpen: setIsUnsavedChangesModalOpen,
|
|
81
|
+
taxonomyOptionsFetcher: null
|
|
82
|
+
}) : /*#__PURE__*/React.createElement(MetadataInstance, {
|
|
83
|
+
areAiSuggestionsAvailable: false,
|
|
84
|
+
isAiSuggestionsFeatureEnabled: false,
|
|
85
|
+
isBetaLanguageEnabled: false,
|
|
86
|
+
onEdit: handleMetadataInstanceEdit,
|
|
87
|
+
templateInstance: templateInstance,
|
|
88
|
+
taxonomyNodeFetcher: null
|
|
89
|
+
})))));
|
|
90
|
+
};
|
|
91
|
+
export default MetadataSidePanel;
|
|
92
|
+
//# sourceMappingURL=MetadataSidePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataSidePanel.js","names":["React","useState","useIntl","IconButton","SidePanel","Text","XMark","FileDefault","AutofillContextProvider","MetadataInstance","MetadataInstanceForm","getTemplateInstance","useSelectedItemText","messages","MetadataSidePanel","currentCollection","onClose","selectedItemIds","metadataTemplate","formatMessage","isEditing","setIsEditing","isUnsavedChangesModalOpen","setIsUnsavedChangesModalOpen","selectedItemText","selectedItems","items","filter","item","has","id","templateInstance","handleMetadataInstanceEdit","handleMetadataInstanceFormCancel","handleMetadataInstanceFormChange","values","handleMetadataInstanceFormDiscardUnsavedChanges","handleMetadataInstanceFormSubmit","operations","createElement","variant","Header","as","sidebarMetadataTitle","className","color","close","icon","onClick","size","ScrollableContainer","fetchSuggestions","isAiSuggestionsFeatureEnabled","areAiSuggestionsAvailable","isBetaLanguageEnabled","isDeleteButtonDisabled","isDeleteConfirmationModalCheckboxEnabled","isLargeFile","isMultilevelTaxonomyFieldEnabled","selectedTemplateInstance","onCancel","onChange","onDelete","onDiscardUnsavedChanges","onSubmit","taxonomyOptionsFetcher","onEdit","taxonomyNodeFetcher"],"sources":["../../../src/elements/content-explorer/MetadataSidePanel.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { IconButton, SidePanel, Text } from '@box/blueprint-web';\nimport { XMark } from '@box/blueprint-web-assets/icons/Fill/index';\nimport { FileDefault } from '@box/blueprint-web-assets/icons/Line/index';\nimport {\n AutofillContextProvider,\n FormValues,\n JSONPatchOperations,\n MetadataInstance,\n MetadataInstanceForm,\n} from '@box/metadata-editor';\n\nimport type { Selection } from 'react-aria-components';\nimport type { Collection } from '../../common/types/core';\nimport type { MetadataTemplate } from '../../common/types/metadata';\nimport { getTemplateInstance, useSelectedItemText } from './utils';\n\nimport messages from '../common/messages';\n\nimport './MetadataSidePanel.scss';\n\nexport interface MetadataSidePanelProps {\n currentCollection: Collection;\n onClose: () => void;\n metadataTemplate: MetadataTemplate;\n selectedItemIds: Selection;\n}\n\nconst MetadataSidePanel = ({\n currentCollection,\n onClose,\n selectedItemIds,\n metadataTemplate,\n}: MetadataSidePanelProps) => {\n const { formatMessage } = useIntl();\n const [isEditing, setIsEditing] = useState<boolean>(false);\n const [isUnsavedChangesModalOpen, setIsUnsavedChangesModalOpen] = useState<boolean>(false);\n\n const selectedItemText = useSelectedItemText(currentCollection, selectedItemIds);\n const selectedItems =\n selectedItemIds === 'all'\n ? currentCollection.items\n : currentCollection.items.filter(item => selectedItemIds.has(item.id));\n const templateInstance = getTemplateInstance(metadataTemplate, selectedItems);\n\n const handleMetadataInstanceEdit = () => {\n setIsEditing(true);\n };\n\n const handleMetadataInstanceFormCancel = () => {\n setIsEditing(false);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleMetadataInstanceFormChange = (values: FormValues) => {\n // TODO: Implement on form change\n };\n\n const handleMetadataInstanceFormDiscardUnsavedChanges = () => {\n setIsUnsavedChangesModalOpen(false);\n setIsEditing(false);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleMetadataInstanceFormSubmit = async (values: FormValues, operations: JSONPatchOperations) => {\n // TODO: Implement onSave callback\n };\n\n return (\n <SidePanel variant=\"persistent\">\n <SidePanel.Header>\n <div>\n <Text as=\"span\" variant=\"titleLarge\">\n {formatMessage(messages.sidebarMetadataTitle)}\n </Text>\n <div className=\"bce-MetadataSidePanel-subtitle\">\n <FileDefault />\n <Text as=\"span\" color=\"textOnLightSecondary\" variant=\"subtitle\">\n {selectedItemText}\n </Text>\n </div>\n </div>\n <IconButton aria-label={formatMessage(messages.close)} icon={XMark} onClick={onClose} size=\"large\" />\n </SidePanel.Header>\n <SidePanel.ScrollableContainer>\n <div className=\"bce-MetadataSidePanel-content\">\n <AutofillContextProvider fetchSuggestions={null} isAiSuggestionsFeatureEnabled={false}>\n {isEditing ? (\n <MetadataInstanceForm\n areAiSuggestionsAvailable={false}\n isAiSuggestionsFeatureEnabled={false}\n isBetaLanguageEnabled={false}\n isDeleteButtonDisabled={true}\n isDeleteConfirmationModalCheckboxEnabled={false}\n isLargeFile={false}\n isMultilevelTaxonomyFieldEnabled={false}\n isUnsavedChangesModalOpen={isUnsavedChangesModalOpen}\n selectedTemplateInstance={templateInstance}\n onCancel={handleMetadataInstanceFormCancel}\n onChange={handleMetadataInstanceFormChange}\n onDelete={null}\n onDiscardUnsavedChanges={handleMetadataInstanceFormDiscardUnsavedChanges}\n onSubmit={handleMetadataInstanceFormSubmit}\n setIsUnsavedChangesModalOpen={setIsUnsavedChangesModalOpen}\n taxonomyOptionsFetcher={null}\n />\n ) : (\n <MetadataInstance\n areAiSuggestionsAvailable={false}\n isAiSuggestionsFeatureEnabled={false}\n isBetaLanguageEnabled={false}\n onEdit={handleMetadataInstanceEdit}\n templateInstance={templateInstance}\n taxonomyNodeFetcher={null}\n />\n )}\n </AutofillContextProvider>\n </div>\n </SidePanel.ScrollableContainer>\n </SidePanel>\n );\n};\n\nexport default MetadataSidePanel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -177,6 +177,36 @@ export const metadataViewV2WithInitialFilterValues = {
|
|
|
177
177
|
expect(fileTypeChip).toHaveTextContent(/\+2/);
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
|
+
export const sidePanelOpenWithSingleItemSelected = {
|
|
181
|
+
args: _objectSpread(_objectSpread({}, metadataViewV2ElementProps), {}, {
|
|
182
|
+
metadataViewProps: {
|
|
183
|
+
columns,
|
|
184
|
+
tableProps: {
|
|
185
|
+
isSelectAllEnabled: true
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}),
|
|
189
|
+
play: async ({
|
|
190
|
+
canvas
|
|
191
|
+
}) => {
|
|
192
|
+
await waitFor(() => {
|
|
193
|
+
expect(canvas.getByRole('row', {
|
|
194
|
+
name: /Child 2/i
|
|
195
|
+
})).toBeInTheDocument();
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// Select the first row by clicking its checkbox
|
|
199
|
+
const firstRow = canvas.getByRole('row', {
|
|
200
|
+
name: /Child 2/i
|
|
201
|
+
});
|
|
202
|
+
const checkbox = within(firstRow).getByRole('checkbox');
|
|
203
|
+
await userEvent.click(checkbox);
|
|
204
|
+
const metadataButton = canvas.getByRole('button', {
|
|
205
|
+
name: 'Metadata'
|
|
206
|
+
});
|
|
207
|
+
await userEvent.click(metadataButton);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
180
210
|
const meta = {
|
|
181
211
|
title: 'Elements/ContentExplorer/tests/MetadataView/visual',
|
|
182
212
|
component: ContentExplorer,
|
|
@@ -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","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\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","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":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl';
|
|
3
|
+
import messages from '../common/messages';
|
|
4
|
+
|
|
5
|
+
// Get selected item text
|
|
6
|
+
export function useSelectedItemText(currentCollection, selectedItemIds) {
|
|
7
|
+
const {
|
|
8
|
+
formatMessage
|
|
9
|
+
} = useIntl();
|
|
10
|
+
return useMemo(() => {
|
|
11
|
+
const selectedCount = selectedItemIds === 'all' ? currentCollection.items.length : selectedItemIds.size;
|
|
12
|
+
if (selectedCount === 0) return '';
|
|
13
|
+
|
|
14
|
+
// Case 1: Single selected item - show item name
|
|
15
|
+
if (selectedCount === 1) {
|
|
16
|
+
const selectedKey = selectedItemIds === 'all' ? currentCollection.items[0].id : selectedItemIds.values().next().value;
|
|
17
|
+
const selectedItem = currentCollection.items.find(item => item.id === selectedKey);
|
|
18
|
+
return selectedItem?.name ?? '';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Case 2: Multiple selected items - show count
|
|
22
|
+
return formatMessage(messages.numFilesSelected, {
|
|
23
|
+
numSelected: selectedCount
|
|
24
|
+
});
|
|
25
|
+
}, [currentCollection.items, formatMessage, selectedItemIds]);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Get template instance based on metadata template and selected items
|
|
29
|
+
export function getTemplateInstance(metadataTemplate, selectedItems) {
|
|
30
|
+
const {
|
|
31
|
+
displayName,
|
|
32
|
+
fields,
|
|
33
|
+
hidden,
|
|
34
|
+
id,
|
|
35
|
+
scope,
|
|
36
|
+
templateKey,
|
|
37
|
+
type
|
|
38
|
+
} = metadataTemplate;
|
|
39
|
+
const selectedItemsFields = fields.map(({
|
|
40
|
+
displayName: fieldDisplayName,
|
|
41
|
+
hidden: fieldHidden,
|
|
42
|
+
id: fieldId,
|
|
43
|
+
key,
|
|
44
|
+
options,
|
|
45
|
+
type: fieldType
|
|
46
|
+
}) => ({
|
|
47
|
+
displayName: fieldDisplayName,
|
|
48
|
+
hidden: fieldHidden,
|
|
49
|
+
id: fieldId,
|
|
50
|
+
key,
|
|
51
|
+
options,
|
|
52
|
+
type: fieldType,
|
|
53
|
+
// TODO: Add support for multiple selected items
|
|
54
|
+
value: selectedItems[0].metadata[scope][templateKey][key]
|
|
55
|
+
}));
|
|
56
|
+
return {
|
|
57
|
+
canEdit: true,
|
|
58
|
+
displayName,
|
|
59
|
+
hidden,
|
|
60
|
+
id,
|
|
61
|
+
fields: selectedItemsFields,
|
|
62
|
+
scope,
|
|
63
|
+
templateKey,
|
|
64
|
+
type
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["useMemo","useIntl","messages","useSelectedItemText","currentCollection","selectedItemIds","formatMessage","selectedCount","items","length","size","selectedKey","id","values","next","value","selectedItem","find","item","name","numFilesSelected","numSelected","getTemplateInstance","metadataTemplate","selectedItems","displayName","fields","hidden","scope","templateKey","type","selectedItemsFields","map","fieldDisplayName","fieldHidden","fieldId","key","options","fieldType","metadata","canEdit"],"sources":["../../../src/elements/content-explorer/utils.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport type { MetadataTemplate } from '@box/metadata-editor';\nimport type { Selection } from 'react-aria-components';\nimport type { BoxItem, Collection } from '../../common/types/core';\n\nimport messages from '../common/messages';\n\n// Get selected item text\nexport function useSelectedItemText(currentCollection: Collection, selectedItemIds: Selection): string {\n const { formatMessage } = useIntl();\n\n return useMemo(() => {\n const selectedCount = selectedItemIds === 'all' ? currentCollection.items.length : selectedItemIds.size;\n if (selectedCount === 0) return '';\n\n // Case 1: Single selected item - show item name\n if (selectedCount === 1) {\n const selectedKey =\n selectedItemIds === 'all' ? currentCollection.items[0].id : selectedItemIds.values().next().value;\n const selectedItem = currentCollection.items.find(item => item.id === selectedKey);\n return selectedItem?.name ?? '';\n }\n\n // Case 2: Multiple selected items - show count\n return formatMessage(messages.numFilesSelected, { numSelected: selectedCount });\n }, [currentCollection.items, formatMessage, selectedItemIds]);\n}\n\n// Get template instance based on metadata template and selected items\nexport function getTemplateInstance(metadataTemplate: MetadataTemplate, selectedItems: BoxItem[]) {\n const { displayName, fields, hidden, id, scope, templateKey, type } = metadataTemplate;\n\n const selectedItemsFields = fields.map(\n ({ displayName: fieldDisplayName, hidden: fieldHidden, id: fieldId, key, options, type: fieldType }) => ({\n displayName: fieldDisplayName,\n hidden: fieldHidden,\n id: fieldId,\n key,\n options,\n type: fieldType,\n // TODO: Add support for multiple selected items\n value: selectedItems[0].metadata[scope][templateKey][key],\n }),\n );\n\n return {\n canEdit: true,\n displayName,\n hidden,\n id,\n fields: selectedItemsFields,\n scope,\n templateKey,\n type,\n };\n}\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,OAAO,QAAQ,YAAY;AAMpC,OAAOC,QAAQ,MAAM,oBAAoB;;AAEzC;AACA,OAAO,SAASC,mBAAmBA,CAACC,iBAA6B,EAAEC,eAA0B,EAAU;EACnG,MAAM;IAAEC;EAAc,CAAC,GAAGL,OAAO,CAAC,CAAC;EAEnC,OAAOD,OAAO,CAAC,MAAM;IACjB,MAAMO,aAAa,GAAGF,eAAe,KAAK,KAAK,GAAGD,iBAAiB,CAACI,KAAK,CAACC,MAAM,GAAGJ,eAAe,CAACK,IAAI;IACvG,IAAIH,aAAa,KAAK,CAAC,EAAE,OAAO,EAAE;;IAElC;IACA,IAAIA,aAAa,KAAK,CAAC,EAAE;MACrB,MAAMI,WAAW,GACbN,eAAe,KAAK,KAAK,GAAGD,iBAAiB,CAACI,KAAK,CAAC,CAAC,CAAC,CAACI,EAAE,GAAGP,eAAe,CAACQ,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,KAAK;MACrG,MAAMC,YAAY,GAAGZ,iBAAiB,CAACI,KAAK,CAACS,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACN,EAAE,KAAKD,WAAW,CAAC;MAClF,OAAOK,YAAY,EAAEG,IAAI,IAAI,EAAE;IACnC;;IAEA;IACA,OAAOb,aAAa,CAACJ,QAAQ,CAACkB,gBAAgB,EAAE;MAAEC,WAAW,EAAEd;IAAc,CAAC,CAAC;EACnF,CAAC,EAAE,CAACH,iBAAiB,CAACI,KAAK,EAAEF,aAAa,EAAED,eAAe,CAAC,CAAC;AACjE;;AAEA;AACA,OAAO,SAASiB,mBAAmBA,CAACC,gBAAkC,EAAEC,aAAwB,EAAE;EAC9F,MAAM;IAAEC,WAAW;IAAEC,MAAM;IAAEC,MAAM;IAAEf,EAAE;IAAEgB,KAAK;IAAEC,WAAW;IAAEC;EAAK,CAAC,GAAGP,gBAAgB;EAEtF,MAAMQ,mBAAmB,GAAGL,MAAM,CAACM,GAAG,CAClC,CAAC;IAAEP,WAAW,EAAEQ,gBAAgB;IAAEN,MAAM,EAAEO,WAAW;IAAEtB,EAAE,EAAEuB,OAAO;IAAEC,GAAG;IAAEC,OAAO;IAAEP,IAAI,EAAEQ;EAAU,CAAC,MAAM;IACrGb,WAAW,EAAEQ,gBAAgB;IAC7BN,MAAM,EAAEO,WAAW;IACnBtB,EAAE,EAAEuB,OAAO;IACXC,GAAG;IACHC,OAAO;IACPP,IAAI,EAAEQ,SAAS;IACf;IACAvB,KAAK,EAAES,aAAa,CAAC,CAAC,CAAC,CAACe,QAAQ,CAACX,KAAK,CAAC,CAACC,WAAW,CAAC,CAACO,GAAG;EAC5D,CAAC,CACL,CAAC;EAED,OAAO;IACHI,OAAO,EAAE,IAAI;IACbf,WAAW;IACXE,MAAM;IACNf,EAAE;IACFc,MAAM,EAAEK,mBAAmB;IAC3BH,KAAK;IACLC,WAAW;IACXC;EACJ,CAAC;AACL","ignoreList":[]}
|
|
@@ -20,7 +20,6 @@ const AI_LINK = 'https://www.box.com/ai';
|
|
|
20
20
|
const CascadePolicy = ({
|
|
21
21
|
canEdit,
|
|
22
22
|
canUseAIFolderExtraction,
|
|
23
|
-
canUseAIFolderExtractionAgentSelector,
|
|
24
23
|
cascadePolicyConfiguration,
|
|
25
24
|
isCascadingEnabled,
|
|
26
25
|
isCascadingOverwritten,
|
|
@@ -129,13 +128,14 @@ const CascadePolicy = ({
|
|
|
129
128
|
className: "cascade-policy-link",
|
|
130
129
|
href: AI_LINK,
|
|
131
130
|
target: "_blank"
|
|
132
|
-
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.aiAutofillLearnMore))),
|
|
131
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.aiAutofillLearnMore))), isAIFolderExtractionEnabled && /*#__PURE__*/React.createElement("div", {
|
|
133
132
|
className: "metadata-cascade-ai-agent-selector"
|
|
134
133
|
}, /*#__PURE__*/React.createElement(BoxAiAgentSelectorWithApiContainer, {
|
|
135
134
|
disabled: isExistingCascadePolicy,
|
|
136
135
|
fetcher: agentFetcher,
|
|
137
136
|
onSelectAgent: handleAgentSelect,
|
|
138
|
-
recordAction: () => {}
|
|
137
|
+
recordAction: () => {},
|
|
138
|
+
selectorAlignment: "left"
|
|
139
139
|
}))))) : readOnlyState;
|
|
140
140
|
};
|
|
141
141
|
export default CascadePolicy;
|
|
@@ -27,7 +27,6 @@ const AI_LINK = 'https://www.box.com/ai';
|
|
|
27
27
|
type Props = {
|
|
28
28
|
canEdit: boolean,
|
|
29
29
|
canUseAIFolderExtraction: boolean,
|
|
30
|
-
canUseAIFolderExtractionAgentSelector: boolean,
|
|
31
30
|
cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,
|
|
32
31
|
isAIFolderExtractionEnabled: boolean,
|
|
33
32
|
isCascadingEnabled: boolean,
|
|
@@ -44,7 +43,6 @@ type Props = {
|
|
|
44
43
|
const CascadePolicy = ({
|
|
45
44
|
canEdit,
|
|
46
45
|
canUseAIFolderExtraction,
|
|
47
|
-
canUseAIFolderExtractionAgentSelector,
|
|
48
46
|
cascadePolicyConfiguration,
|
|
49
47
|
isCascadingEnabled,
|
|
50
48
|
isCascadingOverwritten,
|
|
@@ -194,13 +192,14 @@ const CascadePolicy = ({
|
|
|
194
192
|
<FormattedMessage {...messages.aiAutofillLearnMore} />
|
|
195
193
|
</Link>
|
|
196
194
|
</div>
|
|
197
|
-
{
|
|
195
|
+
{isAIFolderExtractionEnabled && (
|
|
198
196
|
<div className="metadata-cascade-ai-agent-selector">
|
|
199
197
|
<BoxAiAgentSelectorWithApiContainer
|
|
200
198
|
disabled={isExistingCascadePolicy}
|
|
201
199
|
fetcher={agentFetcher}
|
|
202
200
|
onSelectAgent={handleAgentSelect}
|
|
203
201
|
recordAction={() => {}}
|
|
202
|
+
selectorAlignment="left"
|
|
204
203
|
/>
|
|
205
204
|
</div>
|
|
206
205
|
)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CascadePolicy.js","names":["React","InlineNotice","useCallback","FormattedMessage","useIntl","BoxAiAdvancedColor","BoxAiColor","BoxAiAgentSelectorWithApiContainer","Toggle","RadioButton","RadioGroup","Link","IconAlertDefault","messages","STANDARD_AGENT_ID","ENHANCED_AGENT_ID","ENHANCED_AGENT_CONFIGURATION","COMMUNITY_LINK","AI_LINK","CascadePolicy","canEdit","canUseAIFolderExtraction","canUseAIFolderExtractionAgentSelector","cascadePolicyConfiguration","isCascadingEnabled","isCascadingOverwritten","isCustomMetadata","isAIFolderExtractionEnabled","isExistingCascadePolicy","onAIFolderExtractionToggle","onAIAgentSelect","onCascadeToggle","onCascadeModeChange","shouldShowCascadeOptions","formatMessage","readOnlyState","createElement","className","metadataCascadePolicyEnabledInfo","isEnhancedAgentSelected","agent","agents","useMemo","id","name","standardAgentName","isEnterpriseDefault","enhancedAgentName","customIcon","isSelected","agentFetcher","Promise","resolve","handleAgentSelect","Fragment","variant","variantIconAriaLabel","cascadePolicyOptionsDisabledNoticeIconAriaLabel","cascadePolicyOptionsDisabledNotice","_extends","tagName","enableCascadePolicy","isOn","label","onChange","e","target","checked","applyCascadePolicyText","href","cascadePolicyLearnMore","cannotApplyCascadePolicyText","cascadePolicyModeQuestion","operationNotImmediate","value","isDisabled","cascadePolicySkipMode","cascadePolicyOverwriteMode","width","height","enableAIAutofill","aiAutofillDescription","aiAutofillLearnMore","disabled","fetcher","onSelectAgent","recordAction"],"sources":["../../../src/features/metadata-instance-editor/CascadePolicy.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\n\nimport { InlineNotice } from '@box/blueprint-web';\nimport { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\n// $FlowFixMe\nimport { BoxAiAdvancedColor, BoxAiColor } from '@box/blueprint-web-assets/icons/Medium';\nimport { type AgentType } from '@box/box-ai-agent-selector';\n\n// $FlowFixMe\nimport { BoxAiAgentSelectorWithApiContainer } from '@box/box-ai-agent-selector';\n\nimport Toggle from '../../components/toggle';\nimport { RadioButton, RadioGroup } from '../../components/radio';\nimport Link from '../../components/link/Link';\nimport IconAlertDefault from '../../icons/general/IconAlertDefault';\nimport messages from './messages';\nimport './CascadePolicy.scss';\nimport { STANDARD_AGENT_ID, ENHANCED_AGENT_ID, ENHANCED_AGENT_CONFIGURATION } from './constants';\nimport type { MetadataCascadePolicyConfiguration } from '../../common/types/metadata';\n\nconst COMMUNITY_LINK = 'https://support.box.com/hc/en-us/articles/360044195873-Cascading-metadata-in-folders';\nconst AI_LINK = 'https://www.box.com/ai';\n\ntype Props = {\n canEdit: boolean,\n canUseAIFolderExtraction: boolean,\n canUseAIFolderExtractionAgentSelector: boolean,\n cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,\n isAIFolderExtractionEnabled: boolean,\n isCascadingEnabled: boolean,\n isCascadingOverwritten: boolean,\n isCustomMetadata: boolean,\n isExistingCascadePolicy: boolean,\n onAIFolderExtractionToggle: (value: boolean) => void,\n onAIAgentSelect?: (agent: AgentType | null) => void,\n onCascadeModeChange: (value: boolean) => void,\n onCascadeToggle: (value: boolean) => void,\n shouldShowCascadeOptions: boolean,\n};\n\nconst CascadePolicy = ({\n canEdit,\n canUseAIFolderExtraction,\n canUseAIFolderExtractionAgentSelector,\n cascadePolicyConfiguration,\n isCascadingEnabled,\n isCascadingOverwritten,\n isCustomMetadata,\n isAIFolderExtractionEnabled,\n isExistingCascadePolicy,\n onAIFolderExtractionToggle,\n onAIAgentSelect,\n onCascadeToggle,\n onCascadeModeChange,\n shouldShowCascadeOptions,\n}: Props) => {\n const { formatMessage } = useIntl();\n\n const readOnlyState = isCascadingEnabled ? (\n <div className=\"metadata-cascade-notice\">\n <FormattedMessage {...messages.metadataCascadePolicyEnabledInfo} />\n </div>\n ) : null;\n\n const isEnhancedAgentSelected = cascadePolicyConfiguration?.agent === ENHANCED_AGENT_CONFIGURATION;\n\n const agents = React.useMemo(\n () => [\n {\n id: STANDARD_AGENT_ID,\n name: formatMessage(messages.standardAgentName),\n isEnterpriseDefault: true,\n },\n {\n id: ENHANCED_AGENT_ID,\n name: formatMessage(messages.enhancedAgentName),\n isEnterpriseDefault: false,\n customIcon: BoxAiAdvancedColor,\n isSelected: isEnhancedAgentSelected,\n },\n ],\n [formatMessage, isEnhancedAgentSelected],\n );\n\n // BoxAiAgentSelectorWithApiContainer expects a function that returns a Promise<AgentListResponse>\n // Since we're passing in our own agents, we don't need to make an API call,\n // so we wrap the store data in a Promise to satisfy the component's interface requirements.\n const agentFetcher = useCallback(() => {\n return Promise.resolve({ agents });\n }, [agents]);\n\n const handleAgentSelect = useCallback(\n (agent: AgentType | null) => {\n if (onAIAgentSelect) {\n onAIAgentSelect(agent);\n }\n },\n [onAIAgentSelect],\n );\n\n return canEdit ? (\n <>\n {isExistingCascadePolicy && (\n <InlineNotice\n variant=\"info\"\n variantIconAriaLabel={formatMessage(messages.cascadePolicyOptionsDisabledNoticeIconAriaLabel)}\n >\n <FormattedMessage {...messages.cascadePolicyOptionsDisabledNotice} />\n </InlineNotice>\n )}\n <div className=\"metadata-cascade-editor\">\n <div className=\"metadata-cascade-enable\" data-testid=\"metadata-cascade-enable\">\n <div>\n <FormattedMessage tagName=\"strong\" {...messages.enableCascadePolicy} />\n {!isCustomMetadata && (\n <Toggle\n aria-label={formatMessage(messages.enableCascadePolicy)}\n className={`metadata-cascade-toggle ${\n isCascadingEnabled ? 'cascade-on' : 'cascade-off'\n }`}\n isOn={isCascadingEnabled}\n label=\"\"\n onChange={e => onCascadeToggle(e.target.checked)}\n />\n )}\n </div>\n {!isCustomMetadata ? (\n <div className=\"cascade-policy-text\">\n <FormattedMessage {...messages.applyCascadePolicyText} />\n \n <Link className=\"cascade-policy-link\" href={COMMUNITY_LINK} target=\"_blank\">\n <FormattedMessage {...messages.cascadePolicyLearnMore} />\n </Link>\n </div>\n ) : (\n <div>\n <FormattedMessage {...messages.cannotApplyCascadePolicyText} />\n </div>\n )}\n </div>\n </div>\n {shouldShowCascadeOptions && (\n <div className=\"metadata-cascade-editor\">\n <div className=\"metadata-cascading-mode\">\n <FormattedMessage {...messages.cascadePolicyModeQuestion} />\n\n <div className=\"metadata-operation-not-immediate\">\n <IconAlertDefault />\n <span>\n <FormattedMessage {...messages.operationNotImmediate} />\n </span>\n </div>\n <RadioGroup\n className=\"metadata-cascading-options\"\n onChange={e => onCascadeModeChange(e.target.value === 'overwrite')}\n value={isCascadingOverwritten ? 'overwrite' : 'skip'}\n >\n <RadioButton\n isDisabled={isExistingCascadePolicy}\n label={<FormattedMessage {...messages.cascadePolicySkipMode} />}\n value=\"skip\"\n />\n <RadioButton\n isDisabled={isExistingCascadePolicy}\n label={<FormattedMessage {...messages.cascadePolicyOverwriteMode} />}\n value=\"overwrite\"\n />\n </RadioGroup>\n </div>\n </div>\n )}\n {shouldShowCascadeOptions && canUseAIFolderExtraction && (\n <div className=\"metadata-cascade-editor\" data-testid=\"ai-folder-extraction\">\n <div className=\"metadata-cascade-enable\">\n <div>\n <BoxAiColor className=\"metadata-cascade-ai-logo\" width={16} height={16} />\n <FormattedMessage tagName=\"strong\" {...messages.enableAIAutofill} />\n <Toggle\n aria-label={formatMessage(messages.enableAIAutofill)}\n className=\"metadata-cascade-toggle\"\n isOn={isAIFolderExtractionEnabled}\n isDisabled={isExistingCascadePolicy}\n label=\"\"\n onChange={e => onAIFolderExtractionToggle(e.target.checked)}\n />\n </div>\n <div className=\"cascade-policy-text\">\n <FormattedMessage {...messages.aiAutofillDescription} />\n \n <Link className=\"cascade-policy-link\" href={AI_LINK} target=\"_blank\">\n <FormattedMessage {...messages.aiAutofillLearnMore} />\n </Link>\n </div>\n {canUseAIFolderExtractionAgentSelector && isAIFolderExtractionEnabled && (\n <div className=\"metadata-cascade-ai-agent-selector\">\n <BoxAiAgentSelectorWithApiContainer\n disabled={isExistingCascadePolicy}\n fetcher={agentFetcher}\n onSelectAgent={handleAgentSelect}\n recordAction={() => {}}\n />\n </div>\n )}\n </div>\n </div>\n )}\n </>\n ) : (\n readOnlyState\n );\n};\n\nexport default CascadePolicy;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CascadePolicy.js","names":["React","InlineNotice","useCallback","FormattedMessage","useIntl","BoxAiAdvancedColor","BoxAiColor","BoxAiAgentSelectorWithApiContainer","Toggle","RadioButton","RadioGroup","Link","IconAlertDefault","messages","STANDARD_AGENT_ID","ENHANCED_AGENT_ID","ENHANCED_AGENT_CONFIGURATION","COMMUNITY_LINK","AI_LINK","CascadePolicy","canEdit","canUseAIFolderExtraction","cascadePolicyConfiguration","isCascadingEnabled","isCascadingOverwritten","isCustomMetadata","isAIFolderExtractionEnabled","isExistingCascadePolicy","onAIFolderExtractionToggle","onAIAgentSelect","onCascadeToggle","onCascadeModeChange","shouldShowCascadeOptions","formatMessage","readOnlyState","createElement","className","metadataCascadePolicyEnabledInfo","isEnhancedAgentSelected","agent","agents","useMemo","id","name","standardAgentName","isEnterpriseDefault","enhancedAgentName","customIcon","isSelected","agentFetcher","Promise","resolve","handleAgentSelect","Fragment","variant","variantIconAriaLabel","cascadePolicyOptionsDisabledNoticeIconAriaLabel","cascadePolicyOptionsDisabledNotice","_extends","tagName","enableCascadePolicy","isOn","label","onChange","e","target","checked","applyCascadePolicyText","href","cascadePolicyLearnMore","cannotApplyCascadePolicyText","cascadePolicyModeQuestion","operationNotImmediate","value","isDisabled","cascadePolicySkipMode","cascadePolicyOverwriteMode","width","height","enableAIAutofill","aiAutofillDescription","aiAutofillLearnMore","disabled","fetcher","onSelectAgent","recordAction","selectorAlignment"],"sources":["../../../src/features/metadata-instance-editor/CascadePolicy.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\n\nimport { InlineNotice } from '@box/blueprint-web';\nimport { useCallback } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\n// $FlowFixMe\nimport { BoxAiAdvancedColor, BoxAiColor } from '@box/blueprint-web-assets/icons/Medium';\nimport { type AgentType } from '@box/box-ai-agent-selector';\n\n// $FlowFixMe\nimport { BoxAiAgentSelectorWithApiContainer } from '@box/box-ai-agent-selector';\n\nimport Toggle from '../../components/toggle';\nimport { RadioButton, RadioGroup } from '../../components/radio';\nimport Link from '../../components/link/Link';\nimport IconAlertDefault from '../../icons/general/IconAlertDefault';\nimport messages from './messages';\nimport './CascadePolicy.scss';\nimport { STANDARD_AGENT_ID, ENHANCED_AGENT_ID, ENHANCED_AGENT_CONFIGURATION } from './constants';\nimport type { MetadataCascadePolicyConfiguration } from '../../common/types/metadata';\n\nconst COMMUNITY_LINK = 'https://support.box.com/hc/en-us/articles/360044195873-Cascading-metadata-in-folders';\nconst AI_LINK = 'https://www.box.com/ai';\n\ntype Props = {\n canEdit: boolean,\n canUseAIFolderExtraction: boolean,\n cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,\n isAIFolderExtractionEnabled: boolean,\n isCascadingEnabled: boolean,\n isCascadingOverwritten: boolean,\n isCustomMetadata: boolean,\n isExistingCascadePolicy: boolean,\n onAIFolderExtractionToggle: (value: boolean) => void,\n onAIAgentSelect?: (agent: AgentType | null) => void,\n onCascadeModeChange: (value: boolean) => void,\n onCascadeToggle: (value: boolean) => void,\n shouldShowCascadeOptions: boolean,\n};\n\nconst CascadePolicy = ({\n canEdit,\n canUseAIFolderExtraction,\n cascadePolicyConfiguration,\n isCascadingEnabled,\n isCascadingOverwritten,\n isCustomMetadata,\n isAIFolderExtractionEnabled,\n isExistingCascadePolicy,\n onAIFolderExtractionToggle,\n onAIAgentSelect,\n onCascadeToggle,\n onCascadeModeChange,\n shouldShowCascadeOptions,\n}: Props) => {\n const { formatMessage } = useIntl();\n\n const readOnlyState = isCascadingEnabled ? (\n <div className=\"metadata-cascade-notice\">\n <FormattedMessage {...messages.metadataCascadePolicyEnabledInfo} />\n </div>\n ) : null;\n\n const isEnhancedAgentSelected = cascadePolicyConfiguration?.agent === ENHANCED_AGENT_CONFIGURATION;\n\n const agents = React.useMemo(\n () => [\n {\n id: STANDARD_AGENT_ID,\n name: formatMessage(messages.standardAgentName),\n isEnterpriseDefault: true,\n },\n {\n id: ENHANCED_AGENT_ID,\n name: formatMessage(messages.enhancedAgentName),\n isEnterpriseDefault: false,\n customIcon: BoxAiAdvancedColor,\n isSelected: isEnhancedAgentSelected,\n },\n ],\n [formatMessage, isEnhancedAgentSelected],\n );\n\n // BoxAiAgentSelectorWithApiContainer expects a function that returns a Promise<AgentListResponse>\n // Since we're passing in our own agents, we don't need to make an API call,\n // so we wrap the store data in a Promise to satisfy the component's interface requirements.\n const agentFetcher = useCallback(() => {\n return Promise.resolve({ agents });\n }, [agents]);\n\n const handleAgentSelect = useCallback(\n (agent: AgentType | null) => {\n if (onAIAgentSelect) {\n onAIAgentSelect(agent);\n }\n },\n [onAIAgentSelect],\n );\n\n return canEdit ? (\n <>\n {isExistingCascadePolicy && (\n <InlineNotice\n variant=\"info\"\n variantIconAriaLabel={formatMessage(messages.cascadePolicyOptionsDisabledNoticeIconAriaLabel)}\n >\n <FormattedMessage {...messages.cascadePolicyOptionsDisabledNotice} />\n </InlineNotice>\n )}\n <div className=\"metadata-cascade-editor\">\n <div className=\"metadata-cascade-enable\" data-testid=\"metadata-cascade-enable\">\n <div>\n <FormattedMessage tagName=\"strong\" {...messages.enableCascadePolicy} />\n {!isCustomMetadata && (\n <Toggle\n aria-label={formatMessage(messages.enableCascadePolicy)}\n className={`metadata-cascade-toggle ${\n isCascadingEnabled ? 'cascade-on' : 'cascade-off'\n }`}\n isOn={isCascadingEnabled}\n label=\"\"\n onChange={e => onCascadeToggle(e.target.checked)}\n />\n )}\n </div>\n {!isCustomMetadata ? (\n <div className=\"cascade-policy-text\">\n <FormattedMessage {...messages.applyCascadePolicyText} />\n \n <Link className=\"cascade-policy-link\" href={COMMUNITY_LINK} target=\"_blank\">\n <FormattedMessage {...messages.cascadePolicyLearnMore} />\n </Link>\n </div>\n ) : (\n <div>\n <FormattedMessage {...messages.cannotApplyCascadePolicyText} />\n </div>\n )}\n </div>\n </div>\n {shouldShowCascadeOptions && (\n <div className=\"metadata-cascade-editor\">\n <div className=\"metadata-cascading-mode\">\n <FormattedMessage {...messages.cascadePolicyModeQuestion} />\n\n <div className=\"metadata-operation-not-immediate\">\n <IconAlertDefault />\n <span>\n <FormattedMessage {...messages.operationNotImmediate} />\n </span>\n </div>\n <RadioGroup\n className=\"metadata-cascading-options\"\n onChange={e => onCascadeModeChange(e.target.value === 'overwrite')}\n value={isCascadingOverwritten ? 'overwrite' : 'skip'}\n >\n <RadioButton\n isDisabled={isExistingCascadePolicy}\n label={<FormattedMessage {...messages.cascadePolicySkipMode} />}\n value=\"skip\"\n />\n <RadioButton\n isDisabled={isExistingCascadePolicy}\n label={<FormattedMessage {...messages.cascadePolicyOverwriteMode} />}\n value=\"overwrite\"\n />\n </RadioGroup>\n </div>\n </div>\n )}\n {shouldShowCascadeOptions && canUseAIFolderExtraction && (\n <div className=\"metadata-cascade-editor\" data-testid=\"ai-folder-extraction\">\n <div className=\"metadata-cascade-enable\">\n <div>\n <BoxAiColor className=\"metadata-cascade-ai-logo\" width={16} height={16} />\n <FormattedMessage tagName=\"strong\" {...messages.enableAIAutofill} />\n <Toggle\n aria-label={formatMessage(messages.enableAIAutofill)}\n className=\"metadata-cascade-toggle\"\n isOn={isAIFolderExtractionEnabled}\n isDisabled={isExistingCascadePolicy}\n label=\"\"\n onChange={e => onAIFolderExtractionToggle(e.target.checked)}\n />\n </div>\n <div className=\"cascade-policy-text\">\n <FormattedMessage {...messages.aiAutofillDescription} />\n \n <Link className=\"cascade-policy-link\" href={AI_LINK} target=\"_blank\">\n <FormattedMessage {...messages.aiAutofillLearnMore} />\n </Link>\n </div>\n {isAIFolderExtractionEnabled && (\n <div className=\"metadata-cascade-ai-agent-selector\">\n <BoxAiAgentSelectorWithApiContainer\n disabled={isExistingCascadePolicy}\n fetcher={agentFetcher}\n onSelectAgent={handleAgentSelect}\n recordAction={() => {}}\n selectorAlignment=\"left\"\n />\n </div>\n )}\n </div>\n </div>\n )}\n </>\n ) : (\n readOnlyState\n );\n};\n\nexport default CascadePolicy;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -584,7 +584,6 @@ class Instance extends React.PureComponent {
|
|
|
584
584
|
render() {
|
|
585
585
|
const {
|
|
586
586
|
canUseAIFolderExtraction = false,
|
|
587
|
-
canUseAIFolderExtractionAgentSelector = false,
|
|
588
587
|
cascadePolicy = {},
|
|
589
588
|
isDirty,
|
|
590
589
|
isCascadingPolicyApplicable,
|
|
@@ -641,7 +640,6 @@ class Instance extends React.PureComponent {
|
|
|
641
640
|
cascadePolicyConfiguration: cascadePolicy?.cascadePolicyConfiguration,
|
|
642
641
|
canEdit: isEditing && !!cascadePolicy.canEdit,
|
|
643
642
|
canUseAIFolderExtraction: canUseAIFolderExtraction,
|
|
644
|
-
canUseAIFolderExtractionAgentSelector: canUseAIFolderExtractionAgentSelector,
|
|
645
643
|
isAIFolderExtractionEnabled: isAIFolderExtractionEnabled,
|
|
646
644
|
isCascadingEnabled: isCascadingEnabled,
|
|
647
645
|
isCascadingOverwritten: isCascadingOverwritten,
|
|
@@ -55,7 +55,6 @@ import './Instance.scss';
|
|
|
55
55
|
type Props = {
|
|
56
56
|
canEdit: boolean,
|
|
57
57
|
canUseAIFolderExtraction?: boolean,
|
|
58
|
-
canUseAIFolderExtractionAgentSelector?: boolean,
|
|
59
58
|
cascadePolicy?: MetadataCascadePolicy, // eslint-disable-line
|
|
60
59
|
data: MetadataFields,
|
|
61
60
|
hasError: boolean,
|
|
@@ -642,7 +641,6 @@ class Instance extends React.PureComponent<Props, State> {
|
|
|
642
641
|
render() {
|
|
643
642
|
const {
|
|
644
643
|
canUseAIFolderExtraction = false,
|
|
645
|
-
canUseAIFolderExtractionAgentSelector = false,
|
|
646
644
|
cascadePolicy = {},
|
|
647
645
|
isDirty,
|
|
648
646
|
isCascadingPolicyApplicable,
|
|
@@ -703,9 +701,6 @@ class Instance extends React.PureComponent<Props, State> {
|
|
|
703
701
|
cascadePolicyConfiguration={cascadePolicy?.cascadePolicyConfiguration}
|
|
704
702
|
canEdit={isEditing && !!cascadePolicy.canEdit}
|
|
705
703
|
canUseAIFolderExtraction={canUseAIFolderExtraction}
|
|
706
|
-
canUseAIFolderExtractionAgentSelector={
|
|
707
|
-
canUseAIFolderExtractionAgentSelector
|
|
708
|
-
}
|
|
709
704
|
isAIFolderExtractionEnabled={isAIFolderExtractionEnabled}
|
|
710
705
|
isCascadingEnabled={isCascadingEnabled}
|
|
711
706
|
isCascadingOverwritten={isCascadingOverwritten}
|