box-ui-elements 23.4.0-beta.19 → 23.4.0-beta.20
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/picker.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/uploader.js +1 -1
- package/es/elements/common/types/SidebarNavigation.js.flow +1 -1
- package/es/elements/common/types/SidebarNavigation.js.map +1 -1
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +38 -8
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +104 -48
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebar.js +37 -8
- package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +101 -48
- package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +2 -1
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +3 -2
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
- package/es/src/elements/common/types/SidebarNavigation.d.ts +1 -1
- package/package.json +3 -3
- package/src/elements/common/types/SidebarNavigation.js.flow +1 -1
- package/src/elements/common/types/SidebarNavigation.ts +1 -1
- package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +104 -48
- package/src/elements/content-sidebar/versions/VersionsSidebar.js +101 -48
- package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +3 -2
- package/src/elements/content-sidebar/versions/__tests__/StaticVersionSidebar.test.js +56 -2
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +50 -1
- package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionsSidebar.js","names":["React","FormattedMessage","Route","InlineError","messages","SidebarContent","VersionsMenu","BackButton","DEFAULT_FETCH_END","LoadingIndicatorWrapper","MAX_VERSIONS","
|
|
1
|
+
{"version":3,"file":"VersionsSidebar.js","names":["React","FormattedMessage","Route","InlineError","messages","SidebarContent","VersionsMenu","BackButton","DEFAULT_FETCH_END","LoadingIndicatorWrapper","useCallback","MAX_VERSIONS","VersionsContent","_ref","error","history","internalSidebarNavigation","internalSidebarNavigationHandler","isLoading","parentName","routerDisabled","versions","rest","_objectWithoutProperties","_excluded","showLimit","length","showVersions","showEmpty","showError","handleBackClick","sidebar","push","createElement","className","title","Fragment","onClick","versionsTitle","crawlerPosition","versionServerError","versionsEmpty","_extends","versionMaxEntries","values","maxVersions","VersionsSidebar","props"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport InlineError from '../../../components/inline-error';\nimport messages from './messages';\nimport SidebarContent from '../SidebarContent';\nimport VersionsMenu from './VersionsMenu';\nimport BackButton from '../../common/back-button';\nimport { DEFAULT_FETCH_END } from '../../../constants';\nimport { LoadingIndicatorWrapper } from '../../../components/loading-indicator';\nimport type { BoxItemVersion } from '../../../common/types/core';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler, ViewTypeValues } from '../../common/types/SidebarNavigation';\nimport './VersionsSidebar.scss';\n\nconst { useCallback } = React;\n\nconst MAX_VERSIONS = DEFAULT_FETCH_END;\n\ntype Props = {\n error?: MessageDescriptor,\n fileId: string,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n isLoading: boolean,\n parentName: ViewTypeValues,\n routerDisabled?: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\ntype VersionsContentProps = {\n error?: MessageDescriptor,\n fileId: string,\n history?: any,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n isLoading: boolean,\n parentName: ViewTypeValues,\n routerDisabled?: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nconst VersionsContent = ({ \n error, \n history,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n isLoading, \n parentName, \n routerDisabled,\n versions, \n ...rest \n}: VersionsContentProps) => {\n const showLimit = versions.length >= MAX_VERSIONS;\n const showVersions = !!versions.length;\n const showEmpty = !isLoading && !showVersions;\n const showError = !!error;\n\n const handleBackClick = useCallback(() => {\n if (routerDisabled && internalSidebarNavigationHandler) {\n internalSidebarNavigationHandler({ sidebar: parentName });\n } else if (!routerDisabled && history) {\n history.push(`/${parentName}`);\n }\n }, [parentName, routerDisabled, internalSidebarNavigationHandler, history]);\n\n return (\n <SidebarContent\n className=\"bcs-Versions\"\n data-resin-component=\"preview\"\n data-resin-feature=\"versions\"\n title={\n <>\n <BackButton data-resin-target=\"back\" onClick={handleBackClick} />\n <FormattedMessage {...messages.versionsTitle} />\n </>\n }\n >\n <LoadingIndicatorWrapper\n className=\"bcs-Versions-content\"\n crawlerPosition=\"top\"\n isLoading={isLoading}\n >\n {showError && (\n <InlineError title={<FormattedMessage {...messages.versionServerError} />}>\n <FormattedMessage {...error} />\n </InlineError>\n )}\n\n {showEmpty && (\n <div className=\"bcs-Versions-empty\">\n <FormattedMessage {...messages.versionsEmpty} />\n </div>\n )}\n\n {showVersions && (\n <div className=\"bcs-Versions-menu\" data-testid=\"bcs-Versions-menu\">\n <VersionsMenu \n versions={versions} \n routerDisabled={routerDisabled}\n internalSidebarNavigation={internalSidebarNavigation}\n {...rest} \n />\n </div>\n )}\n {showLimit && (\n <div className=\"bcs-Versions-maxEntries\" data-testid=\"max-versions\">\n <FormattedMessage\n {...messages.versionMaxEntries}\n values={{\n maxVersions: MAX_VERSIONS,\n }}\n />\n </div>\n )}\n </LoadingIndicatorWrapper>\n </SidebarContent>\n );\n};\n\nconst VersionsSidebar = (props: Props) => {\n const { routerDisabled } = props;\n\n if (routerDisabled) {\n return <VersionsContent {...props} />;\n }\n\n return (\n <Route>\n {({ history }) => <VersionsContent {...props} history={history} />}\n </Route>\n );\n};\n\nexport default VersionsSidebar;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,6 +25,7 @@ import StaticVersionsSidebar from './StaticVersionSidebar';
|
|
|
25
25
|
import VersionsSidebar from './VersionsSidebar';
|
|
26
26
|
import VersionsSidebarAPI from './VersionsSidebarAPI';
|
|
27
27
|
import { withAPIContext } from '../../common/api-context';
|
|
28
|
+
import { ViewType } from '../../common/types/SidebarNavigation';
|
|
28
29
|
class VersionsSidebarContainer extends React.Component {
|
|
29
30
|
constructor(...args) {
|
|
30
31
|
super(...args);
|
|
@@ -267,7 +268,7 @@ _defineProperty(VersionsSidebarContainer, "defaultProps", {
|
|
|
267
268
|
onVersionPreview: noop,
|
|
268
269
|
onVersionPromote: noop,
|
|
269
270
|
onVersionRestore: noop,
|
|
270
|
-
parentName:
|
|
271
|
+
parentName: ViewType.DETAILS
|
|
271
272
|
});
|
|
272
273
|
export { VersionsSidebarContainer as VersionsSidebarContainerComponent };
|
|
273
274
|
export default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);
|
|
@@ -24,6 +24,7 @@ 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 { ViewType, type ViewTypeValues } from '../../common/types/SidebarNavigation';
|
|
27
28
|
|
|
28
29
|
type Props = {
|
|
29
30
|
api: API,
|
|
@@ -40,7 +41,7 @@ type Props = {
|
|
|
40
41
|
onVersionPreview: VersionActionCallback,
|
|
41
42
|
onVersionPromote: VersionActionCallback,
|
|
42
43
|
onVersionRestore: VersionActionCallback,
|
|
43
|
-
parentName:
|
|
44
|
+
parentName: ViewTypeValues,
|
|
44
45
|
versionId?: string,
|
|
45
46
|
};
|
|
46
47
|
|
|
@@ -63,7 +64,7 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
|
|
|
63
64
|
onVersionPreview: noop,
|
|
64
65
|
onVersionPromote: noop,
|
|
65
66
|
onVersionRestore: noop,
|
|
66
|
-
parentName:
|
|
67
|
+
parentName: ViewType.DETAILS,
|
|
67
68
|
};
|
|
68
69
|
|
|
69
70
|
api: VersionsSidebarAPI;
|
|
@@ -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","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","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';\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: string,\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: '',\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","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":[]}
|
|
@@ -30,7 +30,7 @@ export type SidebarNavigation = {
|
|
|
30
30
|
sidebar: ViewType;
|
|
31
31
|
} | VersionSidebarView | ActivityCommentsSidebarView | ActivityAnnotationsSidebarView;
|
|
32
32
|
export type InternalSidebarNavigation = SidebarNavigation & {
|
|
33
|
-
open
|
|
33
|
+
open?: boolean;
|
|
34
34
|
};
|
|
35
35
|
export type SidebarNavigationHandler = (sidebar: SidebarNavigation, replace?: boolean) => void;
|
|
36
36
|
export type InternalSidebarNavigationHandler = (sidebar: InternalSidebarNavigation, replace?: boolean) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "box-ui-elements",
|
|
3
|
-
"version": "23.4.0-beta.
|
|
3
|
+
"version": "23.4.0-beta.20",
|
|
4
4
|
"description": "Box UI Elements",
|
|
5
5
|
"author": "Box (https://www.box.com/)",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
"@box/item-icon": "^0.9.83",
|
|
139
139
|
"@box/languages": "^1.0.0",
|
|
140
140
|
"@box/metadata-editor": "^0.115.0",
|
|
141
|
-
"@box/react-virtualized": "9.22.3-rc-box.
|
|
141
|
+
"@box/react-virtualized": "^9.22.3-rc-box.10",
|
|
142
142
|
"@cfaester/enzyme-adapter-react-18": "^0.8.0",
|
|
143
143
|
"@chromatic-com/storybook": "^1.6.1",
|
|
144
144
|
"@commitlint/cli": "^19.8.0",
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
"@box/combobox-with-api": "^0.34.9",
|
|
308
308
|
"@box/item-icon": "^0.9.83",
|
|
309
309
|
"@box/metadata-editor": "^0.115.0",
|
|
310
|
-
"@box/react-virtualized": "9.22.3-rc-box.
|
|
310
|
+
"@box/react-virtualized": "^9.22.3-rc-box.10",
|
|
311
311
|
"@hapi/address": "^2.1.4",
|
|
312
312
|
"axios": "^0.30.0",
|
|
313
313
|
"classnames": "^2.2.5",
|
|
@@ -39,7 +39,7 @@ export type SidebarNavigation =
|
|
|
39
39
|
| ActivityAnnotationsSidebarView;
|
|
40
40
|
|
|
41
41
|
export type InternalSidebarNavigation = SidebarNavigation & {
|
|
42
|
-
open
|
|
42
|
+
open?: boolean;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
export type SidebarNavigationHandler = (sidebar: SidebarNavigation, replace?: boolean) => void;
|
|
@@ -14,18 +14,46 @@ import BackButton from '../../common/back-button';
|
|
|
14
14
|
import PrimaryButton from '../../../components/primary-button';
|
|
15
15
|
import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
|
|
16
16
|
import VersionsMenu from './VersionsMenu';
|
|
17
|
+
import type {
|
|
18
|
+
InternalSidebarNavigation,
|
|
19
|
+
InternalSidebarNavigationHandler,
|
|
20
|
+
ViewTypeValues,
|
|
21
|
+
} from '../../common/types/SidebarNavigation';
|
|
17
22
|
|
|
18
23
|
import messages from './messages';
|
|
19
24
|
|
|
20
25
|
import './StaticVersionsSidebar.scss';
|
|
21
26
|
|
|
27
|
+
const { useCallback } = React;
|
|
28
|
+
|
|
22
29
|
type Props = {
|
|
30
|
+
internalSidebarNavigation?: InternalSidebarNavigation,
|
|
31
|
+
internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
|
|
32
|
+
isLoading: boolean,
|
|
33
|
+
onUpgradeClick: () => void,
|
|
34
|
+
parentName: ViewTypeValues,
|
|
35
|
+
routerDisabled?: boolean,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
type StaticVersionsContentProps = {
|
|
39
|
+
history?: any,
|
|
40
|
+
internalSidebarNavigation?: InternalSidebarNavigation,
|
|
41
|
+
internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
|
|
23
42
|
isLoading: boolean,
|
|
24
43
|
onUpgradeClick: () => void,
|
|
25
|
-
parentName:
|
|
44
|
+
parentName: ViewTypeValues,
|
|
45
|
+
routerDisabled?: boolean,
|
|
26
46
|
};
|
|
27
47
|
|
|
28
|
-
const
|
|
48
|
+
const StaticVersionsContent = ({
|
|
49
|
+
history,
|
|
50
|
+
internalSidebarNavigation,
|
|
51
|
+
internalSidebarNavigationHandler,
|
|
52
|
+
isLoading,
|
|
53
|
+
onUpgradeClick,
|
|
54
|
+
parentName,
|
|
55
|
+
routerDisabled,
|
|
56
|
+
}: StaticVersionsContentProps): React.Node => {
|
|
29
57
|
const versionTimestamp = new Date();
|
|
30
58
|
versionTimestamp.setDate(versionTimestamp.getDate() - 1);
|
|
31
59
|
|
|
@@ -45,55 +73,83 @@ const StaticVersionsSidebar = ({ isLoading, onUpgradeClick, parentName }: Props)
|
|
|
45
73
|
};
|
|
46
74
|
});
|
|
47
75
|
|
|
76
|
+
const handleBackClick = useCallback(() => {
|
|
77
|
+
if (routerDisabled && internalSidebarNavigationHandler) {
|
|
78
|
+
internalSidebarNavigationHandler({ sidebar: parentName });
|
|
79
|
+
} else if (!routerDisabled && history) {
|
|
80
|
+
history.push(`/${parentName}`);
|
|
81
|
+
}
|
|
82
|
+
}, [parentName, routerDisabled, internalSidebarNavigationHandler, history]);
|
|
83
|
+
|
|
48
84
|
return (
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
85
|
+
<div
|
|
86
|
+
className="bcs-StaticVersionSidebar"
|
|
87
|
+
role="tabpanel"
|
|
88
|
+
data-resin-component="preview"
|
|
89
|
+
data-resin-feature="versions"
|
|
90
|
+
>
|
|
91
|
+
<div className="bcs-StaticVersionSidebar-header">
|
|
92
|
+
<h3 className="bcs-StaticVersionSidebar-title">
|
|
93
|
+
<>
|
|
94
|
+
<BackButton
|
|
95
|
+
data-resin-target="back"
|
|
96
|
+
onClick={handleBackClick}
|
|
97
|
+
/>
|
|
98
|
+
<FormattedMessage {...messages.versionsTitle} />
|
|
99
|
+
</>
|
|
100
|
+
</h3>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
<div className="bcs-StaticVersionSidebar-content-wrapper">
|
|
104
|
+
<LoadingIndicatorWrapper
|
|
105
|
+
className="bcs-StaticVersionSidebar-content"
|
|
106
|
+
crawlerPosition="top"
|
|
107
|
+
isLoading={isLoading}
|
|
56
108
|
>
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
<PrimaryButton
|
|
86
|
-
className="bcs-StaticVersionSidebar-upsell-button"
|
|
87
|
-
data-resin-target="versioning_error_upgrade_cta"
|
|
88
|
-
onClick={onUpgradeClick}
|
|
89
|
-
type="button"
|
|
90
|
-
>
|
|
91
|
-
<FormattedMessage {...messages.upgradeButton} />
|
|
92
|
-
</PrimaryButton>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
109
|
+
<VersionsMenu
|
|
110
|
+
versions={versions}
|
|
111
|
+
fileId="1"
|
|
112
|
+
versionCount={3}
|
|
113
|
+
versionLimit={3}
|
|
114
|
+
routerDisabled={routerDisabled}
|
|
115
|
+
internalSidebarNavigation={internalSidebarNavigation}
|
|
116
|
+
/>
|
|
117
|
+
</LoadingIndicatorWrapper>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<div className="bcs-StaticVersionSidebar-upsell-wrapper">
|
|
121
|
+
<div className="bcs-StaticVersionSidebar-upsell">
|
|
122
|
+
<BoxDrive140 className="bcs-StaticVersionSidebar-upsell-icon" />
|
|
123
|
+
<p className="bcs-StaticVersionSidebar-upsell-header">
|
|
124
|
+
<FormattedMessage {...messages.versionUpgradeLink} />
|
|
125
|
+
</p>
|
|
126
|
+
<p>
|
|
127
|
+
<FormattedMessage {...messages.versionUpsell} />
|
|
128
|
+
</p>
|
|
129
|
+
<PrimaryButton
|
|
130
|
+
className="bcs-StaticVersionSidebar-upsell-button"
|
|
131
|
+
data-resin-target="versioning_error_upgrade_cta"
|
|
132
|
+
onClick={onUpgradeClick}
|
|
133
|
+
type="button"
|
|
134
|
+
>
|
|
135
|
+
<FormattedMessage {...messages.upgradeButton} />
|
|
136
|
+
</PrimaryButton>
|
|
95
137
|
</div>
|
|
96
|
-
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const StaticVersionsSidebar = (props: Props): React.Node => {
|
|
144
|
+
const { routerDisabled } = props;
|
|
145
|
+
|
|
146
|
+
if (routerDisabled) {
|
|
147
|
+
return <StaticVersionsContent {...props} />;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return (
|
|
151
|
+
<Route>
|
|
152
|
+
{({ history }) => <StaticVersionsContent {...props} history={history} />}
|
|
97
153
|
</Route>
|
|
98
154
|
);
|
|
99
155
|
};
|
|
@@ -16,75 +16,128 @@ import BackButton from '../../common/back-button';
|
|
|
16
16
|
import { DEFAULT_FETCH_END } from '../../../constants';
|
|
17
17
|
import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
|
|
18
18
|
import type { BoxItemVersion } from '../../../common/types/core';
|
|
19
|
+
import type { InternalSidebarNavigation, InternalSidebarNavigationHandler, ViewTypeValues } from '../../common/types/SidebarNavigation';
|
|
19
20
|
import './VersionsSidebar.scss';
|
|
20
21
|
|
|
22
|
+
const { useCallback } = React;
|
|
23
|
+
|
|
21
24
|
const MAX_VERSIONS = DEFAULT_FETCH_END;
|
|
22
25
|
|
|
23
26
|
type Props = {
|
|
24
27
|
error?: MessageDescriptor,
|
|
25
28
|
fileId: string,
|
|
29
|
+
internalSidebarNavigation?: InternalSidebarNavigation,
|
|
30
|
+
internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
|
|
31
|
+
isLoading: boolean,
|
|
32
|
+
parentName: ViewTypeValues,
|
|
33
|
+
routerDisabled?: boolean,
|
|
34
|
+
versionCount: number,
|
|
35
|
+
versionLimit: number,
|
|
36
|
+
versions: Array<BoxItemVersion>,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
type VersionsContentProps = {
|
|
40
|
+
error?: MessageDescriptor,
|
|
41
|
+
fileId: string,
|
|
42
|
+
history?: any,
|
|
43
|
+
internalSidebarNavigation?: InternalSidebarNavigation,
|
|
44
|
+
internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
|
|
26
45
|
isLoading: boolean,
|
|
27
|
-
parentName:
|
|
46
|
+
parentName: ViewTypeValues,
|
|
47
|
+
routerDisabled?: boolean,
|
|
28
48
|
versionCount: number,
|
|
29
49
|
versionLimit: number,
|
|
30
50
|
versions: Array<BoxItemVersion>,
|
|
31
51
|
};
|
|
32
52
|
|
|
33
|
-
const
|
|
53
|
+
const VersionsContent = ({
|
|
54
|
+
error,
|
|
55
|
+
history,
|
|
56
|
+
internalSidebarNavigation,
|
|
57
|
+
internalSidebarNavigationHandler,
|
|
58
|
+
isLoading,
|
|
59
|
+
parentName,
|
|
60
|
+
routerDisabled,
|
|
61
|
+
versions,
|
|
62
|
+
...rest
|
|
63
|
+
}: VersionsContentProps) => {
|
|
34
64
|
const showLimit = versions.length >= MAX_VERSIONS;
|
|
35
65
|
const showVersions = !!versions.length;
|
|
36
66
|
const showEmpty = !isLoading && !showVersions;
|
|
37
67
|
const showError = !!error;
|
|
38
68
|
|
|
69
|
+
const handleBackClick = useCallback(() => {
|
|
70
|
+
if (routerDisabled && internalSidebarNavigationHandler) {
|
|
71
|
+
internalSidebarNavigationHandler({ sidebar: parentName });
|
|
72
|
+
} else if (!routerDisabled && history) {
|
|
73
|
+
history.push(`/${parentName}`);
|
|
74
|
+
}
|
|
75
|
+
}, [parentName, routerDisabled, internalSidebarNavigationHandler, history]);
|
|
76
|
+
|
|
39
77
|
return (
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
>
|
|
58
|
-
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
78
|
+
<SidebarContent
|
|
79
|
+
className="bcs-Versions"
|
|
80
|
+
data-resin-component="preview"
|
|
81
|
+
data-resin-feature="versions"
|
|
82
|
+
title={
|
|
83
|
+
<>
|
|
84
|
+
<BackButton data-resin-target="back" onClick={handleBackClick} />
|
|
85
|
+
<FormattedMessage {...messages.versionsTitle} />
|
|
86
|
+
</>
|
|
87
|
+
}
|
|
88
|
+
>
|
|
89
|
+
<LoadingIndicatorWrapper
|
|
90
|
+
className="bcs-Versions-content"
|
|
91
|
+
crawlerPosition="top"
|
|
92
|
+
isLoading={isLoading}
|
|
93
|
+
>
|
|
94
|
+
{showError && (
|
|
95
|
+
<InlineError title={<FormattedMessage {...messages.versionServerError} />}>
|
|
96
|
+
<FormattedMessage {...error} />
|
|
97
|
+
</InlineError>
|
|
98
|
+
)}
|
|
99
|
+
|
|
100
|
+
{showEmpty && (
|
|
101
|
+
<div className="bcs-Versions-empty">
|
|
102
|
+
<FormattedMessage {...messages.versionsEmpty} />
|
|
103
|
+
</div>
|
|
104
|
+
)}
|
|
63
105
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
106
|
+
{showVersions && (
|
|
107
|
+
<div className="bcs-Versions-menu" data-testid="bcs-Versions-menu">
|
|
108
|
+
<VersionsMenu
|
|
109
|
+
versions={versions}
|
|
110
|
+
routerDisabled={routerDisabled}
|
|
111
|
+
internalSidebarNavigation={internalSidebarNavigation}
|
|
112
|
+
{...rest}
|
|
113
|
+
/>
|
|
114
|
+
</div>
|
|
115
|
+
)}
|
|
116
|
+
{showLimit && (
|
|
117
|
+
<div className="bcs-Versions-maxEntries" data-testid="max-versions">
|
|
118
|
+
<FormattedMessage
|
|
119
|
+
{...messages.versionMaxEntries}
|
|
120
|
+
values={{
|
|
121
|
+
maxVersions: MAX_VERSIONS,
|
|
122
|
+
}}
|
|
123
|
+
/>
|
|
124
|
+
</div>
|
|
125
|
+
)}
|
|
126
|
+
</LoadingIndicatorWrapper>
|
|
127
|
+
</SidebarContent>
|
|
128
|
+
);
|
|
129
|
+
};
|
|
69
130
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
maxVersions: MAX_VERSIONS,
|
|
81
|
-
}}
|
|
82
|
-
/>
|
|
83
|
-
</div>
|
|
84
|
-
)}
|
|
85
|
-
</LoadingIndicatorWrapper>
|
|
86
|
-
</SidebarContent>
|
|
87
|
-
)}
|
|
131
|
+
const VersionsSidebar = (props: Props) => {
|
|
132
|
+
const { routerDisabled } = props;
|
|
133
|
+
|
|
134
|
+
if (routerDisabled) {
|
|
135
|
+
return <VersionsContent {...props} />;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return (
|
|
139
|
+
<Route>
|
|
140
|
+
{({ history }) => <VersionsContent {...props} history={history} />}
|
|
88
141
|
</Route>
|
|
89
142
|
);
|
|
90
143
|
};
|