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.
Files changed (26) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/picker.js +1 -1
  3. package/dist/preview.js +1 -1
  4. package/dist/sidebar.js +1 -1
  5. package/dist/uploader.js +1 -1
  6. package/es/elements/common/types/SidebarNavigation.js.flow +1 -1
  7. package/es/elements/common/types/SidebarNavigation.js.map +1 -1
  8. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +38 -8
  9. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +104 -48
  10. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -1
  11. package/es/elements/content-sidebar/versions/VersionsSidebar.js +37 -8
  12. package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +101 -48
  13. package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
  14. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +2 -1
  15. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +3 -2
  16. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  17. package/es/src/elements/common/types/SidebarNavigation.d.ts +1 -1
  18. package/package.json +3 -3
  19. package/src/elements/common/types/SidebarNavigation.js.flow +1 -1
  20. package/src/elements/common/types/SidebarNavigation.ts +1 -1
  21. package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +104 -48
  22. package/src/elements/content-sidebar/versions/VersionsSidebar.js +101 -48
  23. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +3 -2
  24. package/src/elements/content-sidebar/versions/__tests__/StaticVersionSidebar.test.js +56 -2
  25. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +50 -1
  26. 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","VersionsSidebar","_ref","error","isLoading","parentName","versions","rest","_objectWithoutProperties","_excluded","showLimit","length","showVersions","showEmpty","showError","createElement","history","className","title","Fragment","onClick","push","versionsTitle","crawlerPosition","versionServerError","versionsEmpty","_extends","versionMaxEntries","values","maxVersions"],"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 './VersionsSidebar.scss';\n\nconst MAX_VERSIONS = DEFAULT_FETCH_END;\n\ntype Props = {\n error?: MessageDescriptor,\n fileId: string,\n isLoading: boolean,\n parentName: string,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nconst VersionsSidebar = ({ error, isLoading, parentName, versions, ...rest }: Props) => {\n const showLimit = versions.length >= MAX_VERSIONS;\n const showVersions = !!versions.length;\n const showEmpty = !isLoading && !showVersions;\n const showError = !!error;\n\n return (\n <Route>\n {({ history }) => (\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={() => history.push(`/${parentName}`)} />\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 versions={versions} {...rest} />\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 </Route>\n );\n};\n\nexport default VersionsSidebar;\n"],"mappings":"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","ignoreList":[]}
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: string,
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: boolean;
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.19",
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.9",
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.9",
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",
@@ -30,7 +30,7 @@ export type SidebarNavigation = {
30
30
  };
31
31
 
32
32
  export type InternalSidebarNavigation = SidebarNavigation & {
33
- open: boolean,
33
+ open?: boolean,
34
34
  };
35
35
 
36
36
  export type SidebarNavigationHandler = (sidebar: SidebarNavigation, replace?: boolean) => void;
@@ -39,7 +39,7 @@ export type SidebarNavigation =
39
39
  | ActivityAnnotationsSidebarView;
40
40
 
41
41
  export type InternalSidebarNavigation = SidebarNavigation & {
42
- open: boolean;
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: string,
44
+ parentName: ViewTypeValues,
45
+ routerDisabled?: boolean,
26
46
  };
27
47
 
28
- const StaticVersionsSidebar = ({ isLoading, onUpgradeClick, parentName }: Props): React.Node => {
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
- <Route>
50
- {({ history }) => (
51
- <div
52
- className="bcs-StaticVersionSidebar"
53
- role="tabpanel"
54
- data-resin-component="preview"
55
- data-resin-feature="versions"
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
- <div className="bcs-StaticVersionSidebar-header">
58
- <h3 className="bcs-StaticVersionSidebar-title">
59
- <>
60
- <BackButton data-resin-target="back" onClick={() => history.push(`/${parentName}`)} />
61
- <FormattedMessage {...messages.versionsTitle} />
62
- </>
63
- </h3>
64
- </div>
65
-
66
- <div className="bcs-StaticVersionSidebar-content-wrapper">
67
- <LoadingIndicatorWrapper
68
- className="bcs-StaticVersionSidebar-content"
69
- crawlerPosition="top"
70
- isLoading={isLoading}
71
- >
72
- <VersionsMenu versions={versions} fileId="1" versionCount={3} versionLimit={3} />
73
- </LoadingIndicatorWrapper>
74
- </div>
75
-
76
- <div className="bcs-StaticVersionSidebar-upsell-wrapper">
77
- <div className="bcs-StaticVersionSidebar-upsell">
78
- <BoxDrive140 className="bcs-StaticVersionSidebar-upsell-icon" />
79
- <p className="bcs-StaticVersionSidebar-upsell-header">
80
- <FormattedMessage {...messages.versionUpgradeLink} />
81
- </p>
82
- <p>
83
- <FormattedMessage {...messages.versionUpsell} />
84
- </p>
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: string,
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 VersionsSidebar = ({ error, isLoading, parentName, versions, ...rest }: Props) => {
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
- <Route>
41
- {({ history }) => (
42
- <SidebarContent
43
- className="bcs-Versions"
44
- data-resin-component="preview"
45
- data-resin-feature="versions"
46
- title={
47
- <>
48
- <BackButton data-resin-target="back" onClick={() => history.push(`/${parentName}`)} />
49
- <FormattedMessage {...messages.versionsTitle} />
50
- </>
51
- }
52
- >
53
- <LoadingIndicatorWrapper
54
- className="bcs-Versions-content"
55
- crawlerPosition="top"
56
- isLoading={isLoading}
57
- >
58
- {showError && (
59
- <InlineError title={<FormattedMessage {...messages.versionServerError} />}>
60
- <FormattedMessage {...error} />
61
- </InlineError>
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
- {showEmpty && (
65
- <div className="bcs-Versions-empty">
66
- <FormattedMessage {...messages.versionsEmpty} />
67
- </div>
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
- {showVersions && (
71
- <div className="bcs-Versions-menu" data-testid="bcs-Versions-menu">
72
- <VersionsMenu versions={versions} {...rest} />
73
- </div>
74
- )}
75
- {showLimit && (
76
- <div className="bcs-Versions-maxEntries" data-testid="max-versions">
77
- <FormattedMessage
78
- {...messages.versionMaxEntries}
79
- values={{
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
  };