box-ui-elements 23.3.0-beta.5 → 23.3.0-beta.7
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/openwith.js +1 -1
- package/dist/picker.js +1 -1
- package/dist/preview.css +1 -1
- package/dist/preview.js +1 -1
- package/dist/sharing.js +1 -1
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/uploader.js +1 -1
- package/es/features/metadata-instance-editor/CascadePolicy.js +60 -2
- package/es/features/metadata-instance-editor/CascadePolicy.js.flow +72 -1
- package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
- package/es/features/metadata-instance-editor/CascadePolicy.scss +15 -1
- package/es/features/metadata-instance-editor/CascadePolicy.stories.js +24 -0
- package/es/features/metadata-instance-editor/CascadePolicy.stories.js.flow +31 -0
- package/es/features/metadata-instance-editor/CascadePolicy.stories.js.map +1 -0
- package/es/features/metadata-instance-editor/Instance.js +14 -2
- package/es/features/metadata-instance-editor/Instance.js.flow +23 -3
- package/es/features/metadata-instance-editor/Instance.js.map +1 -1
- package/es/features/metadata-instance-editor/Instances.js +2 -0
- package/es/features/metadata-instance-editor/Instances.js.flow +3 -0
- package/es/features/metadata-instance-editor/Instances.js.map +1 -1
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js +2 -0
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.flow +3 -0
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.map +1 -1
- package/es/features/metadata-instance-editor/messages.js +20 -0
- package/es/features/metadata-instance-editor/messages.js.flow +26 -0
- package/es/features/metadata-instance-editor/messages.js.map +1 -1
- package/i18n/bn-IN.js +5 -0
- package/i18n/bn-IN.properties +10 -0
- package/i18n/da-DK.js +5 -0
- package/i18n/da-DK.properties +10 -0
- package/i18n/de-DE.js +5 -0
- package/i18n/de-DE.properties +10 -0
- package/i18n/en-AU.js +5 -0
- package/i18n/en-AU.properties +10 -0
- package/i18n/en-CA.js +5 -0
- package/i18n/en-CA.properties +10 -0
- package/i18n/en-GB.js +5 -0
- package/i18n/en-GB.properties +10 -0
- package/i18n/en-US.js +5 -0
- package/i18n/en-US.properties +10 -0
- package/i18n/en-x-pseudo.js +1016 -1011
- package/i18n/en-x-pseudo.properties +1021 -1011
- package/i18n/es-419.js +5 -0
- package/i18n/es-419.properties +10 -0
- package/i18n/es-ES.js +5 -0
- package/i18n/es-ES.properties +10 -0
- package/i18n/fi-FI.js +5 -0
- package/i18n/fi-FI.properties +10 -0
- package/i18n/fr-CA.js +5 -0
- package/i18n/fr-CA.properties +10 -0
- package/i18n/fr-FR.js +5 -0
- package/i18n/fr-FR.properties +10 -0
- package/i18n/hi-IN.js +5 -0
- package/i18n/hi-IN.properties +10 -0
- package/i18n/it-IT.js +5 -0
- package/i18n/it-IT.properties +10 -0
- package/i18n/ja-JP.js +5 -0
- package/i18n/ja-JP.properties +10 -0
- package/i18n/ko-KR.js +5 -0
- package/i18n/ko-KR.properties +10 -0
- package/i18n/nb-NO.js +5 -0
- package/i18n/nb-NO.properties +10 -0
- package/i18n/nl-NL.js +5 -0
- package/i18n/nl-NL.properties +10 -0
- package/i18n/pl-PL.js +5 -0
- package/i18n/pl-PL.properties +10 -0
- package/i18n/pt-BR.js +5 -0
- package/i18n/pt-BR.properties +10 -0
- package/i18n/ru-RU.js +5 -0
- package/i18n/ru-RU.properties +10 -0
- package/i18n/sv-SE.js +5 -0
- package/i18n/sv-SE.properties +10 -0
- package/i18n/tr-TR.js +5 -0
- package/i18n/tr-TR.properties +10 -0
- package/i18n/zh-CN.js +5 -0
- package/i18n/zh-CN.properties +10 -0
- package/i18n/zh-TW.js +5 -0
- package/i18n/zh-TW.properties +10 -0
- package/package.json +2 -2
- package/src/features/metadata-instance-editor/CascadePolicy.js +72 -1
- package/src/features/metadata-instance-editor/CascadePolicy.scss +15 -1
- package/src/features/metadata-instance-editor/CascadePolicy.stories.js +31 -0
- package/src/features/metadata-instance-editor/Instance.js +23 -3
- package/src/features/metadata-instance-editor/Instances.js +3 -0
- package/src/features/metadata-instance-editor/MetadataInstanceEditor.js +3 -0
- package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +51 -0
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/CascadePolicy.test.js.snap +9 -9
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap +4 -1
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instances.test.js.snap +2 -0
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/MetadataInstanceEditor.test.js.snap +1 -0
- package/src/features/metadata-instance-editor/messages.js +26 -0
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
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); }
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { FormattedMessage } from 'react-intl';
|
|
4
|
+
import { BoxAiAgentSelector } from '@box/box-ai-agent-selector';
|
|
5
|
+
import { InlineNotice, TooltipProvider } from '@box/blueprint-web';
|
|
6
|
+
import BoxAiLogo from '@box/blueprint-web-assets/icons/Logo/BoxAiLogo';
|
|
4
7
|
import Toggle from '../../components/toggle';
|
|
5
8
|
import { RadioButton, RadioGroup } from '../../components/radio';
|
|
6
9
|
import Link from '../../components/link/Link';
|
|
@@ -8,11 +11,25 @@ import IconAlertDefault from '../../icons/general/IconAlertDefault';
|
|
|
8
11
|
import messages from './messages';
|
|
9
12
|
import './CascadePolicy.scss';
|
|
10
13
|
const COMMUNITY_LINK = 'https://support.box.com/hc/en-us/articles/360044195873-Cascading-metadata-in-folders';
|
|
14
|
+
const AI_LINK = 'https://www.box.com/ai';
|
|
15
|
+
const PRICING_LINK = 'https://www.box.com/pricing';
|
|
16
|
+
const agents = [{
|
|
17
|
+
id: '1',
|
|
18
|
+
name: 'Basic',
|
|
19
|
+
isEnterpriseDefault: true
|
|
20
|
+
}, {
|
|
21
|
+
id: '2',
|
|
22
|
+
name: 'Enhanced (Gemini 2.5 Pro)',
|
|
23
|
+
isEnterpriseDefault: false
|
|
24
|
+
}];
|
|
11
25
|
const CascadePolicy = ({
|
|
12
26
|
canEdit,
|
|
27
|
+
canUseAIFolderExtraction,
|
|
13
28
|
isCascadingEnabled,
|
|
14
29
|
isCascadingOverwritten,
|
|
15
30
|
isCustomMetadata,
|
|
31
|
+
isAIFolderExtractionEnabled,
|
|
32
|
+
onAIFolderExtractionToggle,
|
|
16
33
|
onCascadeToggle,
|
|
17
34
|
onCascadeModeChange,
|
|
18
35
|
shouldShowCascadeOptions
|
|
@@ -34,7 +51,7 @@ const CascadePolicy = ({
|
|
|
34
51
|
})), !isCustomMetadata ? /*#__PURE__*/React.createElement("div", {
|
|
35
52
|
className: "cascade-policy-text"
|
|
36
53
|
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.applyCascadePolicyText), "\xA0", /*#__PURE__*/React.createElement(Link, {
|
|
37
|
-
className: "cascade-policy-
|
|
54
|
+
className: "cascade-policy-link",
|
|
38
55
|
href: COMMUNITY_LINK,
|
|
39
56
|
target: "_blank"
|
|
40
57
|
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.cascadePolicyLearnMore))) : /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.cannotApplyCascadePolicyText)))), shouldShowCascadeOptions && /*#__PURE__*/React.createElement("div", {
|
|
@@ -53,7 +70,48 @@ const CascadePolicy = ({
|
|
|
53
70
|
}), /*#__PURE__*/React.createElement(RadioButton, {
|
|
54
71
|
label: /*#__PURE__*/React.createElement(FormattedMessage, messages.cascadePolicyOverwriteMode),
|
|
55
72
|
value: "overwrite"
|
|
56
|
-
}))))
|
|
73
|
+
})))), shouldShowCascadeOptions && canUseAIFolderExtraction && /*#__PURE__*/React.createElement("div", {
|
|
74
|
+
className: "metadata-cascade-editor",
|
|
75
|
+
"data-testid": "ai-folder-extraction"
|
|
76
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
77
|
+
className: "metadata-cascade-enable"
|
|
78
|
+
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(BoxAiLogo, {
|
|
79
|
+
className: "metadata-cascade-ai-logo",
|
|
80
|
+
width: 16,
|
|
81
|
+
height: 16
|
|
82
|
+
}), /*#__PURE__*/React.createElement(FormattedMessage, _extends({
|
|
83
|
+
tagName: "strong"
|
|
84
|
+
}, messages.enableAIAutofill)), /*#__PURE__*/React.createElement(Toggle, {
|
|
85
|
+
className: "metadata-cascade-toggle",
|
|
86
|
+
isOn: isAIFolderExtractionEnabled,
|
|
87
|
+
label: "",
|
|
88
|
+
onChange: e => onAIFolderExtractionToggle(e.target.checked)
|
|
89
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
90
|
+
className: "cascade-policy-text"
|
|
91
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.aiAutofillDescription), "\xA0", /*#__PURE__*/React.createElement(Link, {
|
|
92
|
+
className: "cascade-policy-link",
|
|
93
|
+
href: AI_LINK,
|
|
94
|
+
target: "_blank"
|
|
95
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.aiAutofillLearnMore))), /*#__PURE__*/React.createElement("div", {
|
|
96
|
+
className: "metadata-cascade-ai-agent-selector"
|
|
97
|
+
}, /*#__PURE__*/React.createElement(TooltipProvider, null, /*#__PURE__*/React.createElement(BoxAiAgentSelector, {
|
|
98
|
+
agents: agents,
|
|
99
|
+
onErrorAction: () => {},
|
|
100
|
+
requestState: "success",
|
|
101
|
+
selectedAgent: agents[0],
|
|
102
|
+
variant: "sidebar"
|
|
103
|
+
}))), /*#__PURE__*/React.createElement(InlineNotice, {
|
|
104
|
+
className: "metadata-cascade-ai-notice",
|
|
105
|
+
variant: "info"
|
|
106
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.aiAutofillNotice, {
|
|
107
|
+
values: {
|
|
108
|
+
pricingLink: /*#__PURE__*/React.createElement(Link, {
|
|
109
|
+
className: "cascade-policy-link",
|
|
110
|
+
href: PRICING_LINK,
|
|
111
|
+
target: "_blank"
|
|
112
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.aiAutofillPricingDetails))
|
|
113
|
+
}
|
|
114
|
+
})))))) : readOnlyState;
|
|
57
115
|
};
|
|
58
116
|
export default CascadePolicy;
|
|
59
117
|
//# sourceMappingURL=CascadePolicy.js.map
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { FormattedMessage } from 'react-intl';
|
|
4
4
|
|
|
5
|
+
import { BoxAiAgentSelector } from '@box/box-ai-agent-selector';
|
|
6
|
+
import { InlineNotice, TooltipProvider } from '@box/blueprint-web';
|
|
7
|
+
import BoxAiLogo from '@box/blueprint-web-assets/icons/Logo/BoxAiLogo';
|
|
8
|
+
|
|
5
9
|
import Toggle from '../../components/toggle';
|
|
6
10
|
import { RadioButton, RadioGroup } from '../../components/radio';
|
|
7
11
|
import Link from '../../components/link/Link';
|
|
@@ -10,12 +14,30 @@ import messages from './messages';
|
|
|
10
14
|
import './CascadePolicy.scss';
|
|
11
15
|
|
|
12
16
|
const COMMUNITY_LINK = 'https://support.box.com/hc/en-us/articles/360044195873-Cascading-metadata-in-folders';
|
|
17
|
+
const AI_LINK = 'https://www.box.com/ai';
|
|
18
|
+
const PRICING_LINK = 'https://www.box.com/pricing';
|
|
19
|
+
|
|
20
|
+
const agents = [
|
|
21
|
+
{
|
|
22
|
+
id: '1',
|
|
23
|
+
name: 'Basic',
|
|
24
|
+
isEnterpriseDefault: true,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: '2',
|
|
28
|
+
name: 'Enhanced (Gemini 2.5 Pro)',
|
|
29
|
+
isEnterpriseDefault: false,
|
|
30
|
+
},
|
|
31
|
+
];
|
|
13
32
|
|
|
14
33
|
type Props = {
|
|
15
34
|
canEdit: boolean,
|
|
35
|
+
canUseAIFolderExtraction: boolean,
|
|
36
|
+
isAIFolderExtractionEnabled: boolean,
|
|
16
37
|
isCascadingEnabled: boolean,
|
|
17
38
|
isCascadingOverwritten: boolean,
|
|
18
39
|
isCustomMetadata: boolean,
|
|
40
|
+
onAIFolderExtractionToggle: (value: boolean) => void,
|
|
19
41
|
onCascadeModeChange: (value: boolean) => void,
|
|
20
42
|
onCascadeToggle: (value: boolean) => void,
|
|
21
43
|
shouldShowCascadeOptions: boolean,
|
|
@@ -23,9 +45,12 @@ type Props = {
|
|
|
23
45
|
|
|
24
46
|
const CascadePolicy = ({
|
|
25
47
|
canEdit,
|
|
48
|
+
canUseAIFolderExtraction,
|
|
26
49
|
isCascadingEnabled,
|
|
27
50
|
isCascadingOverwritten,
|
|
28
51
|
isCustomMetadata,
|
|
52
|
+
isAIFolderExtractionEnabled,
|
|
53
|
+
onAIFolderExtractionToggle,
|
|
29
54
|
onCascadeToggle,
|
|
30
55
|
onCascadeModeChange,
|
|
31
56
|
shouldShowCascadeOptions,
|
|
@@ -57,7 +82,7 @@ const CascadePolicy = ({
|
|
|
57
82
|
<div className="cascade-policy-text">
|
|
58
83
|
<FormattedMessage {...messages.applyCascadePolicyText} />
|
|
59
84
|
|
|
60
|
-
<Link className="cascade-policy-
|
|
85
|
+
<Link className="cascade-policy-link" href={COMMUNITY_LINK} target="_blank">
|
|
61
86
|
<FormattedMessage {...messages.cascadePolicyLearnMore} />
|
|
62
87
|
</Link>
|
|
63
88
|
</div>
|
|
@@ -96,6 +121,52 @@ const CascadePolicy = ({
|
|
|
96
121
|
</div>
|
|
97
122
|
</div>
|
|
98
123
|
)}
|
|
124
|
+
{shouldShowCascadeOptions && canUseAIFolderExtraction && (
|
|
125
|
+
<div className="metadata-cascade-editor" data-testid="ai-folder-extraction">
|
|
126
|
+
<div className="metadata-cascade-enable">
|
|
127
|
+
<div>
|
|
128
|
+
<BoxAiLogo className="metadata-cascade-ai-logo" width={16} height={16} />
|
|
129
|
+
<FormattedMessage tagName="strong" {...messages.enableAIAutofill} />
|
|
130
|
+
<Toggle
|
|
131
|
+
className="metadata-cascade-toggle"
|
|
132
|
+
isOn={isAIFolderExtractionEnabled}
|
|
133
|
+
label=""
|
|
134
|
+
onChange={e => onAIFolderExtractionToggle(e.target.checked)}
|
|
135
|
+
/>
|
|
136
|
+
</div>
|
|
137
|
+
<div className="cascade-policy-text">
|
|
138
|
+
<FormattedMessage {...messages.aiAutofillDescription} />
|
|
139
|
+
|
|
140
|
+
<Link className="cascade-policy-link" href={AI_LINK} target="_blank">
|
|
141
|
+
<FormattedMessage {...messages.aiAutofillLearnMore} />
|
|
142
|
+
</Link>
|
|
143
|
+
</div>
|
|
144
|
+
<div className="metadata-cascade-ai-agent-selector">
|
|
145
|
+
<TooltipProvider>
|
|
146
|
+
<BoxAiAgentSelector
|
|
147
|
+
agents={agents}
|
|
148
|
+
onErrorAction={() => {}}
|
|
149
|
+
requestState="success"
|
|
150
|
+
selectedAgent={agents[0]}
|
|
151
|
+
variant="sidebar"
|
|
152
|
+
/>
|
|
153
|
+
</TooltipProvider>
|
|
154
|
+
</div>
|
|
155
|
+
<InlineNotice className="metadata-cascade-ai-notice" variant="info">
|
|
156
|
+
<FormattedMessage
|
|
157
|
+
{...messages.aiAutofillNotice}
|
|
158
|
+
values={{
|
|
159
|
+
pricingLink: (
|
|
160
|
+
<Link className="cascade-policy-link" href={PRICING_LINK} target="_blank">
|
|
161
|
+
<FormattedMessage {...messages.aiAutofillPricingDetails} />
|
|
162
|
+
</Link>
|
|
163
|
+
),
|
|
164
|
+
}}
|
|
165
|
+
/>
|
|
166
|
+
</InlineNotice>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
)}
|
|
99
170
|
</>
|
|
100
171
|
) : (
|
|
101
172
|
readOnlyState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CascadePolicy.js","names":["React","FormattedMessage","Toggle","RadioButton","RadioGroup","Link","IconAlertDefault","messages","COMMUNITY_LINK","CascadePolicy","canEdit","isCascadingEnabled","isCascadingOverwritten","isCustomMetadata","onCascadeToggle","onCascadeModeChange","shouldShowCascadeOptions","readOnlyState","createElement","className","metadataCascadePolicyEnabledInfo","Fragment","_extends","tagName","enableCascadePolicy","isOn","label","onChange","e","target","checked","applyCascadePolicyText","href","cascadePolicyLearnMore","cannotApplyCascadePolicyText","cascadePolicyModeQuestion","operationNotImmediate","value","cascadePolicySkipMode","cascadePolicyOverwriteMode"],"sources":["../../../src/features/metadata-instance-editor/CascadePolicy.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\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';\n\nconst COMMUNITY_LINK = 'https://support.box.com/hc/en-us/articles/360044195873-Cascading-metadata-in-folders';\n\ntype Props = {\n canEdit: boolean,\n isCascadingEnabled: boolean,\n isCascadingOverwritten: boolean,\n isCustomMetadata: boolean,\n onCascadeModeChange: (value: boolean) => void,\n onCascadeToggle: (value: boolean) => void,\n shouldShowCascadeOptions: boolean,\n};\n\nconst CascadePolicy = ({\n canEdit,\n isCascadingEnabled,\n isCascadingOverwritten,\n isCustomMetadata,\n onCascadeToggle,\n onCascadeModeChange,\n shouldShowCascadeOptions,\n}: Props) => {\n const readOnlyState = isCascadingEnabled ? (\n <div className=\"metadata-cascade-notice\">\n <FormattedMessage {...messages.metadataCascadePolicyEnabledInfo} />\n </div>\n ) : null;\n\n return canEdit ? (\n <>\n <div className=\"metadata-cascade-editor\">\n <div className=\"metadata-cascade-enable\">\n <div>\n <FormattedMessage tagName=\"strong\" {...messages.enableCascadePolicy} />\n {!isCustomMetadata && (\n <Toggle\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-learnmore-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 label={<FormattedMessage {...messages.cascadePolicySkipMode} />}\n value=\"skip\"\n />\n <RadioButton\n label={<FormattedMessage {...messages.cascadePolicyOverwriteMode} />}\n value=\"overwrite\"\n />\n </RadioGroup>\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","FormattedMessage","BoxAiAgentSelector","InlineNotice","TooltipProvider","BoxAiLogo","Toggle","RadioButton","RadioGroup","Link","IconAlertDefault","messages","COMMUNITY_LINK","AI_LINK","PRICING_LINK","agents","id","name","isEnterpriseDefault","CascadePolicy","canEdit","canUseAIFolderExtraction","isCascadingEnabled","isCascadingOverwritten","isCustomMetadata","isAIFolderExtractionEnabled","onAIFolderExtractionToggle","onCascadeToggle","onCascadeModeChange","shouldShowCascadeOptions","readOnlyState","createElement","className","metadataCascadePolicyEnabledInfo","Fragment","_extends","tagName","enableCascadePolicy","isOn","label","onChange","e","target","checked","applyCascadePolicyText","href","cascadePolicyLearnMore","cannotApplyCascadePolicyText","cascadePolicyModeQuestion","operationNotImmediate","value","cascadePolicySkipMode","cascadePolicyOverwriteMode","width","height","enableAIAutofill","aiAutofillDescription","aiAutofillLearnMore","onErrorAction","requestState","selectedAgent","variant","aiAutofillNotice","values","pricingLink","aiAutofillPricingDetails"],"sources":["../../../src/features/metadata-instance-editor/CascadePolicy.js"],"sourcesContent":["// @flow\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { BoxAiAgentSelector } from '@box/box-ai-agent-selector';\nimport { InlineNotice, TooltipProvider } from '@box/blueprint-web';\nimport BoxAiLogo from '@box/blueprint-web-assets/icons/Logo/BoxAiLogo';\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';\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';\nconst PRICING_LINK = 'https://www.box.com/pricing';\n\nconst agents = [\n {\n id: '1',\n name: 'Basic',\n isEnterpriseDefault: true,\n },\n {\n id: '2',\n name: 'Enhanced (Gemini 2.5 Pro)',\n isEnterpriseDefault: false,\n },\n];\n\ntype Props = {\n canEdit: boolean,\n canUseAIFolderExtraction: boolean,\n isAIFolderExtractionEnabled: boolean,\n isCascadingEnabled: boolean,\n isCascadingOverwritten: boolean,\n isCustomMetadata: boolean,\n onAIFolderExtractionToggle: (value: boolean) => void,\n onCascadeModeChange: (value: boolean) => void,\n onCascadeToggle: (value: boolean) => void,\n shouldShowCascadeOptions: boolean,\n};\n\nconst CascadePolicy = ({\n canEdit,\n canUseAIFolderExtraction,\n isCascadingEnabled,\n isCascadingOverwritten,\n isCustomMetadata,\n isAIFolderExtractionEnabled,\n onAIFolderExtractionToggle,\n onCascadeToggle,\n onCascadeModeChange,\n shouldShowCascadeOptions,\n}: Props) => {\n const readOnlyState = isCascadingEnabled ? (\n <div className=\"metadata-cascade-notice\">\n <FormattedMessage {...messages.metadataCascadePolicyEnabledInfo} />\n </div>\n ) : null;\n\n return canEdit ? (\n <>\n <div className=\"metadata-cascade-editor\">\n <div className=\"metadata-cascade-enable\">\n <div>\n <FormattedMessage tagName=\"strong\" {...messages.enableCascadePolicy} />\n {!isCustomMetadata && (\n <Toggle\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 label={<FormattedMessage {...messages.cascadePolicySkipMode} />}\n value=\"skip\"\n />\n <RadioButton\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 <BoxAiLogo className=\"metadata-cascade-ai-logo\" width={16} height={16} />\n <FormattedMessage tagName=\"strong\" {...messages.enableAIAutofill} />\n <Toggle\n className=\"metadata-cascade-toggle\"\n isOn={isAIFolderExtractionEnabled}\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 <div className=\"metadata-cascade-ai-agent-selector\">\n <TooltipProvider>\n <BoxAiAgentSelector\n agents={agents}\n onErrorAction={() => {}}\n requestState=\"success\"\n selectedAgent={agents[0]}\n variant=\"sidebar\"\n />\n </TooltipProvider>\n </div>\n <InlineNotice className=\"metadata-cascade-ai-notice\" variant=\"info\">\n <FormattedMessage\n {...messages.aiAutofillNotice}\n values={{\n pricingLink: (\n <Link className=\"cascade-policy-link\" href={PRICING_LINK} target=\"_blank\">\n <FormattedMessage {...messages.aiAutofillPricingDetails} />\n </Link>\n ),\n }}\n />\n </InlineNotice>\n </div>\n </div>\n )}\n </>\n ) : (\n readOnlyState\n );\n};\n\nexport default CascadePolicy;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,6 +40,16 @@ $cascade-policy-background: #f1e2fd;
|
|
|
40
40
|
.metadata-cascade-enable {
|
|
41
41
|
margin: 10px 0;
|
|
42
42
|
padding: 14px 15px;
|
|
43
|
+
|
|
44
|
+
.metadata-cascade-ai-logo {
|
|
45
|
+
position: relative;
|
|
46
|
+
top: 3px;
|
|
47
|
+
margin-right: 3px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.metadata-cascade-ai-notice {
|
|
51
|
+
margin-top: 12px;
|
|
52
|
+
}
|
|
43
53
|
}
|
|
44
54
|
|
|
45
55
|
.toggle-container.metadata-cascade-toggle {
|
|
@@ -52,7 +62,7 @@ $cascade-policy-background: #f1e2fd;
|
|
|
52
62
|
clear: left;
|
|
53
63
|
}
|
|
54
64
|
|
|
55
|
-
.cascade-policy-
|
|
65
|
+
.cascade-policy-link {
|
|
56
66
|
color: $bdl-box-blue;
|
|
57
67
|
}
|
|
58
68
|
|
|
@@ -68,3 +78,7 @@ $cascade-policy-background: #f1e2fd;
|
|
|
68
78
|
}
|
|
69
79
|
}
|
|
70
80
|
}
|
|
81
|
+
|
|
82
|
+
.metadata-cascade-ai-agent-selector {
|
|
83
|
+
margin-top: 4px;
|
|
84
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import CascadePolicy from './CascadePolicy';
|
|
3
|
+
export const withoutAIMetadataExtraction = () => /*#__PURE__*/React.createElement(CascadePolicy, {
|
|
4
|
+
canEdit: true,
|
|
5
|
+
isCascadingEnabled: true,
|
|
6
|
+
onCascadeModeChange: () => {},
|
|
7
|
+
onCascadeToggle: () => {},
|
|
8
|
+
shouldShowCascadeOptions: true
|
|
9
|
+
});
|
|
10
|
+
export const withAIMetadataExtraction = () => /*#__PURE__*/React.createElement(CascadePolicy, {
|
|
11
|
+
canEdit: true,
|
|
12
|
+
canUseAIFolderExtraction: true,
|
|
13
|
+
isAIFolderExtractionEnabled: true,
|
|
14
|
+
isCascadingEnabled: true,
|
|
15
|
+
onAIFolderExtractionToggle: () => {},
|
|
16
|
+
onCascadeModeChange: () => {},
|
|
17
|
+
onCascadeToggle: () => {},
|
|
18
|
+
shouldShowCascadeOptions: true
|
|
19
|
+
});
|
|
20
|
+
export default {
|
|
21
|
+
title: 'Features/Metadata Instance Editor/CascadePolicy',
|
|
22
|
+
component: CascadePolicy
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=CascadePolicy.stories.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import CascadePolicy from './CascadePolicy';
|
|
4
|
+
|
|
5
|
+
export const withoutAIMetadataExtraction = () => (
|
|
6
|
+
<CascadePolicy
|
|
7
|
+
canEdit
|
|
8
|
+
isCascadingEnabled
|
|
9
|
+
onCascadeModeChange={() => {}}
|
|
10
|
+
onCascadeToggle={() => {}}
|
|
11
|
+
shouldShowCascadeOptions
|
|
12
|
+
/>
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export const withAIMetadataExtraction = () => (
|
|
16
|
+
<CascadePolicy
|
|
17
|
+
canEdit
|
|
18
|
+
canUseAIFolderExtraction
|
|
19
|
+
isAIFolderExtractionEnabled
|
|
20
|
+
isCascadingEnabled
|
|
21
|
+
onAIFolderExtractionToggle={() => {}}
|
|
22
|
+
onCascadeModeChange={() => {}}
|
|
23
|
+
onCascadeToggle={() => {}}
|
|
24
|
+
shouldShowCascadeOptions
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
export default {
|
|
29
|
+
title: 'Features/Metadata Instance Editor/CascadePolicy',
|
|
30
|
+
component: CascadePolicy,
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CascadePolicy.stories.js","names":["React","CascadePolicy","withoutAIMetadataExtraction","createElement","canEdit","isCascadingEnabled","onCascadeModeChange","onCascadeToggle","shouldShowCascadeOptions","withAIMetadataExtraction","canUseAIFolderExtraction","isAIFolderExtractionEnabled","onAIFolderExtractionToggle","title","component"],"sources":["../../../src/features/metadata-instance-editor/CascadePolicy.stories.js"],"sourcesContent":["import * as React from 'react';\n\nimport CascadePolicy from './CascadePolicy';\n\nexport const withoutAIMetadataExtraction = () => (\n <CascadePolicy\n canEdit\n isCascadingEnabled\n onCascadeModeChange={() => {}}\n onCascadeToggle={() => {}}\n shouldShowCascadeOptions\n />\n);\n\nexport const withAIMetadataExtraction = () => (\n <CascadePolicy\n canEdit\n canUseAIFolderExtraction\n isAIFolderExtractionEnabled\n isCascadingEnabled\n onAIFolderExtractionToggle={() => {}}\n onCascadeModeChange={() => {}}\n onCascadeToggle={() => {}}\n shouldShowCascadeOptions\n />\n);\n\nexport default {\n title: 'Features/Metadata Instance Editor/CascadePolicy',\n component: CascadePolicy,\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,aAAa,MAAM,iBAAiB;AAE3C,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,kBACvCF,KAAA,CAAAG,aAAA,CAACF,aAAa;EACVG,OAAO;EACPC,kBAAkB;EAClBC,mBAAmB,EAAEA,CAAA,KAAM,CAAC,CAAE;EAC9BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAE;EAC1BC,wBAAwB;AAAA,CAC3B,CACJ;AAED,OAAO,MAAMC,wBAAwB,GAAGA,CAAA,kBACpCT,KAAA,CAAAG,aAAA,CAACF,aAAa;EACVG,OAAO;EACPM,wBAAwB;EACxBC,2BAA2B;EAC3BN,kBAAkB;EAClBO,0BAA0B,EAAEA,CAAA,KAAM,CAAC,CAAE;EACrCN,mBAAmB,EAAEA,CAAA,KAAM,CAAC,CAAE;EAC9BC,eAAe,EAAEA,CAAA,KAAM,CAAC,CAAE;EAC1BC,wBAAwB;AAAA,CAC3B,CACJ;AAED,eAAe;EACXK,KAAK,EAAE,iDAAiD;EACxDC,SAAS,EAAEb;AACf,CAAC","ignoreList":[]}
|
|
@@ -239,6 +239,11 @@ class Instance extends React.PureComponent {
|
|
|
239
239
|
isCascadingOverwritten: value
|
|
240
240
|
}, this.setDirty);
|
|
241
241
|
});
|
|
242
|
+
_defineProperty(this, "onAIFolderExtractionToggle", value => {
|
|
243
|
+
this.setState({
|
|
244
|
+
isAIFolderExtractionEnabled: value
|
|
245
|
+
}, this.setDirty);
|
|
246
|
+
});
|
|
242
247
|
/**
|
|
243
248
|
* Render the correct delete message to show based on custom metadata and file/folder metadata
|
|
244
249
|
*/
|
|
@@ -382,15 +387,17 @@ class Instance extends React.PureComponent {
|
|
|
382
387
|
* @return {Object} - react state
|
|
383
388
|
*/
|
|
384
389
|
getState(props) {
|
|
390
|
+
const isCascadingEnabled = this.isCascadingEnabled(props);
|
|
385
391
|
return {
|
|
386
392
|
data: cloneDeep(props.data),
|
|
387
393
|
errors: {},
|
|
394
|
+
isAIFolderExtractionEnabled: false,
|
|
388
395
|
isBusy: false,
|
|
389
|
-
isCascadingEnabled
|
|
396
|
+
isCascadingEnabled,
|
|
390
397
|
isCascadingOverwritten: false,
|
|
391
398
|
isEditing: false,
|
|
392
399
|
shouldConfirmRemove: false,
|
|
393
|
-
shouldShowCascadeOptions:
|
|
400
|
+
shouldShowCascadeOptions: isCascadingEnabled
|
|
394
401
|
};
|
|
395
402
|
}
|
|
396
403
|
|
|
@@ -538,6 +545,7 @@ class Instance extends React.PureComponent {
|
|
|
538
545
|
}
|
|
539
546
|
render() {
|
|
540
547
|
const {
|
|
548
|
+
canUseAIFolderExtraction = false,
|
|
541
549
|
cascadePolicy = {},
|
|
542
550
|
isDirty,
|
|
543
551
|
isCascadingPolicyApplicable,
|
|
@@ -551,6 +559,7 @@ class Instance extends React.PureComponent {
|
|
|
551
559
|
data,
|
|
552
560
|
errors,
|
|
553
561
|
isBusy,
|
|
562
|
+
isAIFolderExtractionEnabled,
|
|
554
563
|
isCascadingEnabled,
|
|
555
564
|
shouldConfirmRemove,
|
|
556
565
|
shouldShowCascadeOptions,
|
|
@@ -590,9 +599,12 @@ class Instance extends React.PureComponent {
|
|
|
590
599
|
className: "metadata-instance-editor-instance"
|
|
591
600
|
}, isCascadingPolicyApplicable && /*#__PURE__*/React.createElement(CascadePolicy, {
|
|
592
601
|
canEdit: isEditing && !!cascadePolicy.canEdit,
|
|
602
|
+
canUseAIFolderExtraction: canUseAIFolderExtraction,
|
|
603
|
+
isAIFolderExtractionEnabled: isAIFolderExtractionEnabled,
|
|
593
604
|
isCascadingEnabled: isCascadingEnabled,
|
|
594
605
|
isCascadingOverwritten: isCascadingOverwritten,
|
|
595
606
|
isCustomMetadata: isProperties,
|
|
607
|
+
onAIFolderExtractionToggle: this.onAIFolderExtractionToggle,
|
|
596
608
|
onCascadeModeChange: this.onCascadeModeChange,
|
|
597
609
|
onCascadeToggle: this.onCascadeToggle,
|
|
598
610
|
shouldShowCascadeOptions: shouldShowCascadeOptions
|
|
@@ -47,6 +47,7 @@ import './Instance.scss';
|
|
|
47
47
|
|
|
48
48
|
type Props = {
|
|
49
49
|
canEdit: boolean,
|
|
50
|
+
canUseAIFolderExtraction?: boolean,
|
|
50
51
|
cascadePolicy?: MetadataCascadePolicy, // eslint-disable-line
|
|
51
52
|
data: MetadataFields,
|
|
52
53
|
hasError: boolean,
|
|
@@ -69,6 +70,7 @@ type Props = {
|
|
|
69
70
|
type State = {
|
|
70
71
|
data: Object,
|
|
71
72
|
errors: { [string]: React.Node },
|
|
73
|
+
isAIFolderExtractionEnabled: boolean,
|
|
72
74
|
isBusy: boolean,
|
|
73
75
|
isCascadingEnabled: boolean,
|
|
74
76
|
isCascadingOverwritten: boolean,
|
|
@@ -327,21 +329,28 @@ class Instance extends React.PureComponent<Props, State> {
|
|
|
327
329
|
);
|
|
328
330
|
};
|
|
329
331
|
|
|
332
|
+
onAIFolderExtractionToggle = (value: boolean) => {
|
|
333
|
+
this.setState({ isAIFolderExtractionEnabled: value }, this.setDirty);
|
|
334
|
+
};
|
|
335
|
+
|
|
330
336
|
/**
|
|
331
337
|
* Returns the state from props
|
|
332
338
|
*
|
|
333
339
|
* @return {Object} - react state
|
|
334
340
|
*/
|
|
335
341
|
getState(props: Props): State {
|
|
342
|
+
const isCascadingEnabled = this.isCascadingEnabled(props);
|
|
343
|
+
|
|
336
344
|
return {
|
|
337
345
|
data: cloneDeep(props.data),
|
|
338
346
|
errors: {},
|
|
347
|
+
isAIFolderExtractionEnabled: false,
|
|
339
348
|
isBusy: false,
|
|
340
|
-
isCascadingEnabled
|
|
349
|
+
isCascadingEnabled,
|
|
341
350
|
isCascadingOverwritten: false,
|
|
342
351
|
isEditing: false,
|
|
343
352
|
shouldConfirmRemove: false,
|
|
344
|
-
shouldShowCascadeOptions:
|
|
353
|
+
shouldShowCascadeOptions: isCascadingEnabled,
|
|
345
354
|
};
|
|
346
355
|
}
|
|
347
356
|
|
|
@@ -579,12 +588,20 @@ class Instance extends React.PureComponent<Props, State> {
|
|
|
579
588
|
};
|
|
580
589
|
|
|
581
590
|
render() {
|
|
582
|
-
const {
|
|
591
|
+
const {
|
|
592
|
+
canUseAIFolderExtraction = false,
|
|
593
|
+
cascadePolicy = {},
|
|
594
|
+
isDirty,
|
|
595
|
+
isCascadingPolicyApplicable,
|
|
596
|
+
isOpen,
|
|
597
|
+
template,
|
|
598
|
+
}: Props = this.props;
|
|
583
599
|
const { fields = [] } = template;
|
|
584
600
|
const {
|
|
585
601
|
data,
|
|
586
602
|
errors,
|
|
587
603
|
isBusy,
|
|
604
|
+
isAIFolderExtractionEnabled,
|
|
588
605
|
isCascadingEnabled,
|
|
589
606
|
shouldConfirmRemove,
|
|
590
607
|
shouldShowCascadeOptions,
|
|
@@ -629,9 +646,12 @@ class Instance extends React.PureComponent<Props, State> {
|
|
|
629
646
|
{isCascadingPolicyApplicable && (
|
|
630
647
|
<CascadePolicy
|
|
631
648
|
canEdit={isEditing && !!cascadePolicy.canEdit}
|
|
649
|
+
canUseAIFolderExtraction={canUseAIFolderExtraction}
|
|
650
|
+
isAIFolderExtractionEnabled={isAIFolderExtractionEnabled}
|
|
632
651
|
isCascadingEnabled={isCascadingEnabled}
|
|
633
652
|
isCascadingOverwritten={isCascadingOverwritten}
|
|
634
653
|
isCustomMetadata={isProperties}
|
|
654
|
+
onAIFolderExtractionToggle={this.onAIFolderExtractionToggle}
|
|
635
655
|
onCascadeModeChange={this.onCascadeModeChange}
|
|
636
656
|
onCascadeToggle={this.onCascadeToggle}
|
|
637
657
|
shouldShowCascadeOptions={shouldShowCascadeOptions}
|