box-ui-elements 23.4.0-beta.36 → 23.4.0-beta.37
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.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/es/elements/content-preview/PreviewNavigation.js +0 -2
- package/es/elements/content-preview/PreviewNavigation.js.flow +0 -2
- package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +29 -7
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +44 -5
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
- package/es/elements/content-sidebar/withSidebarAnnotations.js +141 -35
- package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +199 -37
- package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
- package/i18n/bn-IN.js +1 -1
- package/i18n/bn-IN.properties +4 -0
- package/i18n/da-DK.js +1 -1
- package/i18n/da-DK.properties +4 -0
- package/i18n/de-DE.js +1 -1
- package/i18n/de-DE.properties +4 -0
- package/i18n/en-AU.js +1 -1
- package/i18n/en-AU.properties +4 -0
- package/i18n/en-CA.js +1 -1
- package/i18n/en-CA.properties +4 -0
- package/i18n/en-GB.js +1 -1
- package/i18n/en-GB.properties +4 -0
- package/i18n/es-419.js +1 -1
- package/i18n/es-419.properties +4 -0
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.properties +4 -0
- package/i18n/fi-FI.js +1 -1
- package/i18n/fi-FI.properties +4 -0
- package/i18n/fr-CA.js +1 -1
- package/i18n/fr-CA.properties +4 -0
- package/i18n/fr-FR.js +1 -1
- package/i18n/fr-FR.properties +4 -0
- package/i18n/hi-IN.js +1 -1
- package/i18n/hi-IN.properties +4 -0
- package/i18n/it-IT.js +1 -1
- package/i18n/it-IT.properties +4 -0
- package/i18n/ja-JP.js +1 -1
- package/i18n/ja-JP.properties +4 -0
- package/i18n/ko-KR.js +1 -1
- package/i18n/ko-KR.properties +4 -0
- package/i18n/nb-NO.js +1 -1
- package/i18n/nb-NO.properties +4 -0
- package/i18n/nl-NL.js +1 -1
- package/i18n/nl-NL.properties +4 -0
- package/i18n/pl-PL.js +1 -1
- package/i18n/pl-PL.properties +4 -0
- package/i18n/pt-BR.js +1 -1
- package/i18n/pt-BR.properties +4 -0
- package/i18n/ru-RU.js +1 -1
- package/i18n/ru-RU.properties +4 -0
- package/i18n/sv-SE.js +1 -1
- package/i18n/sv-SE.properties +4 -0
- package/i18n/tr-TR.js +1 -1
- package/i18n/tr-TR.properties +4 -0
- package/i18n/zh-CN.js +1 -1
- package/i18n/zh-CN.properties +4 -0
- package/i18n/zh-TW.js +1 -1
- package/i18n/zh-TW.properties +4 -0
- package/package.json +1 -1
- package/src/elements/content-preview/PreviewNavigation.js +0 -2
- package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +12 -12
- package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.rtl.test.js +1152 -0
- package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +44 -5
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +200 -43
- package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
- package/src/elements/content-sidebar/withSidebarAnnotations.js +199 -37
- package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +0 -626
|
@@ -93,7 +93,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
93
93
|
};
|
|
94
94
|
return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeftNavigation && /*#__PURE__*/React.createElement(PlainButton, {
|
|
95
95
|
className: "bcpr-navigate-left",
|
|
96
|
-
"data-testid": "preview-navigation-left",
|
|
97
96
|
onClick: () => {
|
|
98
97
|
handleInternalNavigation();
|
|
99
98
|
onNavigateLeft();
|
|
@@ -102,7 +101,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
102
101
|
type: "button"
|
|
103
102
|
}, /*#__PURE__*/React.createElement(IconNavigateLeft, null)), hasRightNavigation && /*#__PURE__*/React.createElement(PlainButton, {
|
|
104
103
|
className: "bcpr-navigate-right",
|
|
105
|
-
"data-testid": "preview-navigation-right",
|
|
106
104
|
onClick: () => {
|
|
107
105
|
handleInternalNavigation();
|
|
108
106
|
onNavigateRight();
|
|
@@ -123,7 +123,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
123
123
|
{hasLeftNavigation && (
|
|
124
124
|
<PlainButton
|
|
125
125
|
className="bcpr-navigate-left"
|
|
126
|
-
data-testid="preview-navigation-left"
|
|
127
126
|
onClick={() => {
|
|
128
127
|
handleInternalNavigation();
|
|
129
128
|
onNavigateLeft();
|
|
@@ -137,7 +136,6 @@ const PreviewNavigationWithoutRouter = ({
|
|
|
137
136
|
{hasRightNavigation && (
|
|
138
137
|
<PlainButton
|
|
139
138
|
className="bcpr-navigate-right"
|
|
140
|
-
data-testid="preview-navigation-right"
|
|
141
139
|
onClick={() => {
|
|
142
140
|
handleInternalNavigation();
|
|
143
141
|
onNavigateRight();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewNavigation.js","names":["React","injectIntl","Route","IconNavigateLeft","IconNavigateRight","PlainButton","messages","SIDEBAR_VIEW_METADATA","PreviewNavigationWithRouter","collection","currentIndex","intl","onNavigateLeft","onNavigateRight","hasLeftNavigation","length","hasRightNavigation","goToActiveSidebarTab","routeParams","history","deeplink","activeTab","push","createElement","path","match","Fragment","className","onClick","params","title","formatMessage","previousFile","type","nextFile","PreviewNavigationWithoutRouter","internalSidebarNavigation","internalSidebarNavigationHandler","handleInternalNavigation","sidebar","rest","_objectWithoutProperties","_excluded","hasDeeplink","Object","keys","PreviewNavigation","props","routerDisabled"],"sources":["../../../src/elements/content-preview/PreviewNavigation.js"],"sourcesContent":["/**\n * @flow\n * @file Preview Navigation\n * @author Box\n */\n\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport IconNavigateLeft from '../../icons/general/IconNavigateLeft';\nimport IconNavigateRight from '../../icons/general/IconNavigateRight';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport messages from '../common/messages';\nimport type { BoxItem } from '../../common/types/core';\nimport { SIDEBAR_VIEW_METADATA } from '../../constants';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype Props = {\n collection: Array<string | BoxItem>,\n currentIndex: number,\n intl: IntlShape,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onNavigateLeft: Function,\n onNavigateRight: Function,\n routerDisabled?: boolean,\n};\n\nconst PreviewNavigationWithRouter = ({\n collection = [],\n currentIndex,\n intl,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const goToActiveSidebarTab = (routeParams, history) => {\n if (routeParams.deeplink) {\n if (routeParams.activeTab === SIDEBAR_VIEW_METADATA) {\n history.push(`/${routeParams.activeTab}/${routeParams.deeplink}/${routeParams[0]}`);\n } else {\n history.push(`/${routeParams.activeTab}`);\n }\n }\n };\n\n return (\n <Route path={['/:activeTab/:deeplink/*', '/']}>\n {({ match, history }) => (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n )}\n </Route>\n );\n};\n\nconst PreviewNavigationWithoutRouter = ({\n collection = [],\n currentIndex,\n intl,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const handleInternalNavigation = () => {\n if (internalSidebarNavigationHandler && internalSidebarNavigation && internalSidebarNavigation.sidebar) {\n const { sidebar, ...rest } = internalSidebarNavigation;\n const hasDeeplink = Object.keys(rest).length > 0;\n\n if (hasDeeplink && sidebar === SIDEBAR_VIEW_METADATA) {\n internalSidebarNavigationHandler(internalSidebarNavigation);\n } else {\n internalSidebarNavigationHandler({ sidebar });\n }\n }\n };\n\n return (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n );\n};\n\nconst PreviewNavigation = (props: Props) => {\n const { routerDisabled = false } = props;\n\n if (routerDisabled) {\n return <PreviewNavigationWithoutRouter {...props} />;\n }\n\n return <PreviewNavigationWithRouter {...props} />;\n};\n\nexport default injectIntl(PreviewNavigation);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PreviewNavigation.js","names":["React","injectIntl","Route","IconNavigateLeft","IconNavigateRight","PlainButton","messages","SIDEBAR_VIEW_METADATA","PreviewNavigationWithRouter","collection","currentIndex","intl","onNavigateLeft","onNavigateRight","hasLeftNavigation","length","hasRightNavigation","goToActiveSidebarTab","routeParams","history","deeplink","activeTab","push","createElement","path","match","Fragment","className","onClick","params","title","formatMessage","previousFile","type","nextFile","PreviewNavigationWithoutRouter","internalSidebarNavigation","internalSidebarNavigationHandler","handleInternalNavigation","sidebar","rest","_objectWithoutProperties","_excluded","hasDeeplink","Object","keys","PreviewNavigation","props","routerDisabled"],"sources":["../../../src/elements/content-preview/PreviewNavigation.js"],"sourcesContent":["/**\n * @flow\n * @file Preview Navigation\n * @author Box\n */\n\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport IconNavigateLeft from '../../icons/general/IconNavigateLeft';\nimport IconNavigateRight from '../../icons/general/IconNavigateRight';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport messages from '../common/messages';\nimport type { BoxItem } from '../../common/types/core';\nimport { SIDEBAR_VIEW_METADATA } from '../../constants';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype Props = {\n collection: Array<string | BoxItem>,\n currentIndex: number,\n intl: IntlShape,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onNavigateLeft: Function,\n onNavigateRight: Function,\n routerDisabled?: boolean,\n};\n\nconst PreviewNavigationWithRouter = ({\n collection = [],\n currentIndex,\n intl,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const goToActiveSidebarTab = (routeParams, history) => {\n if (routeParams.deeplink) {\n if (routeParams.activeTab === SIDEBAR_VIEW_METADATA) {\n history.push(`/${routeParams.activeTab}/${routeParams.deeplink}/${routeParams[0]}`);\n } else {\n history.push(`/${routeParams.activeTab}`);\n }\n }\n };\n\n return (\n <Route path={['/:activeTab/:deeplink/*', '/']}>\n {({ match, history }) => (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n )}\n </Route>\n );\n};\n\nconst PreviewNavigationWithoutRouter = ({\n collection = [],\n currentIndex,\n intl,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const handleInternalNavigation = () => {\n if (internalSidebarNavigationHandler && internalSidebarNavigation && internalSidebarNavigation.sidebar) {\n const { sidebar, ...rest } = internalSidebarNavigation;\n const hasDeeplink = Object.keys(rest).length > 0;\n\n if (hasDeeplink && sidebar === SIDEBAR_VIEW_METADATA) {\n internalSidebarNavigationHandler(internalSidebarNavigation);\n } else {\n internalSidebarNavigationHandler({ sidebar });\n }\n }\n };\n\n return (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n );\n};\n\nconst PreviewNavigation = (props: Props) => {\n const { routerDisabled = false } = props;\n\n if (routerDisabled) {\n return <PreviewNavigationWithoutRouter {...props} />;\n }\n\n return <PreviewNavigationWithRouter {...props} />;\n};\n\nexport default injectIntl(PreviewNavigation);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -176,11 +176,24 @@ class VersionsSidebarContainer extends React.Component {
|
|
|
176
176
|
_defineProperty(this, "updateVersion", versionId => {
|
|
177
177
|
const {
|
|
178
178
|
history,
|
|
179
|
-
match
|
|
179
|
+
match,
|
|
180
|
+
routerDisabled,
|
|
181
|
+
internalSidebarNavigationHandler,
|
|
182
|
+
internalSidebarNavigation
|
|
180
183
|
} = this.props;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
if (routerDisabled && internalSidebarNavigationHandler) {
|
|
185
|
+
const navigationUpdate = _objectSpread({}, internalSidebarNavigation);
|
|
186
|
+
if (versionId) {
|
|
187
|
+
navigationUpdate.versionId = versionId;
|
|
188
|
+
} else {
|
|
189
|
+
delete navigationUpdate.versionId;
|
|
190
|
+
}
|
|
191
|
+
internalSidebarNavigationHandler(navigationUpdate);
|
|
192
|
+
} else {
|
|
193
|
+
history.push(generatePath(match.path, _objectSpread(_objectSpread({}, match.params), {}, {
|
|
194
|
+
versionId
|
|
195
|
+
})));
|
|
196
|
+
}
|
|
184
197
|
});
|
|
185
198
|
_defineProperty(this, "updateVersionToCurrent", () => {
|
|
186
199
|
this.updateVersion(this.getCurrentVersionId());
|
|
@@ -241,22 +254,31 @@ class VersionsSidebarContainer extends React.Component {
|
|
|
241
254
|
const {
|
|
242
255
|
fileId,
|
|
243
256
|
parentName,
|
|
244
|
-
onUpgradeClick
|
|
257
|
+
onUpgradeClick,
|
|
258
|
+
routerDisabled,
|
|
259
|
+
internalSidebarNavigation,
|
|
260
|
+
internalSidebarNavigationHandler
|
|
245
261
|
} = this.props;
|
|
246
262
|
if (onUpgradeClick) {
|
|
247
263
|
return /*#__PURE__*/React.createElement(StaticVersionsSidebar, _extends({
|
|
248
264
|
onUpgradeClick: onUpgradeClick,
|
|
249
|
-
parentName: parentName
|
|
265
|
+
parentName: parentName,
|
|
266
|
+
routerDisabled: routerDisabled,
|
|
267
|
+
internalSidebarNavigation: internalSidebarNavigation,
|
|
268
|
+
internalSidebarNavigationHandler: internalSidebarNavigationHandler
|
|
250
269
|
}, this.state));
|
|
251
270
|
}
|
|
252
271
|
return /*#__PURE__*/React.createElement(VersionsSidebar, _extends({
|
|
253
272
|
fileId: fileId,
|
|
273
|
+
internalSidebarNavigation: internalSidebarNavigation,
|
|
274
|
+
internalSidebarNavigationHandler: internalSidebarNavigationHandler,
|
|
254
275
|
onDelete: this.handleActionDelete,
|
|
255
276
|
onDownload: this.handleActionDownload,
|
|
256
277
|
onPreview: this.handleActionPreview,
|
|
257
278
|
onPromote: this.handleActionPromote,
|
|
258
279
|
onRestore: this.handleActionRestore,
|
|
259
|
-
parentName: parentName
|
|
280
|
+
parentName: parentName,
|
|
281
|
+
routerDisabled: routerDisabled
|
|
260
282
|
}, this.state));
|
|
261
283
|
}
|
|
262
284
|
}
|
|
@@ -24,7 +24,12 @@ import { withAPIContext } from '../../common/api-context';
|
|
|
24
24
|
import type { FeatureConfig } from '../../common/feature-checking';
|
|
25
25
|
import type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';
|
|
26
26
|
import type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
ViewType,
|
|
29
|
+
type ViewTypeValues,
|
|
30
|
+
type InternalSidebarNavigation,
|
|
31
|
+
type InternalSidebarNavigationHandler,
|
|
32
|
+
} from '../../common/types/SidebarNavigation';
|
|
28
33
|
|
|
29
34
|
type Props = {
|
|
30
35
|
api: API,
|
|
@@ -32,6 +37,8 @@ type Props = {
|
|
|
32
37
|
fileId: string,
|
|
33
38
|
hasSidebarInitialized?: boolean,
|
|
34
39
|
history: RouterHistory,
|
|
40
|
+
internalSidebarNavigation?: InternalSidebarNavigation,
|
|
41
|
+
internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
|
|
35
42
|
match: Match,
|
|
36
43
|
onLoad: SidebarLoadCallback,
|
|
37
44
|
onUpgradeClick?: () => void,
|
|
@@ -42,6 +49,7 @@ type Props = {
|
|
|
42
49
|
onVersionPromote: VersionActionCallback,
|
|
43
50
|
onVersionRestore: VersionActionCallback,
|
|
44
51
|
parentName: ViewTypeValues,
|
|
52
|
+
routerDisabled?: boolean,
|
|
45
53
|
versionId?: string,
|
|
46
54
|
};
|
|
47
55
|
|
|
@@ -264,8 +272,20 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
|
|
|
264
272
|
}
|
|
265
273
|
|
|
266
274
|
updateVersion = (versionId?: ?string): void => {
|
|
267
|
-
const { history, match } =
|
|
268
|
-
|
|
275
|
+
const { history, match, routerDisabled, internalSidebarNavigationHandler, internalSidebarNavigation } =
|
|
276
|
+
this.props;
|
|
277
|
+
|
|
278
|
+
if (routerDisabled && internalSidebarNavigationHandler) {
|
|
279
|
+
const navigationUpdate: InternalSidebarNavigation = { ...internalSidebarNavigation };
|
|
280
|
+
if (versionId) {
|
|
281
|
+
navigationUpdate.versionId = versionId;
|
|
282
|
+
} else {
|
|
283
|
+
delete navigationUpdate.versionId;
|
|
284
|
+
}
|
|
285
|
+
internalSidebarNavigationHandler(navigationUpdate);
|
|
286
|
+
} else {
|
|
287
|
+
history.push(generatePath(match.path, { ...match.params, versionId }));
|
|
288
|
+
}
|
|
269
289
|
};
|
|
270
290
|
|
|
271
291
|
updateVersionToCurrent = (): void => {
|
|
@@ -287,21 +307,40 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
|
|
|
287
307
|
};
|
|
288
308
|
|
|
289
309
|
render() {
|
|
290
|
-
const {
|
|
310
|
+
const {
|
|
311
|
+
fileId,
|
|
312
|
+
parentName,
|
|
313
|
+
onUpgradeClick,
|
|
314
|
+
routerDisabled,
|
|
315
|
+
internalSidebarNavigation,
|
|
316
|
+
internalSidebarNavigationHandler,
|
|
317
|
+
} = this.props;
|
|
291
318
|
|
|
292
319
|
if (onUpgradeClick) {
|
|
293
|
-
return
|
|
320
|
+
return (
|
|
321
|
+
<StaticVersionsSidebar
|
|
322
|
+
onUpgradeClick={onUpgradeClick}
|
|
323
|
+
parentName={parentName}
|
|
324
|
+
routerDisabled={routerDisabled}
|
|
325
|
+
internalSidebarNavigation={internalSidebarNavigation}
|
|
326
|
+
internalSidebarNavigationHandler={internalSidebarNavigationHandler}
|
|
327
|
+
{...this.state}
|
|
328
|
+
/>
|
|
329
|
+
);
|
|
294
330
|
}
|
|
295
331
|
|
|
296
332
|
return (
|
|
297
333
|
<VersionsSidebar
|
|
298
334
|
fileId={fileId}
|
|
335
|
+
internalSidebarNavigation={internalSidebarNavigation}
|
|
336
|
+
internalSidebarNavigationHandler={internalSidebarNavigationHandler}
|
|
299
337
|
onDelete={this.handleActionDelete}
|
|
300
338
|
onDownload={this.handleActionDownload}
|
|
301
339
|
onPreview={this.handleActionPreview}
|
|
302
340
|
onPromote={this.handleActionPromote}
|
|
303
341
|
onRestore={this.handleActionRestore}
|
|
304
342
|
parentName={parentName}
|
|
343
|
+
routerDisabled={routerDisabled}
|
|
305
344
|
{...this.state}
|
|
306
345
|
/>
|
|
307
346
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionsSidebarContainer.js","names":["React","flow","getProp","merge","noop","generatePath","withRouter","withFeatureConsumer","isFeatureEnabled","API","FIELD_METADATA_ARCHIVE","messages","openUrlInsideIframe","StaticVersionsSidebar","VersionsSidebar","VersionsSidebarAPI","withAPIContext","ViewType","VersionsSidebarContainer","Component","constructor","args","_defineProperty","isArchived","isLoading","isWatermarked","versionCount","Infinity","versionLimit","versions","window","versionId","setState","api","deleteVersion","findVersion","then","fetchVersion","handleDeleteSuccess","props","onVersionDelete","catch","handleActionError","versionActionDeleteError","fetchDownloadUrl","onVersionDownload","versionActionDownloadError","updateVersion","onVersionPreview","promoteVersion","fetchData","handleFetchSuccess","handlePromoteSuccess","onVersionPromote","versionActionPromoteError","restoreVersion","handleRestoreSuccess","onVersionRestore","versionActionRestoreError","message","error","data","selectedVersionId","id","mergeResponse","updateVersionToCurrent","versionFetchError","fileResponse","versionsResponse","version_limit","undefined","versionsWithPermissions","getVersionsAPI","addPermissions","entries","total_count","sortVersions","verifyVersion","file","file_version","fileVersion","features","fileId","isArchiveFeatureEnabled","handleFetchError","state","find","version","newVersion","newVersionId","map","_objectSpread","newVersions","mergeVersions","history","match","push","path","params","getCurrentVersionId","onVersionChange","selectedVersion","currentVersionId","componentDidMount","onLoad","initialize","component","feature","componentDidUpdate","prevFileId","prevVersionId","refresh","sort","a","b","Date","parse","created_at","render","parentName","onUpgradeClick","createElement","_extends","onDelete","handleActionDelete","onDownload","handleActionDownload","onPreview","handleActionPreview","onPromote","handleActionPromote","onRestore","handleActionRestore","DETAILS","VersionsSidebarContainerComponent"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebarContainer.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar container\n * @author Box\n */\n\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport merge from 'lodash/merge';\nimport noop from 'lodash/noop';\nimport { generatePath, withRouter } from 'react-router-dom';\nimport type { Match, RouterHistory } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport { withFeatureConsumer, isFeatureEnabled } from '../../common/feature-checking';\nimport API from '../../../api';\nimport { FIELD_METADATA_ARCHIVE } from '../../../constants';\nimport messages from './messages';\nimport openUrlInsideIframe from '../../../utils/iframe';\nimport StaticVersionsSidebar from './StaticVersionSidebar';\nimport VersionsSidebar from './VersionsSidebar';\nimport VersionsSidebarAPI from './VersionsSidebarAPI';\nimport { withAPIContext } from '../../common/api-context';\nimport type { FeatureConfig } from '../../common/feature-checking';\nimport type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';\nimport type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';\nimport { ViewType, type ViewTypeValues } from '../../common/types/SidebarNavigation';\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n fileId: string,\n hasSidebarInitialized?: boolean,\n history: RouterHistory,\n match: Match,\n onLoad: SidebarLoadCallback,\n onUpgradeClick?: () => void,\n onVersionChange: VersionChangeCallback,\n onVersionDelete: VersionActionCallback,\n onVersionDownload: VersionActionCallback,\n onVersionPreview: VersionActionCallback,\n onVersionPromote: VersionActionCallback,\n onVersionRestore: VersionActionCallback,\n parentName: ViewTypeValues,\n versionId?: string,\n};\n\ntype State = {\n error?: MessageDescriptor,\n isArchived: boolean,\n isLoading: boolean,\n isWatermarked: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nclass VersionsSidebarContainer extends React.Component<Props, State> {\n static defaultProps = {\n onLoad: noop,\n onVersionChange: noop,\n onVersionDelete: noop,\n onVersionDownload: noop,\n onVersionPreview: noop,\n onVersionPromote: noop,\n onVersionRestore: noop,\n parentName: ViewType.DETAILS,\n };\n\n api: VersionsSidebarAPI;\n\n props: Props;\n\n state: State = {\n isArchived: false,\n isLoading: true,\n isWatermarked: false,\n versionCount: Infinity,\n versionLimit: Infinity,\n versions: [],\n };\n\n window: any = window;\n\n componentDidMount() {\n const { onLoad } = this.props;\n this.initialize();\n this.fetchData().then(() => {\n onLoad({ component: 'preview', feature: 'versions' });\n });\n }\n\n componentDidUpdate({ fileId: prevFileId, versionId: prevVersionId }: Props) {\n const { fileId, versionId } = this.props;\n\n if (fileId !== prevFileId) {\n this.refresh();\n }\n\n if (versionId !== prevVersionId) {\n this.verifyVersion();\n }\n }\n\n handleActionDelete = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .deleteVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleDeleteSuccess)\n .then(() => this.props.onVersionDelete(versionId))\n .catch(() => this.handleActionError(messages.versionActionDeleteError));\n };\n\n handleActionDownload = (versionId: string): Promise<void> => {\n return this.api\n .fetchDownloadUrl(this.findVersion(versionId))\n .then(openUrlInsideIframe)\n .then(() => this.props.onVersionDownload(versionId))\n .catch(() => this.handleActionError(messages.versionActionDownloadError));\n };\n\n handleActionPreview = (versionId: string): void => {\n this.updateVersion(versionId);\n this.props.onVersionPreview(versionId);\n };\n\n handleActionPromote = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .promoteVersion(this.findVersion(versionId))\n .then(this.api.fetchData)\n .then(this.handleFetchSuccess)\n .then(this.handlePromoteSuccess)\n .then(() => this.props.onVersionPromote(versionId))\n .catch(() => this.handleActionError(messages.versionActionPromoteError));\n };\n\n handleActionRestore = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .restoreVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleRestoreSuccess)\n .then(() => this.props.onVersionRestore(versionId))\n .catch(() => this.handleActionError(messages.versionActionRestoreError));\n };\n\n handleActionError = (message: MessageDescriptor): void => {\n this.setState({\n error: message,\n isLoading: false,\n });\n };\n\n handleDeleteSuccess = (data: BoxItemVersion): void => {\n const { versionId: selectedVersionId } = this.props;\n const { id: versionId } = data;\n\n this.mergeResponse(data);\n\n // Bump the user to the current version if they deleted their selected version\n if (versionId === selectedVersionId) {\n this.updateVersionToCurrent();\n }\n };\n\n handleRestoreSuccess = (data: BoxItemVersion): void => {\n this.mergeResponse(data);\n };\n\n handleFetchError = (): void => {\n this.setState({\n error: messages.versionFetchError,\n isArchived: false,\n isLoading: false,\n isWatermarked: false,\n versionCount: 0,\n versions: [],\n });\n };\n\n handleFetchSuccess = ([fileResponse, versionsResponse]: [BoxItem, FileVersions]): [BoxItem, FileVersions] => {\n const { api } = this.props;\n const { version_limit } = fileResponse;\n const isArchived = !!getProp(fileResponse, FIELD_METADATA_ARCHIVE);\n const isWatermarked = getProp(fileResponse, 'watermark_info.is_watermarked', false);\n const versionLimit = version_limit !== null && version_limit !== undefined ? version_limit : Infinity;\n const versionsWithPermissions = api.getVersionsAPI(false).addPermissions(versionsResponse, fileResponse) || {};\n const { entries: versions, total_count: versionCount } = versionsWithPermissions;\n\n this.setState(\n {\n error: undefined,\n isArchived,\n isLoading: false,\n isWatermarked,\n versionCount,\n versionLimit,\n versions: this.sortVersions(versions),\n },\n this.verifyVersion,\n );\n\n return [fileResponse, versionsResponse];\n };\n\n handlePromoteSuccess = ([file]: [BoxItem, FileVersions]): void => {\n const { file_version: fileVersion } = file;\n\n if (fileVersion) {\n this.updateVersion(fileVersion.id);\n }\n };\n\n initialize = (): void => {\n const { api, features, fileId }: Props = this.props;\n const isArchiveFeatureEnabled = isFeatureEnabled(features, 'contentSidebar.archive.enabled');\n\n this.api = new VersionsSidebarAPI({ api, fileId, isArchiveFeatureEnabled });\n };\n\n fetchData = (): Promise<?[BoxItem, FileVersions]> => {\n return this.api.fetchData().then(this.handleFetchSuccess).catch(this.handleFetchError);\n };\n\n findVersion = (versionId: ?string): ?BoxItemVersion => {\n const { versions } = this.state;\n\n return versions.find(version => version.id === versionId);\n };\n\n getCurrentVersionId = (): ?string => {\n const { versions } = this.state;\n return versions[0] ? versions[0].id : null;\n };\n\n mergeVersions = (newVersion: BoxItemVersion): Array<BoxItemVersion> => {\n const { versions } = this.state;\n const newVersionId = newVersion ? newVersion.id : '';\n return versions.map(version => (version.id === newVersionId ? merge({ ...version }, newVersion) : version));\n };\n\n mergeResponse = (data: BoxItemVersion): void => {\n const newVersions = this.mergeVersions(data);\n\n this.setState({\n error: undefined,\n isLoading: false,\n versions: newVersions,\n });\n };\n\n refresh(): void {\n this.initialize();\n this.setState({ isLoading: true }, this.fetchData);\n }\n\n sortVersions(versions?: Array<BoxItemVersion> = []): Array<BoxItemVersion> {\n return [...versions].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at));\n }\n\n updateVersion = (versionId?: ?string): void => {\n const { history, match } = this.props;\n return history.push(generatePath(match.path, { ...match.params, versionId }));\n };\n\n updateVersionToCurrent = (): void => {\n this.updateVersion(this.getCurrentVersionId());\n };\n\n verifyVersion = () => {\n const { onVersionChange, versionId } = this.props;\n const selectedVersion = this.findVersion(versionId);\n\n if (selectedVersion) {\n onVersionChange(selectedVersion, {\n currentVersionId: this.getCurrentVersionId(),\n updateVersionToCurrent: this.updateVersionToCurrent,\n });\n } else {\n this.updateVersionToCurrent();\n }\n };\n\n render() {\n const { fileId, parentName, onUpgradeClick } = this.props;\n\n if (onUpgradeClick) {\n return <StaticVersionsSidebar onUpgradeClick={onUpgradeClick} parentName={parentName} {...this.state} />;\n }\n\n return (\n <VersionsSidebar\n fileId={fileId}\n onDelete={this.handleActionDelete}\n onDownload={this.handleActionDownload}\n onPreview={this.handleActionPreview}\n onPromote={this.handleActionPromote}\n onRestore={this.handleActionRestore}\n parentName={parentName}\n {...this.state}\n />\n );\n }\n}\n\nexport type VersionsSidebarProps = Props;\nexport { VersionsSidebarContainer as VersionsSidebarContainerComponent };\nexport default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VersionsSidebarContainer.js","names":["React","flow","getProp","merge","noop","generatePath","withRouter","withFeatureConsumer","isFeatureEnabled","API","FIELD_METADATA_ARCHIVE","messages","openUrlInsideIframe","StaticVersionsSidebar","VersionsSidebar","VersionsSidebarAPI","withAPIContext","ViewType","VersionsSidebarContainer","Component","constructor","args","_defineProperty","isArchived","isLoading","isWatermarked","versionCount","Infinity","versionLimit","versions","window","versionId","setState","api","deleteVersion","findVersion","then","fetchVersion","handleDeleteSuccess","props","onVersionDelete","catch","handleActionError","versionActionDeleteError","fetchDownloadUrl","onVersionDownload","versionActionDownloadError","updateVersion","onVersionPreview","promoteVersion","fetchData","handleFetchSuccess","handlePromoteSuccess","onVersionPromote","versionActionPromoteError","restoreVersion","handleRestoreSuccess","onVersionRestore","versionActionRestoreError","message","error","data","selectedVersionId","id","mergeResponse","updateVersionToCurrent","versionFetchError","fileResponse","versionsResponse","version_limit","undefined","versionsWithPermissions","getVersionsAPI","addPermissions","entries","total_count","sortVersions","verifyVersion","file","file_version","fileVersion","features","fileId","isArchiveFeatureEnabled","handleFetchError","state","find","version","newVersion","newVersionId","map","_objectSpread","newVersions","mergeVersions","history","match","routerDisabled","internalSidebarNavigationHandler","internalSidebarNavigation","navigationUpdate","push","path","params","getCurrentVersionId","onVersionChange","selectedVersion","currentVersionId","componentDidMount","onLoad","initialize","component","feature","componentDidUpdate","prevFileId","prevVersionId","refresh","sort","a","b","Date","parse","created_at","render","parentName","onUpgradeClick","createElement","_extends","onDelete","handleActionDelete","onDownload","handleActionDownload","onPreview","handleActionPreview","onPromote","handleActionPromote","onRestore","handleActionRestore","DETAILS","VersionsSidebarContainerComponent"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebarContainer.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar container\n * @author Box\n */\n\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport merge from 'lodash/merge';\nimport noop from 'lodash/noop';\nimport { generatePath, withRouter } from 'react-router-dom';\nimport type { Match, RouterHistory } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport { withFeatureConsumer, isFeatureEnabled } from '../../common/feature-checking';\nimport API from '../../../api';\nimport { FIELD_METADATA_ARCHIVE } from '../../../constants';\nimport messages from './messages';\nimport openUrlInsideIframe from '../../../utils/iframe';\nimport StaticVersionsSidebar from './StaticVersionSidebar';\nimport VersionsSidebar from './VersionsSidebar';\nimport VersionsSidebarAPI from './VersionsSidebarAPI';\nimport { withAPIContext } from '../../common/api-context';\nimport type { FeatureConfig } from '../../common/feature-checking';\nimport type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';\nimport type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';\nimport {\n ViewType,\n type ViewTypeValues,\n type InternalSidebarNavigation,\n type InternalSidebarNavigationHandler,\n} from '../../common/types/SidebarNavigation';\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n fileId: string,\n hasSidebarInitialized?: boolean,\n history: RouterHistory,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n match: Match,\n onLoad: SidebarLoadCallback,\n onUpgradeClick?: () => void,\n onVersionChange: VersionChangeCallback,\n onVersionDelete: VersionActionCallback,\n onVersionDownload: VersionActionCallback,\n onVersionPreview: VersionActionCallback,\n onVersionPromote: VersionActionCallback,\n onVersionRestore: VersionActionCallback,\n parentName: ViewTypeValues,\n routerDisabled?: boolean,\n versionId?: string,\n};\n\ntype State = {\n error?: MessageDescriptor,\n isArchived: boolean,\n isLoading: boolean,\n isWatermarked: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nclass VersionsSidebarContainer extends React.Component<Props, State> {\n static defaultProps = {\n onLoad: noop,\n onVersionChange: noop,\n onVersionDelete: noop,\n onVersionDownload: noop,\n onVersionPreview: noop,\n onVersionPromote: noop,\n onVersionRestore: noop,\n parentName: ViewType.DETAILS,\n };\n\n api: VersionsSidebarAPI;\n\n props: Props;\n\n state: State = {\n isArchived: false,\n isLoading: true,\n isWatermarked: false,\n versionCount: Infinity,\n versionLimit: Infinity,\n versions: [],\n };\n\n window: any = window;\n\n componentDidMount() {\n const { onLoad } = this.props;\n this.initialize();\n this.fetchData().then(() => {\n onLoad({ component: 'preview', feature: 'versions' });\n });\n }\n\n componentDidUpdate({ fileId: prevFileId, versionId: prevVersionId }: Props) {\n const { fileId, versionId } = this.props;\n\n if (fileId !== prevFileId) {\n this.refresh();\n }\n\n if (versionId !== prevVersionId) {\n this.verifyVersion();\n }\n }\n\n handleActionDelete = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .deleteVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleDeleteSuccess)\n .then(() => this.props.onVersionDelete(versionId))\n .catch(() => this.handleActionError(messages.versionActionDeleteError));\n };\n\n handleActionDownload = (versionId: string): Promise<void> => {\n return this.api\n .fetchDownloadUrl(this.findVersion(versionId))\n .then(openUrlInsideIframe)\n .then(() => this.props.onVersionDownload(versionId))\n .catch(() => this.handleActionError(messages.versionActionDownloadError));\n };\n\n handleActionPreview = (versionId: string): void => {\n this.updateVersion(versionId);\n this.props.onVersionPreview(versionId);\n };\n\n handleActionPromote = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .promoteVersion(this.findVersion(versionId))\n .then(this.api.fetchData)\n .then(this.handleFetchSuccess)\n .then(this.handlePromoteSuccess)\n .then(() => this.props.onVersionPromote(versionId))\n .catch(() => this.handleActionError(messages.versionActionPromoteError));\n };\n\n handleActionRestore = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .restoreVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleRestoreSuccess)\n .then(() => this.props.onVersionRestore(versionId))\n .catch(() => this.handleActionError(messages.versionActionRestoreError));\n };\n\n handleActionError = (message: MessageDescriptor): void => {\n this.setState({\n error: message,\n isLoading: false,\n });\n };\n\n handleDeleteSuccess = (data: BoxItemVersion): void => {\n const { versionId: selectedVersionId } = this.props;\n const { id: versionId } = data;\n\n this.mergeResponse(data);\n\n // Bump the user to the current version if they deleted their selected version\n if (versionId === selectedVersionId) {\n this.updateVersionToCurrent();\n }\n };\n\n handleRestoreSuccess = (data: BoxItemVersion): void => {\n this.mergeResponse(data);\n };\n\n handleFetchError = (): void => {\n this.setState({\n error: messages.versionFetchError,\n isArchived: false,\n isLoading: false,\n isWatermarked: false,\n versionCount: 0,\n versions: [],\n });\n };\n\n handleFetchSuccess = ([fileResponse, versionsResponse]: [BoxItem, FileVersions]): [BoxItem, FileVersions] => {\n const { api } = this.props;\n const { version_limit } = fileResponse;\n const isArchived = !!getProp(fileResponse, FIELD_METADATA_ARCHIVE);\n const isWatermarked = getProp(fileResponse, 'watermark_info.is_watermarked', false);\n const versionLimit = version_limit !== null && version_limit !== undefined ? version_limit : Infinity;\n const versionsWithPermissions = api.getVersionsAPI(false).addPermissions(versionsResponse, fileResponse) || {};\n const { entries: versions, total_count: versionCount } = versionsWithPermissions;\n\n this.setState(\n {\n error: undefined,\n isArchived,\n isLoading: false,\n isWatermarked,\n versionCount,\n versionLimit,\n versions: this.sortVersions(versions),\n },\n this.verifyVersion,\n );\n\n return [fileResponse, versionsResponse];\n };\n\n handlePromoteSuccess = ([file]: [BoxItem, FileVersions]): void => {\n const { file_version: fileVersion } = file;\n\n if (fileVersion) {\n this.updateVersion(fileVersion.id);\n }\n };\n\n initialize = (): void => {\n const { api, features, fileId }: Props = this.props;\n const isArchiveFeatureEnabled = isFeatureEnabled(features, 'contentSidebar.archive.enabled');\n\n this.api = new VersionsSidebarAPI({ api, fileId, isArchiveFeatureEnabled });\n };\n\n fetchData = (): Promise<?[BoxItem, FileVersions]> => {\n return this.api.fetchData().then(this.handleFetchSuccess).catch(this.handleFetchError);\n };\n\n findVersion = (versionId: ?string): ?BoxItemVersion => {\n const { versions } = this.state;\n\n return versions.find(version => version.id === versionId);\n };\n\n getCurrentVersionId = (): ?string => {\n const { versions } = this.state;\n return versions[0] ? versions[0].id : null;\n };\n\n mergeVersions = (newVersion: BoxItemVersion): Array<BoxItemVersion> => {\n const { versions } = this.state;\n const newVersionId = newVersion ? newVersion.id : '';\n return versions.map(version => (version.id === newVersionId ? merge({ ...version }, newVersion) : version));\n };\n\n mergeResponse = (data: BoxItemVersion): void => {\n const newVersions = this.mergeVersions(data);\n\n this.setState({\n error: undefined,\n isLoading: false,\n versions: newVersions,\n });\n };\n\n refresh(): void {\n this.initialize();\n this.setState({ isLoading: true }, this.fetchData);\n }\n\n sortVersions(versions?: Array<BoxItemVersion> = []): Array<BoxItemVersion> {\n return [...versions].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at));\n }\n\n updateVersion = (versionId?: ?string): void => {\n const { history, match, routerDisabled, internalSidebarNavigationHandler, internalSidebarNavigation } =\n this.props;\n\n if (routerDisabled && internalSidebarNavigationHandler) {\n const navigationUpdate: InternalSidebarNavigation = { ...internalSidebarNavigation };\n if (versionId) {\n navigationUpdate.versionId = versionId;\n } else {\n delete navigationUpdate.versionId;\n }\n internalSidebarNavigationHandler(navigationUpdate);\n } else {\n history.push(generatePath(match.path, { ...match.params, versionId }));\n }\n };\n\n updateVersionToCurrent = (): void => {\n this.updateVersion(this.getCurrentVersionId());\n };\n\n verifyVersion = () => {\n const { onVersionChange, versionId } = this.props;\n const selectedVersion = this.findVersion(versionId);\n\n if (selectedVersion) {\n onVersionChange(selectedVersion, {\n currentVersionId: this.getCurrentVersionId(),\n updateVersionToCurrent: this.updateVersionToCurrent,\n });\n } else {\n this.updateVersionToCurrent();\n }\n };\n\n render() {\n const {\n fileId,\n parentName,\n onUpgradeClick,\n routerDisabled,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n } = this.props;\n\n if (onUpgradeClick) {\n return (\n <StaticVersionsSidebar\n onUpgradeClick={onUpgradeClick}\n parentName={parentName}\n routerDisabled={routerDisabled}\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n {...this.state}\n />\n );\n }\n\n return (\n <VersionsSidebar\n fileId={fileId}\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n onDelete={this.handleActionDelete}\n onDownload={this.handleActionDownload}\n onPreview={this.handleActionPreview}\n onPromote={this.handleActionPromote}\n onRestore={this.handleActionRestore}\n parentName={parentName}\n routerDisabled={routerDisabled}\n {...this.state}\n />\n );\n }\n}\n\nexport type VersionsSidebarProps = Props;\nexport { VersionsSidebarContainer as VersionsSidebarContainerComponent };\nexport default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,25 +10,70 @@ import noop from 'lodash/noop';
|
|
|
10
10
|
import { matchPath } from 'react-router-dom';
|
|
11
11
|
import { FEED_ITEM_TYPE_VERSION } from '../../constants';
|
|
12
12
|
import { getBadUserError } from '../../utils/error';
|
|
13
|
+
import { ViewType, FeedEntryType } from '../common/types/SidebarNavigation';
|
|
13
14
|
export default function withSidebarAnnotations(WrappedComponent) {
|
|
14
15
|
class WithSidebarAnnotations extends React.Component {
|
|
15
16
|
constructor(props) {
|
|
16
17
|
super(props);
|
|
17
18
|
_defineProperty(this, "sidebarPanels", /*#__PURE__*/React.createRef());
|
|
19
|
+
_defineProperty(this, "getInternalNavigationMatch", navigation => {
|
|
20
|
+
if (!('activeFeedEntryType' in navigation) || navigation.activeFeedEntryType !== FeedEntryType.ANNOTATIONS || !navigation.fileVersionId) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Only include annotationId if it's defined (mirrors router behavior where missing optional params are omitted)
|
|
25
|
+
const params = navigation.activeFeedEntryId !== undefined ? {
|
|
26
|
+
fileVersionId: navigation.fileVersionId,
|
|
27
|
+
annotationId: navigation.activeFeedEntryId
|
|
28
|
+
} : {
|
|
29
|
+
fileVersionId: navigation.fileVersionId
|
|
30
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
params
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
_defineProperty(this, "getInternalAnnotationsNavigation", (fileVersionId, annotationId) => {
|
|
36
|
+
if (!fileVersionId) {
|
|
37
|
+
return {
|
|
38
|
+
sidebar: ViewType.ACTIVITY
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
sidebar: ViewType.ACTIVITY,
|
|
43
|
+
activeFeedEntryType: FeedEntryType.ANNOTATIONS,
|
|
44
|
+
activeFeedEntryId: annotationId || undefined,
|
|
45
|
+
fileVersionId
|
|
46
|
+
};
|
|
47
|
+
});
|
|
18
48
|
_defineProperty(this, "redirectDeeplinkedAnnotation", () => {
|
|
19
49
|
const {
|
|
20
50
|
file,
|
|
21
51
|
getAnnotationsPath,
|
|
22
52
|
getAnnotationsMatchPath,
|
|
23
53
|
history,
|
|
24
|
-
|
|
54
|
+
internalSidebarNavigation,
|
|
55
|
+
internalSidebarNavigationHandler,
|
|
56
|
+
location,
|
|
57
|
+
routerDisabled
|
|
25
58
|
} = this.props;
|
|
26
|
-
const match = getAnnotationsMatchPath(location);
|
|
27
|
-
const annotationId = getProp(match, 'params.annotationId');
|
|
28
59
|
const currentFileVersionId = getProp(file, 'file_version.id');
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
60
|
+
if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {
|
|
61
|
+
// Use internal navigation when router is disabled
|
|
62
|
+
const match = this.getInternalNavigationMatch(internalSidebarNavigation);
|
|
63
|
+
const annotationId = getProp(match, 'params.annotationId');
|
|
64
|
+
const fileVersionId = getProp(match, 'params.fileVersionId');
|
|
65
|
+
if (fileVersionId && fileVersionId !== currentFileVersionId) {
|
|
66
|
+
const correctedNavigation = this.getInternalAnnotationsNavigation(currentFileVersionId, annotationId);
|
|
67
|
+
internalSidebarNavigationHandler(correctedNavigation, true);
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
// Use router-based navigation
|
|
71
|
+
const match = getAnnotationsMatchPath(location);
|
|
72
|
+
const annotationId = getProp(match, 'params.annotationId');
|
|
73
|
+
const fileVersionId = getProp(match, 'params.fileVersionId');
|
|
74
|
+
if (fileVersionId && fileVersionId !== currentFileVersionId) {
|
|
75
|
+
history.replace(getAnnotationsPath(currentFileVersionId, annotationId));
|
|
76
|
+
}
|
|
32
77
|
}
|
|
33
78
|
});
|
|
34
79
|
_defineProperty(this, "updateActiveAnnotation", () => {
|
|
@@ -41,21 +86,38 @@ export default function withSidebarAnnotations(WrappedComponent) {
|
|
|
41
86
|
getAnnotationsMatchPath,
|
|
42
87
|
getAnnotationsPath,
|
|
43
88
|
history,
|
|
44
|
-
|
|
89
|
+
internalSidebarNavigation,
|
|
90
|
+
internalSidebarNavigationHandler,
|
|
91
|
+
location,
|
|
92
|
+
routerDisabled
|
|
45
93
|
} = this.props;
|
|
46
|
-
const match = getAnnotationsMatchPath(location);
|
|
47
94
|
const currentFileVersionId = getProp(file, 'file_version.id');
|
|
48
95
|
const defaultFileVersionId = activeAnnotationFileVersionId || currentFileVersionId;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
96
|
+
if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {
|
|
97
|
+
// Use internal navigation when router is disabled
|
|
98
|
+
const match = this.getInternalNavigationMatch(internalSidebarNavigation);
|
|
99
|
+
const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);
|
|
100
|
+
const newNavigationState = activeAnnotationId ? {
|
|
101
|
+
open: true
|
|
102
|
+
} : {};
|
|
53
103
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
104
|
+
// Update the navigation and open state if transitioning to an active annotation id, force the sidebar open
|
|
105
|
+
const updatedNavigation = _objectSpread(_objectSpread({}, this.getInternalAnnotationsNavigation(fileVersionId, activeAnnotationId)), newNavigationState);
|
|
106
|
+
internalSidebarNavigationHandler(updatedNavigation);
|
|
107
|
+
} else {
|
|
108
|
+
// Use router-based navigation
|
|
109
|
+
const match = getAnnotationsMatchPath(location);
|
|
110
|
+
const fileVersionId = getProp(match, 'params.fileVersionId', defaultFileVersionId);
|
|
111
|
+
const newLocationState = activeAnnotationId ? {
|
|
112
|
+
open: true
|
|
113
|
+
} : location.state;
|
|
114
|
+
|
|
115
|
+
// Update the location pathname and open state if transitioning to an active annotation id, force the sidebar open
|
|
116
|
+
history.push({
|
|
117
|
+
pathname: getAnnotationsPath(fileVersionId, activeAnnotationId),
|
|
118
|
+
state: newLocationState
|
|
119
|
+
});
|
|
120
|
+
}
|
|
59
121
|
});
|
|
60
122
|
_defineProperty(this, "updateActiveVersion", () => {
|
|
61
123
|
const {
|
|
@@ -65,34 +127,63 @@ export default function withSidebarAnnotations(WrappedComponent) {
|
|
|
65
127
|
getAnnotationsMatchPath,
|
|
66
128
|
getAnnotationsPath,
|
|
67
129
|
history,
|
|
130
|
+
internalSidebarNavigation,
|
|
131
|
+
internalSidebarNavigationHandler,
|
|
68
132
|
location,
|
|
69
|
-
onVersionChange
|
|
133
|
+
onVersionChange,
|
|
134
|
+
routerDisabled
|
|
70
135
|
} = this.props;
|
|
71
136
|
const feedAPI = api.getFeedAPI(false);
|
|
72
|
-
const match = getAnnotationsMatchPath(location);
|
|
73
137
|
const currentFileVersionId = getProp(file, 'file_version.id');
|
|
74
|
-
const fileVersionId = getProp(match, 'params.fileVersionId');
|
|
75
138
|
const {
|
|
76
139
|
items: feedItems = []
|
|
77
140
|
} = feedAPI.getCachedItems(fileId) || {};
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
141
|
+
if (routerDisabled && internalSidebarNavigation && internalSidebarNavigationHandler) {
|
|
142
|
+
// Use internal navigation when router is disabled
|
|
143
|
+
const match = this.getInternalNavigationMatch(internalSidebarNavigation);
|
|
144
|
+
const fileVersionId = getProp(match, 'params.fileVersionId');
|
|
145
|
+
const version = feedItems.filter(item => item.type === FEED_ITEM_TYPE_VERSION).find(item => item.id === fileVersionId);
|
|
146
|
+
if (version) {
|
|
147
|
+
onVersionChange(version, {
|
|
148
|
+
currentVersionId: currentFileVersionId,
|
|
149
|
+
updateVersionToCurrent: () => {
|
|
150
|
+
const currentVersionNavigation = this.getInternalAnnotationsNavigation(currentFileVersionId);
|
|
151
|
+
internalSidebarNavigationHandler(currentVersionNavigation);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
// Use router-based navigation
|
|
157
|
+
const match = getAnnotationsMatchPath(location);
|
|
158
|
+
const fileVersionId = getProp(match, 'params.fileVersionId');
|
|
159
|
+
const version = feedItems.filter(item => item.type === FEED_ITEM_TYPE_VERSION).find(item => item.id === fileVersionId);
|
|
160
|
+
if (version) {
|
|
161
|
+
onVersionChange(version, {
|
|
162
|
+
currentVersionId: currentFileVersionId,
|
|
163
|
+
updateVersionToCurrent: () => history.push(getAnnotationsPath(currentFileVersionId))
|
|
164
|
+
});
|
|
165
|
+
}
|
|
84
166
|
}
|
|
85
167
|
});
|
|
86
168
|
_defineProperty(this, "refreshActivitySidebar", () => {
|
|
87
169
|
const {
|
|
170
|
+
internalSidebarNavigation,
|
|
88
171
|
isOpen,
|
|
89
|
-
location
|
|
172
|
+
location,
|
|
173
|
+
routerDisabled
|
|
90
174
|
} = this.props;
|
|
91
|
-
const pathname = getProp(location, 'pathname', '');
|
|
92
|
-
const isActivity = matchPath(pathname, '/activity');
|
|
93
175
|
const {
|
|
94
176
|
current
|
|
95
177
|
} = this.sidebarPanels;
|
|
178
|
+
let isActivity = false;
|
|
179
|
+
if (routerDisabled && internalSidebarNavigation) {
|
|
180
|
+
// Check if current navigation is pointing to activity sidebar
|
|
181
|
+
isActivity = internalSidebarNavigation.sidebar === ViewType.ACTIVITY;
|
|
182
|
+
} else {
|
|
183
|
+
// Use router-based check
|
|
184
|
+
const pathname = getProp(location, 'pathname', '');
|
|
185
|
+
isActivity = !!matchPath(pathname, '/activity');
|
|
186
|
+
}
|
|
96
187
|
|
|
97
188
|
// If the activity sidebar is currently open, then force it to refresh with the updated data
|
|
98
189
|
if (current && isActivity && isOpen) {
|
|
@@ -106,12 +197,15 @@ export default function withSidebarAnnotations(WrappedComponent) {
|
|
|
106
197
|
annotatorState,
|
|
107
198
|
fileId,
|
|
108
199
|
getAnnotationsMatchPath,
|
|
200
|
+
internalSidebarNavigation,
|
|
109
201
|
location,
|
|
110
|
-
onVersionChange
|
|
202
|
+
onVersionChange,
|
|
203
|
+
routerDisabled
|
|
111
204
|
} = this.props;
|
|
112
205
|
const {
|
|
113
206
|
annotatorState: prevAnnotatorState,
|
|
114
207
|
fileId: prevFileId,
|
|
208
|
+
internalSidebarNavigation: prevInternalSidebarNavigation,
|
|
115
209
|
location: prevLocation
|
|
116
210
|
} = prevProps;
|
|
117
211
|
const {
|
|
@@ -123,13 +217,25 @@ export default function withSidebarAnnotations(WrappedComponent) {
|
|
|
123
217
|
activeAnnotationId: prevActiveAnnotationId,
|
|
124
218
|
annotation: prevAnnotation
|
|
125
219
|
} = prevAnnotatorState;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
220
|
+
let fileVersionId;
|
|
221
|
+
let prevFileVersionId;
|
|
222
|
+
let match;
|
|
223
|
+
if (routerDisabled && internalSidebarNavigation) {
|
|
224
|
+
// Use internal navigation when router is disabled
|
|
225
|
+
match = this.getInternalNavigationMatch(internalSidebarNavigation);
|
|
226
|
+
const prevMatch = prevInternalSidebarNavigation ? this.getInternalNavigationMatch(prevInternalSidebarNavigation) : null;
|
|
227
|
+
fileVersionId = getProp(match, 'params.fileVersionId');
|
|
228
|
+
prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');
|
|
229
|
+
} else {
|
|
230
|
+
// Use router-based navigation
|
|
231
|
+
match = getAnnotationsMatchPath(location);
|
|
232
|
+
const prevMatch = getAnnotationsMatchPath(prevLocation);
|
|
233
|
+
fileVersionId = getProp(match, 'params.fileVersionId');
|
|
234
|
+
prevFileVersionId = getProp(prevMatch, 'params.fileVersionId');
|
|
235
|
+
}
|
|
130
236
|
const isAnnotationsPath = !!match;
|
|
131
237
|
const isTransitioningToAnnotationPath = activeAnnotationId && !isAnnotationsPath;
|
|
132
|
-
const
|
|
238
|
+
const hasActiveAnnotationChanged = prevActiveAnnotationId !== activeAnnotationId;
|
|
133
239
|
if (action === 'reply_create_start' || action === 'reply_create_end') {
|
|
134
240
|
this.addAnnotationReply();
|
|
135
241
|
}
|