box-ui-elements 23.4.0-beta.36 → 23.4.0-beta.38

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 (88) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/preview.css +1 -1
  4. package/dist/preview.js +1 -1
  5. package/dist/sidebar.css +1 -1
  6. package/dist/sidebar.js +1 -1
  7. package/es/common/types/metadata.js.flow +5 -4
  8. package/es/common/types/metadata.js.map +1 -1
  9. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +43 -22
  10. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
  11. package/es/elements/content-preview/PreviewNavigation.js +0 -2
  12. package/es/elements/content-preview/PreviewNavigation.js.flow +0 -2
  13. package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
  14. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +29 -7
  15. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +44 -5
  16. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  17. package/es/elements/content-sidebar/withSidebarAnnotations.js +141 -35
  18. package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +199 -37
  19. package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
  20. package/es/features/metadata-instance-editor/CascadePolicy.js +6 -3
  21. package/es/features/metadata-instance-editor/CascadePolicy.js.flow +8 -2
  22. package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
  23. package/es/features/metadata-instance-editor/Instance.js +1 -0
  24. package/es/features/metadata-instance-editor/Instance.js.flow +1 -0
  25. package/es/features/metadata-instance-editor/Instance.js.map +1 -1
  26. package/es/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.d.ts +1 -1
  27. package/i18n/bn-IN.js +1 -1
  28. package/i18n/bn-IN.properties +4 -0
  29. package/i18n/da-DK.js +1 -1
  30. package/i18n/da-DK.properties +4 -0
  31. package/i18n/de-DE.js +1 -1
  32. package/i18n/de-DE.properties +4 -0
  33. package/i18n/en-AU.js +1 -1
  34. package/i18n/en-AU.properties +4 -0
  35. package/i18n/en-CA.js +1 -1
  36. package/i18n/en-CA.properties +4 -0
  37. package/i18n/en-GB.js +1 -1
  38. package/i18n/en-GB.properties +4 -0
  39. package/i18n/es-419.js +1 -1
  40. package/i18n/es-419.properties +4 -0
  41. package/i18n/es-ES.js +1 -1
  42. package/i18n/es-ES.properties +4 -0
  43. package/i18n/fi-FI.js +1 -1
  44. package/i18n/fi-FI.properties +4 -0
  45. package/i18n/fr-CA.js +1 -1
  46. package/i18n/fr-CA.properties +4 -0
  47. package/i18n/fr-FR.js +1 -1
  48. package/i18n/fr-FR.properties +4 -0
  49. package/i18n/hi-IN.js +1 -1
  50. package/i18n/hi-IN.properties +4 -0
  51. package/i18n/it-IT.js +1 -1
  52. package/i18n/it-IT.properties +4 -0
  53. package/i18n/ja-JP.js +1 -1
  54. package/i18n/ja-JP.properties +4 -0
  55. package/i18n/ko-KR.js +1 -1
  56. package/i18n/ko-KR.properties +4 -0
  57. package/i18n/nb-NO.js +1 -1
  58. package/i18n/nb-NO.properties +4 -0
  59. package/i18n/nl-NL.js +1 -1
  60. package/i18n/nl-NL.properties +4 -0
  61. package/i18n/pl-PL.js +1 -1
  62. package/i18n/pl-PL.properties +4 -0
  63. package/i18n/pt-BR.js +1 -1
  64. package/i18n/pt-BR.properties +4 -0
  65. package/i18n/ru-RU.js +1 -1
  66. package/i18n/ru-RU.properties +4 -0
  67. package/i18n/sv-SE.js +1 -1
  68. package/i18n/sv-SE.properties +4 -0
  69. package/i18n/tr-TR.js +1 -1
  70. package/i18n/tr-TR.properties +4 -0
  71. package/i18n/zh-CN.js +1 -1
  72. package/i18n/zh-CN.properties +4 -0
  73. package/i18n/zh-TW.js +1 -1
  74. package/i18n/zh-TW.properties +4 -0
  75. package/package.json +3 -3
  76. package/src/common/types/metadata.js +5 -4
  77. package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +47 -31
  78. package/src/elements/content-preview/PreviewNavigation.js +0 -2
  79. package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +12 -12
  80. package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.rtl.test.js +1152 -0
  81. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +44 -5
  82. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +200 -43
  83. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +2 -2
  84. package/src/elements/content-sidebar/withSidebarAnnotations.js +199 -37
  85. package/src/features/metadata-instance-editor/CascadePolicy.js +8 -2
  86. package/src/features/metadata-instance-editor/Instance.js +1 -0
  87. package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +45 -0
  88. package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +0 -626
@@ -87,14 +87,15 @@ type MetadataType = {
87
87
  global?: MetadataSkillsTemplate,
88
88
  };
89
89
 
90
+ type MetadataCascadePolicyConfiguration = {
91
+ agent: string,
92
+ };
93
+
90
94
  type MetadataCascadePolicy = {
91
95
  canEdit?: boolean,
92
96
  id?: string,
93
97
  cascadePolicyType?: string,
94
- };
95
-
96
- type MetadataCascadePolicyConfiguration = {
97
- agent: string,
98
+ cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,
98
99
  };
99
100
 
100
101
  type MetadataCascadingPolicyData = {
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","names":["FIELD_TYPE_DATE","FIELD_TYPE_ENUM","FIELD_TYPE_FLOAT","FIELD_TYPE_MULTISELECT","FIELD_TYPE_STRING","FIELD_TYPE_TAXONOMY"],"sources":["../../../src/common/types/metadata.js"],"sourcesContent":["// @flow strict\nimport {\n FIELD_TYPE_DATE,\n FIELD_TYPE_ENUM,\n FIELD_TYPE_FLOAT,\n FIELD_TYPE_MULTISELECT,\n FIELD_TYPE_STRING,\n FIELD_TYPE_TAXONOMY,\n} from '../../features/metadata-instance-fields/constants';\nimport type { SkillCards } from './skills';\n\ntype MetadataFieldType =\n | typeof FIELD_TYPE_DATE\n | typeof FIELD_TYPE_ENUM\n | typeof FIELD_TYPE_FLOAT\n | typeof FIELD_TYPE_MULTISELECT\n | typeof FIELD_TYPE_STRING\n | typeof FIELD_TYPE_TAXONOMY;\n\ntype MetadataTemplateFieldOption = {\n id?: string,\n key: string,\n};\n\nexport type TaxonomyLevel = {\n description: string,\n displayName: string,\n level: number,\n};\n\ntype MetadataTemplateField = {\n description?: string,\n displayName: string,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n key: string, // V2\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n levels?: Array<TaxonomyLevel>,\n namespace?: string,\n taxonomyKey?: string,\n taxonomy_key?: string,\n};\n\ntype MetadataTemplate = {\n displayName?: string,\n fields?: Array<MetadataTemplateField>,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n scope: string, // V2\n templateKey: string, // V3\n};\n\ntype MetadataTemplateSchemaResponse = {\n data?: MetadataTemplate,\n};\n\ntype MetadataSkillsTemplate = {\n archivedItemTemplate?: {\n archiveDate: string,\n },\n boxSkillsCards?: SkillCards,\n};\n\n// $FlowFixMe flow strict doesn't like use of \"any\"\ntype MetadataFieldValue = string | number | Array<any>;\n\ntype MetadataFields = { [string]: MetadataFieldValue };\n\ntype MetadataQueryInstanceTypeField = {\n displayName: string,\n key: string,\n options?: MetadataTemplateFieldOption,\n type: string,\n value: ?MetadataFieldValue,\n};\n\ntype MetadataQueryInstanceTemplate = {\n fields: Array<MetadataQueryInstanceTypeField>,\n id: string,\n};\n\ntype MetadataType = {\n enterprise?: MetadataQueryInstanceTemplate,\n global?: MetadataSkillsTemplate,\n};\n\ntype MetadataCascadePolicy = {\n canEdit?: boolean,\n id?: string,\n cascadePolicyType?: string,\n};\n\ntype MetadataCascadePolicyConfiguration = {\n agent: string,\n};\n\ntype MetadataCascadingPolicyData = {\n id?: string,\n isEnabled: boolean,\n overwrite: boolean,\n cascadePolicyConfiguration: MetadataCascadePolicyConfiguration | null,\n};\n\ntype MetadataInstance = {\n canEdit: boolean,\n cascadePolicy?: MetadataCascadePolicy,\n data: MetadataFields,\n id: string,\n};\n\ntype MetadataInstanceV2 = {\n $canEdit: boolean,\n $id: string,\n $parent: string,\n $scope: string,\n $template: string,\n $type: string,\n $typeVersion: number,\n $version: number,\n};\n\ntype MetadataEditor = {\n hasError?: boolean,\n instance: MetadataInstance,\n isDirty?: boolean,\n template: MetadataTemplate,\n};\n\ntype MetadataSuggestion = {\n $scope: string,\n $templateKey: string,\n suggestions: { [key: string]: string | number | string[] },\n};\n\ntype MetadataOptionEntryAncestor = {\n id: string,\n display_name: string,\n level: string,\n};\n\ntype MetadataOptionEntry = {\n id: string,\n display_name: string,\n level: number,\n ancestors: MetadataOptionEntryAncestor[],\n deprecated: boolean,\n selectable: boolean,\n};\n\ntype MetadataOptions = {\n entries: MetadataOptionEntry[],\n next_marker: string | null,\n result_count: number,\n};\n\ntype MetadataTemplateInstanceField = {\n description?: string,\n displayName?: string,\n hidden?: boolean,\n id?: string,\n key: string, // V2\n levels?: Array<TaxonomyLevel>,\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n value: MetadataFieldValue,\n};\n\ntype MetadataTemplateInstance = {\n canEdit: boolean,\n displayName?: string,\n hidden?: boolean,\n id: string,\n fields: MetadataTemplateInstanceField[],\n scope: string,\n templateKey: string,\n type: string,\n};\n\nexport type {\n MetadataTemplateInstanceField,\n MetadataTemplateInstance,\n MetadataFieldType,\n MetadataTemplateFieldOption,\n MetadataTemplateField,\n MetadataTemplate,\n MetadataTemplateSchemaResponse,\n MetadataFieldValue,\n MetadataFields,\n MetadataQueryInstanceTypeField,\n MetadataType,\n MetadataCascadePolicy,\n MetadataCascadePolicyConfiguration,\n MetadataCascadingPolicyData,\n MetadataInstanceV2,\n MetadataEditor,\n MetadataSuggestion,\n MetadataOptions,\n};\n"],"mappings":"AACA,SACIA,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,QAChB,mDAAmD;;AA0D1D","ignoreList":[]}
1
+ {"version":3,"file":"metadata.js","names":["FIELD_TYPE_DATE","FIELD_TYPE_ENUM","FIELD_TYPE_FLOAT","FIELD_TYPE_MULTISELECT","FIELD_TYPE_STRING","FIELD_TYPE_TAXONOMY"],"sources":["../../../src/common/types/metadata.js"],"sourcesContent":["// @flow strict\nimport {\n FIELD_TYPE_DATE,\n FIELD_TYPE_ENUM,\n FIELD_TYPE_FLOAT,\n FIELD_TYPE_MULTISELECT,\n FIELD_TYPE_STRING,\n FIELD_TYPE_TAXONOMY,\n} from '../../features/metadata-instance-fields/constants';\nimport type { SkillCards } from './skills';\n\ntype MetadataFieldType =\n | typeof FIELD_TYPE_DATE\n | typeof FIELD_TYPE_ENUM\n | typeof FIELD_TYPE_FLOAT\n | typeof FIELD_TYPE_MULTISELECT\n | typeof FIELD_TYPE_STRING\n | typeof FIELD_TYPE_TAXONOMY;\n\ntype MetadataTemplateFieldOption = {\n id?: string,\n key: string,\n};\n\nexport type TaxonomyLevel = {\n description: string,\n displayName: string,\n level: number,\n};\n\ntype MetadataTemplateField = {\n description?: string,\n displayName: string,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n key: string, // V2\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n levels?: Array<TaxonomyLevel>,\n namespace?: string,\n taxonomyKey?: string,\n taxonomy_key?: string,\n};\n\ntype MetadataTemplate = {\n displayName?: string,\n fields?: Array<MetadataTemplateField>,\n hidden?: boolean,\n id: string,\n isHidden?: boolean,\n scope: string, // V2\n templateKey: string, // V3\n};\n\ntype MetadataTemplateSchemaResponse = {\n data?: MetadataTemplate,\n};\n\ntype MetadataSkillsTemplate = {\n archivedItemTemplate?: {\n archiveDate: string,\n },\n boxSkillsCards?: SkillCards,\n};\n\n// $FlowFixMe flow strict doesn't like use of \"any\"\ntype MetadataFieldValue = string | number | Array<any>;\n\ntype MetadataFields = { [string]: MetadataFieldValue };\n\ntype MetadataQueryInstanceTypeField = {\n displayName: string,\n key: string,\n options?: MetadataTemplateFieldOption,\n type: string,\n value: ?MetadataFieldValue,\n};\n\ntype MetadataQueryInstanceTemplate = {\n fields: Array<MetadataQueryInstanceTypeField>,\n id: string,\n};\n\ntype MetadataType = {\n enterprise?: MetadataQueryInstanceTemplate,\n global?: MetadataSkillsTemplate,\n};\n\ntype MetadataCascadePolicyConfiguration = {\n agent: string,\n};\n\ntype MetadataCascadePolicy = {\n canEdit?: boolean,\n id?: string,\n cascadePolicyType?: string,\n cascadePolicyConfiguration?: MetadataCascadePolicyConfiguration,\n};\n\ntype MetadataCascadingPolicyData = {\n id?: string,\n isEnabled: boolean,\n overwrite: boolean,\n cascadePolicyConfiguration: MetadataCascadePolicyConfiguration | null,\n};\n\ntype MetadataInstance = {\n canEdit: boolean,\n cascadePolicy?: MetadataCascadePolicy,\n data: MetadataFields,\n id: string,\n};\n\ntype MetadataInstanceV2 = {\n $canEdit: boolean,\n $id: string,\n $parent: string,\n $scope: string,\n $template: string,\n $type: string,\n $typeVersion: number,\n $version: number,\n};\n\ntype MetadataEditor = {\n hasError?: boolean,\n instance: MetadataInstance,\n isDirty?: boolean,\n template: MetadataTemplate,\n};\n\ntype MetadataSuggestion = {\n $scope: string,\n $templateKey: string,\n suggestions: { [key: string]: string | number | string[] },\n};\n\ntype MetadataOptionEntryAncestor = {\n id: string,\n display_name: string,\n level: string,\n};\n\ntype MetadataOptionEntry = {\n id: string,\n display_name: string,\n level: number,\n ancestors: MetadataOptionEntryAncestor[],\n deprecated: boolean,\n selectable: boolean,\n};\n\ntype MetadataOptions = {\n entries: MetadataOptionEntry[],\n next_marker: string | null,\n result_count: number,\n};\n\ntype MetadataTemplateInstanceField = {\n description?: string,\n displayName?: string,\n hidden?: boolean,\n id?: string,\n key: string, // V2\n levels?: Array<TaxonomyLevel>,\n options?: Array<MetadataTemplateFieldOption>, // V3\n type: MetadataFieldType,\n value: MetadataFieldValue,\n};\n\ntype MetadataTemplateInstance = {\n canEdit: boolean,\n displayName?: string,\n hidden?: boolean,\n id: string,\n fields: MetadataTemplateInstanceField[],\n scope: string,\n templateKey: string,\n type: string,\n};\n\nexport type {\n MetadataTemplateInstanceField,\n MetadataTemplateInstance,\n MetadataFieldType,\n MetadataTemplateFieldOption,\n MetadataTemplateField,\n MetadataTemplate,\n MetadataTemplateSchemaResponse,\n MetadataFieldValue,\n MetadataFields,\n MetadataQueryInstanceTypeField,\n MetadataType,\n MetadataCascadePolicy,\n MetadataCascadePolicyConfiguration,\n MetadataCascadingPolicyData,\n MetadataInstanceV2,\n MetadataEditor,\n MetadataSuggestion,\n MetadataOptions,\n};\n"],"mappings":"AACA,SACIA,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,sBAAsB,EACtBC,iBAAiB,EACjBC,mBAAmB,QAChB,mDAAmD;;AA0D1D","ignoreList":[]}
@@ -3,45 +3,66 @@ import { http, HttpResponse } from 'msw';
3
3
  import ContentExplorer from '../../ContentExplorer';
4
4
  import { DEFAULT_HOSTNAME_API } from '../../../../constants';
5
5
  import { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';
6
- const EID = '0';
7
- const templateName = 'templateName';
8
- const metadataSource = `enterprise_${EID}.${templateName}`;
9
- const metadataSourceFieldName = `metadata.${metadataSource}`;
10
- const metadataQuery = {
11
- from: metadataSource,
12
- // // Filter items in the folder by existing metadata key
13
- // query: 'key = :arg1',
14
- //
15
- // // Display items with value
16
- // query_params: { arg1: 'value' },
17
6
 
18
- ancestor_folder_id: '313259567207',
19
- fields: [`${metadataSourceFieldName}.name`, `${metadataSourceFieldName}.industry`, `${metadataSourceFieldName}.last_contacted_at`, `${metadataSourceFieldName}.role`]
7
+ // The intent behind relying on mockMetadata is to allow a developer to paste in their own metadata template schema for use with live API calls.
8
+ const {
9
+ scope: templateScope,
10
+ templateKey
11
+ } = mockSchema;
12
+ const metadataScopeAndKey = `${templateScope}.${templateKey}`;
13
+ const metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;
14
+
15
+ // This is the body of the metadata query API call.
16
+ // https://developer.box.com/guides/metadata/queries/syntax/
17
+ const metadataQuery = {
18
+ from: metadataScopeAndKey,
19
+ ancestor_folder_id: '0',
20
+ sort_by: [{
21
+ field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`,
22
+ // Default to sorting by the first field in the schema
23
+ direction: 'asc'
24
+ }],
25
+ fields: [
26
+ // Default to returning all fields in the metadata template schema, and name as a standalone (non-metadata) field
27
+ ...mockSchema.fields.map(field => `${metadataFieldNamePrefix}.${field.key}`), 'name']
20
28
  };
29
+
30
+ // Used for metadata view v1
21
31
  const fieldsToShow = [{
22
- key: `${metadataSourceFieldName}.name`,
32
+ key: `${metadataFieldNamePrefix}.name`,
23
33
  canEdit: false,
24
34
  displayName: 'Alias'
25
35
  }, {
26
- key: `${metadataSourceFieldName}.industry`,
36
+ key: `${metadataFieldNamePrefix}.industry`,
27
37
  canEdit: true
28
38
  }, {
29
- key: `${metadataSourceFieldName}.last_contacted_at`,
39
+ key: `${metadataFieldNamePrefix}.last_contacted_at`,
30
40
  canEdit: true
31
41
  }, {
32
- key: `${metadataSourceFieldName}.role`,
42
+ key: `${metadataFieldNamePrefix}.role`,
33
43
  canEdit: true
34
44
  }];
35
- const columns = mockSchema.fields.map(field => ({
45
+
46
+ // Used for metadata view v2
47
+ const columns = [{
48
+ // Always include the name column
49
+ textValue: 'Name',
50
+ id: 'name',
51
+ type: 'string',
52
+ allowSorting: true,
53
+ minWidth: 150,
54
+ maxWidth: 150
55
+ }, ...mockSchema.fields.map(field => ({
36
56
  textValue: field.displayName,
37
- id: `${metadataSourceFieldName}.${field.key}`,
57
+ id: `${metadataFieldNamePrefix}.${field.key}`,
38
58
  type: field.type,
39
59
  allowSorting: true,
40
60
  minWidth: 150,
41
61
  maxWidth: 150
42
- }));
43
- const defaultView = 'metadata'; // Required prop to paint the metadata view. If not provided, you'll get regular folder view.
62
+ }))];
44
63
 
64
+ // Switches ContentExplorer to use Metadata View over standard, folder-based view.
65
+ const defaultView = 'metadata';
45
66
  export const metadataView = {
46
67
  args: {
47
68
  metadataQuery,
@@ -49,7 +70,7 @@ export const metadataView = {
49
70
  defaultView
50
71
  }
51
72
  };
52
- export const withNewMetadataView = {
73
+ export const metadataViewV2 = {
53
74
  args: {
54
75
  metadataViewProps: {
55
76
  columns
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataView-visual.stories.js","names":["React","http","HttpResponse","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","EID","templateName","metadataSource","metadataSourceFieldName","metadataQuery","from","ancestor_folder_id","fields","fieldsToShow","key","canEdit","displayName","columns","map","field","textValue","id","type","allowSorting","minWidth","maxWidth","defaultView","metadataView","args","withNewMetadataView","metadataViewProps","features","contentExplorer","metadataViewV2","render","createElement","style","padding","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json","get"],"sources":["../../../../../src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx"],"sourcesContent":["import React from 'react';\nimport { http, HttpResponse } from 'msw';\nimport type { Meta, StoryObj } from '@storybook/react';\nimport ContentExplorer from '../../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\nimport { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';\n\nconst EID = '0';\nconst templateName = 'templateName';\nconst metadataSource = `enterprise_${EID}.${templateName}`;\nconst metadataSourceFieldName = `metadata.${metadataSource}`;\n\nconst metadataQuery = {\n from: metadataSource,\n\n // // Filter items in the folder by existing metadata key\n // query: 'key = :arg1',\n //\n // // Display items with value\n // query_params: { arg1: 'value' },\n\n ancestor_folder_id: '313259567207',\n fields: [\n `${metadataSourceFieldName}.name`,\n `${metadataSourceFieldName}.industry`,\n `${metadataSourceFieldName}.last_contacted_at`,\n `${metadataSourceFieldName}.role`,\n ],\n};\n\nconst fieldsToShow = [\n { key: `${metadataSourceFieldName}.name`, canEdit: false, displayName: 'Alias' },\n { key: `${metadataSourceFieldName}.industry`, canEdit: true },\n { key: `${metadataSourceFieldName}.last_contacted_at`, canEdit: true },\n { key: `${metadataSourceFieldName}.role`, canEdit: true },\n];\n\nconst columns = mockSchema.fields.map(field => ({\n textValue: field.displayName,\n id: `${metadataSourceFieldName}.${field.key}`,\n type: field.type,\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n}));\nconst defaultView = 'metadata'; // Required prop to paint the metadata view. If not provided, you'll get regular folder view.\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataQuery,\n fieldsToShow,\n defaultView,\n },\n};\n\nexport const withNewMetadataView: Story = {\n args: {\n metadataViewProps: {\n columns,\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n },\n render: args => {\n return (\n <div style={{ padding: '50px' }}>\n <ContentExplorer {...args} />\n </div>\n );\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/tests/MetadataView/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MetadataView-visual.stories.js","names":["React","http","HttpResponse","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","scope","templateScope","templateKey","metadataScopeAndKey","metadataFieldNamePrefix","metadataQuery","from","ancestor_folder_id","sort_by","field_key","fields","key","direction","map","field","fieldsToShow","canEdit","displayName","columns","textValue","id","type","allowSorting","minWidth","maxWidth","defaultView","metadataView","args","metadataViewV2","metadataViewProps","features","contentExplorer","render","createElement","style","padding","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json","get"],"sources":["../../../../../src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx"],"sourcesContent":["import React from 'react';\nimport { http, HttpResponse } from 'msw';\nimport type { Meta, StoryObj } from '@storybook/react';\nimport ContentExplorer from '../../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../../constants';\nimport { mockMetadata, mockSchema } from '../../../common/__mocks__/mockMetadata';\n\n// The intent behind relying on mockMetadata is to allow a developer to paste in their own metadata template schema for use with live API calls.\nconst { scope: templateScope, templateKey } = mockSchema;\n\nconst metadataScopeAndKey = `${templateScope}.${templateKey}`;\nconst metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`;\n\n// This is the body of the metadata query API call.\n// https://developer.box.com/guides/metadata/queries/syntax/\nconst metadataQuery = {\n from: metadataScopeAndKey,\n ancestor_folder_id: '0',\n sort_by: [\n {\n field_key: `${metadataFieldNamePrefix}.${mockSchema.fields[0].key}`, // Default to sorting by the first field in the schema\n direction: 'asc',\n },\n ],\n fields: [\n // Default to returning all fields in the metadata template schema, and name as a standalone (non-metadata) field\n ...mockSchema.fields.map(field => `${metadataFieldNamePrefix}.${field.key}`),\n 'name',\n ],\n};\n\n// Used for metadata view v1\nconst fieldsToShow = [\n { key: `${metadataFieldNamePrefix}.name`, canEdit: false, displayName: 'Alias' },\n { key: `${metadataFieldNamePrefix}.industry`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.last_contacted_at`, canEdit: true },\n { key: `${metadataFieldNamePrefix}.role`, canEdit: true },\n];\n\n// Used for metadata view v2\nconst columns = [\n {\n // Always include the name column\n textValue: 'Name',\n id: 'name',\n type: 'string',\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n },\n ...mockSchema.fields.map(field => ({\n textValue: field.displayName,\n id: `${metadataFieldNamePrefix}.${field.key}`,\n type: field.type,\n allowSorting: true,\n minWidth: 150,\n maxWidth: 150,\n })),\n];\n\n// Switches ContentExplorer to use Metadata View over standard, folder-based view.\nconst defaultView = 'metadata';\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataQuery,\n fieldsToShow,\n defaultView,\n },\n};\n\nexport const metadataViewV2: Story = {\n args: {\n metadataViewProps: {\n columns,\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n },\n render: args => {\n return (\n <div style={{ padding: '50px' }}>\n <ContentExplorer {...args} />\n </div>\n );\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/tests/MetadataView/visual',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
@@ -93,7 +93,6 @@ const PreviewNavigationWithoutRouter = ({
93
93
  };
94
94
  return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeftNavigation && /*#__PURE__*/React.createElement(PlainButton, {
95
95
  className: "bcpr-navigate-left",
96
- "data-testid": "preview-navigation-left",
97
96
  onClick: () => {
98
97
  handleInternalNavigation();
99
98
  onNavigateLeft();
@@ -102,7 +101,6 @@ const PreviewNavigationWithoutRouter = ({
102
101
  type: "button"
103
102
  }, /*#__PURE__*/React.createElement(IconNavigateLeft, null)), hasRightNavigation && /*#__PURE__*/React.createElement(PlainButton, {
104
103
  className: "bcpr-navigate-right",
105
- "data-testid": "preview-navigation-right",
106
104
  onClick: () => {
107
105
  handleInternalNavigation();
108
106
  onNavigateRight();
@@ -123,7 +123,6 @@ const PreviewNavigationWithoutRouter = ({
123
123
  {hasLeftNavigation && (
124
124
  <PlainButton
125
125
  className="bcpr-navigate-left"
126
- data-testid="preview-navigation-left"
127
126
  onClick={() => {
128
127
  handleInternalNavigation();
129
128
  onNavigateLeft();
@@ -137,7 +136,6 @@ const PreviewNavigationWithoutRouter = ({
137
136
  {hasRightNavigation && (
138
137
  <PlainButton
139
138
  className="bcpr-navigate-right"
140
- data-testid="preview-navigation-right"
141
139
  onClick={() => {
142
140
  handleInternalNavigation();
143
141
  onNavigateRight();
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewNavigation.js","names":["React","injectIntl","Route","IconNavigateLeft","IconNavigateRight","PlainButton","messages","SIDEBAR_VIEW_METADATA","PreviewNavigationWithRouter","collection","currentIndex","intl","onNavigateLeft","onNavigateRight","hasLeftNavigation","length","hasRightNavigation","goToActiveSidebarTab","routeParams","history","deeplink","activeTab","push","createElement","path","match","Fragment","className","onClick","params","title","formatMessage","previousFile","type","nextFile","PreviewNavigationWithoutRouter","internalSidebarNavigation","internalSidebarNavigationHandler","handleInternalNavigation","sidebar","rest","_objectWithoutProperties","_excluded","hasDeeplink","Object","keys","PreviewNavigation","props","routerDisabled"],"sources":["../../../src/elements/content-preview/PreviewNavigation.js"],"sourcesContent":["/**\n * @flow\n * @file Preview Navigation\n * @author Box\n */\n\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport IconNavigateLeft from '../../icons/general/IconNavigateLeft';\nimport IconNavigateRight from '../../icons/general/IconNavigateRight';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport messages from '../common/messages';\nimport type { BoxItem } from '../../common/types/core';\nimport { SIDEBAR_VIEW_METADATA } from '../../constants';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype Props = {\n collection: Array<string | BoxItem>,\n currentIndex: number,\n intl: IntlShape,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onNavigateLeft: Function,\n onNavigateRight: Function,\n routerDisabled?: boolean,\n};\n\nconst PreviewNavigationWithRouter = ({\n collection = [],\n currentIndex,\n intl,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const goToActiveSidebarTab = (routeParams, history) => {\n if (routeParams.deeplink) {\n if (routeParams.activeTab === SIDEBAR_VIEW_METADATA) {\n history.push(`/${routeParams.activeTab}/${routeParams.deeplink}/${routeParams[0]}`);\n } else {\n history.push(`/${routeParams.activeTab}`);\n }\n }\n };\n\n return (\n <Route path={['/:activeTab/:deeplink/*', '/']}>\n {({ match, history }) => (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n )}\n </Route>\n );\n};\n\nconst PreviewNavigationWithoutRouter = ({\n collection = [],\n currentIndex,\n intl,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const handleInternalNavigation = () => {\n if (internalSidebarNavigationHandler && internalSidebarNavigation && internalSidebarNavigation.sidebar) {\n const { sidebar, ...rest } = internalSidebarNavigation;\n const hasDeeplink = Object.keys(rest).length > 0;\n\n if (hasDeeplink && sidebar === SIDEBAR_VIEW_METADATA) {\n internalSidebarNavigationHandler(internalSidebarNavigation);\n } else {\n internalSidebarNavigationHandler({ sidebar });\n }\n }\n };\n\n return (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n );\n};\n\nconst PreviewNavigation = (props: Props) => {\n const { routerDisabled = false } = props;\n\n if (routerDisabled) {\n return <PreviewNavigationWithoutRouter {...props} />;\n }\n\n return <PreviewNavigationWithRouter {...props} />;\n};\n\nexport default injectIntl(PreviewNavigation);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PreviewNavigation.js","names":["React","injectIntl","Route","IconNavigateLeft","IconNavigateRight","PlainButton","messages","SIDEBAR_VIEW_METADATA","PreviewNavigationWithRouter","collection","currentIndex","intl","onNavigateLeft","onNavigateRight","hasLeftNavigation","length","hasRightNavigation","goToActiveSidebarTab","routeParams","history","deeplink","activeTab","push","createElement","path","match","Fragment","className","onClick","params","title","formatMessage","previousFile","type","nextFile","PreviewNavigationWithoutRouter","internalSidebarNavigation","internalSidebarNavigationHandler","handleInternalNavigation","sidebar","rest","_objectWithoutProperties","_excluded","hasDeeplink","Object","keys","PreviewNavigation","props","routerDisabled"],"sources":["../../../src/elements/content-preview/PreviewNavigation.js"],"sourcesContent":["/**\n * @flow\n * @file Preview Navigation\n * @author Box\n */\n\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { Route } from 'react-router-dom';\nimport IconNavigateLeft from '../../icons/general/IconNavigateLeft';\nimport IconNavigateRight from '../../icons/general/IconNavigateRight';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport messages from '../common/messages';\nimport type { BoxItem } from '../../common/types/core';\nimport { SIDEBAR_VIEW_METADATA } from '../../constants';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype Props = {\n collection: Array<string | BoxItem>,\n currentIndex: number,\n intl: IntlShape,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onNavigateLeft: Function,\n onNavigateRight: Function,\n routerDisabled?: boolean,\n};\n\nconst PreviewNavigationWithRouter = ({\n collection = [],\n currentIndex,\n intl,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const goToActiveSidebarTab = (routeParams, history) => {\n if (routeParams.deeplink) {\n if (routeParams.activeTab === SIDEBAR_VIEW_METADATA) {\n history.push(`/${routeParams.activeTab}/${routeParams.deeplink}/${routeParams[0]}`);\n } else {\n history.push(`/${routeParams.activeTab}`);\n }\n }\n };\n\n return (\n <Route path={['/:activeTab/:deeplink/*', '/']}>\n {({ match, history }) => (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n data-testid=\"preview-navigation-left\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n data-testid=\"preview-navigation-right\"\n onClick={() => {\n goToActiveSidebarTab(match.params, history);\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n )}\n </Route>\n );\n};\n\nconst PreviewNavigationWithoutRouter = ({\n collection = [],\n currentIndex,\n intl,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n onNavigateLeft,\n onNavigateRight,\n}: Props) => {\n const hasLeftNavigation = collection.length > 1 && currentIndex > 0 && currentIndex < collection.length;\n const hasRightNavigation = collection.length > 1 && currentIndex > -1 && currentIndex < collection.length - 1;\n\n if (!hasLeftNavigation && !hasRightNavigation) {\n return null;\n }\n\n const handleInternalNavigation = () => {\n if (internalSidebarNavigationHandler && internalSidebarNavigation && internalSidebarNavigation.sidebar) {\n const { sidebar, ...rest } = internalSidebarNavigation;\n const hasDeeplink = Object.keys(rest).length > 0;\n\n if (hasDeeplink && sidebar === SIDEBAR_VIEW_METADATA) {\n internalSidebarNavigationHandler(internalSidebarNavigation);\n } else {\n internalSidebarNavigationHandler({ sidebar });\n }\n }\n };\n\n return (\n <>\n {hasLeftNavigation && (\n <PlainButton\n className=\"bcpr-navigate-left\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateLeft();\n }}\n title={intl.formatMessage(messages.previousFile)}\n type=\"button\"\n >\n <IconNavigateLeft />\n </PlainButton>\n )}\n {hasRightNavigation && (\n <PlainButton\n className=\"bcpr-navigate-right\"\n onClick={() => {\n handleInternalNavigation();\n onNavigateRight();\n }}\n title={intl.formatMessage(messages.nextFile)}\n type=\"button\"\n >\n <IconNavigateRight />\n </PlainButton>\n )}\n </>\n );\n};\n\nconst PreviewNavigation = (props: Props) => {\n const { routerDisabled = false } = props;\n\n if (routerDisabled) {\n return <PreviewNavigationWithoutRouter {...props} />;\n }\n\n return <PreviewNavigationWithRouter {...props} />;\n};\n\nexport default injectIntl(PreviewNavigation);\n"],"mappings":"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","ignoreList":[]}
@@ -176,11 +176,24 @@ class VersionsSidebarContainer extends React.Component {
176
176
  _defineProperty(this, "updateVersion", versionId => {
177
177
  const {
178
178
  history,
179
- match
179
+ match,
180
+ routerDisabled,
181
+ internalSidebarNavigationHandler,
182
+ internalSidebarNavigation
180
183
  } = this.props;
181
- return history.push(generatePath(match.path, _objectSpread(_objectSpread({}, match.params), {}, {
182
- versionId
183
- })));
184
+ if (routerDisabled && internalSidebarNavigationHandler) {
185
+ const navigationUpdate = _objectSpread({}, internalSidebarNavigation);
186
+ if (versionId) {
187
+ navigationUpdate.versionId = versionId;
188
+ } else {
189
+ delete navigationUpdate.versionId;
190
+ }
191
+ internalSidebarNavigationHandler(navigationUpdate);
192
+ } else {
193
+ history.push(generatePath(match.path, _objectSpread(_objectSpread({}, match.params), {}, {
194
+ versionId
195
+ })));
196
+ }
184
197
  });
185
198
  _defineProperty(this, "updateVersionToCurrent", () => {
186
199
  this.updateVersion(this.getCurrentVersionId());
@@ -241,22 +254,31 @@ class VersionsSidebarContainer extends React.Component {
241
254
  const {
242
255
  fileId,
243
256
  parentName,
244
- onUpgradeClick
257
+ onUpgradeClick,
258
+ routerDisabled,
259
+ internalSidebarNavigation,
260
+ internalSidebarNavigationHandler
245
261
  } = this.props;
246
262
  if (onUpgradeClick) {
247
263
  return /*#__PURE__*/React.createElement(StaticVersionsSidebar, _extends({
248
264
  onUpgradeClick: onUpgradeClick,
249
- parentName: parentName
265
+ parentName: parentName,
266
+ routerDisabled: routerDisabled,
267
+ internalSidebarNavigation: internalSidebarNavigation,
268
+ internalSidebarNavigationHandler: internalSidebarNavigationHandler
250
269
  }, this.state));
251
270
  }
252
271
  return /*#__PURE__*/React.createElement(VersionsSidebar, _extends({
253
272
  fileId: fileId,
273
+ internalSidebarNavigation: internalSidebarNavigation,
274
+ internalSidebarNavigationHandler: internalSidebarNavigationHandler,
254
275
  onDelete: this.handleActionDelete,
255
276
  onDownload: this.handleActionDownload,
256
277
  onPreview: this.handleActionPreview,
257
278
  onPromote: this.handleActionPromote,
258
279
  onRestore: this.handleActionRestore,
259
- parentName: parentName
280
+ parentName: parentName,
281
+ routerDisabled: routerDisabled
260
282
  }, this.state));
261
283
  }
262
284
  }
@@ -24,7 +24,12 @@ import { withAPIContext } from '../../common/api-context';
24
24
  import type { FeatureConfig } from '../../common/feature-checking';
25
25
  import type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';
26
26
  import type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';
27
- import { ViewType, type ViewTypeValues } from '../../common/types/SidebarNavigation';
27
+ import {
28
+ ViewType,
29
+ type ViewTypeValues,
30
+ type InternalSidebarNavigation,
31
+ type InternalSidebarNavigationHandler,
32
+ } from '../../common/types/SidebarNavigation';
28
33
 
29
34
  type Props = {
30
35
  api: API,
@@ -32,6 +37,8 @@ type Props = {
32
37
  fileId: string,
33
38
  hasSidebarInitialized?: boolean,
34
39
  history: RouterHistory,
40
+ internalSidebarNavigation?: InternalSidebarNavigation,
41
+ internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,
35
42
  match: Match,
36
43
  onLoad: SidebarLoadCallback,
37
44
  onUpgradeClick?: () => void,
@@ -42,6 +49,7 @@ type Props = {
42
49
  onVersionPromote: VersionActionCallback,
43
50
  onVersionRestore: VersionActionCallback,
44
51
  parentName: ViewTypeValues,
52
+ routerDisabled?: boolean,
45
53
  versionId?: string,
46
54
  };
47
55
 
@@ -264,8 +272,20 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
264
272
  }
265
273
 
266
274
  updateVersion = (versionId?: ?string): void => {
267
- const { history, match } = this.props;
268
- return history.push(generatePath(match.path, { ...match.params, versionId }));
275
+ const { history, match, routerDisabled, internalSidebarNavigationHandler, internalSidebarNavigation } =
276
+ this.props;
277
+
278
+ if (routerDisabled && internalSidebarNavigationHandler) {
279
+ const navigationUpdate: InternalSidebarNavigation = { ...internalSidebarNavigation };
280
+ if (versionId) {
281
+ navigationUpdate.versionId = versionId;
282
+ } else {
283
+ delete navigationUpdate.versionId;
284
+ }
285
+ internalSidebarNavigationHandler(navigationUpdate);
286
+ } else {
287
+ history.push(generatePath(match.path, { ...match.params, versionId }));
288
+ }
269
289
  };
270
290
 
271
291
  updateVersionToCurrent = (): void => {
@@ -287,21 +307,40 @@ class VersionsSidebarContainer extends React.Component<Props, State> {
287
307
  };
288
308
 
289
309
  render() {
290
- const { fileId, parentName, onUpgradeClick } = this.props;
310
+ const {
311
+ fileId,
312
+ parentName,
313
+ onUpgradeClick,
314
+ routerDisabled,
315
+ internalSidebarNavigation,
316
+ internalSidebarNavigationHandler,
317
+ } = this.props;
291
318
 
292
319
  if (onUpgradeClick) {
293
- return <StaticVersionsSidebar onUpgradeClick={onUpgradeClick} parentName={parentName} {...this.state} />;
320
+ return (
321
+ <StaticVersionsSidebar
322
+ onUpgradeClick={onUpgradeClick}
323
+ parentName={parentName}
324
+ routerDisabled={routerDisabled}
325
+ internalSidebarNavigation={internalSidebarNavigation}
326
+ internalSidebarNavigationHandler={internalSidebarNavigationHandler}
327
+ {...this.state}
328
+ />
329
+ );
294
330
  }
295
331
 
296
332
  return (
297
333
  <VersionsSidebar
298
334
  fileId={fileId}
335
+ internalSidebarNavigation={internalSidebarNavigation}
336
+ internalSidebarNavigationHandler={internalSidebarNavigationHandler}
299
337
  onDelete={this.handleActionDelete}
300
338
  onDownload={this.handleActionDownload}
301
339
  onPreview={this.handleActionPreview}
302
340
  onPromote={this.handleActionPromote}
303
341
  onRestore={this.handleActionRestore}
304
342
  parentName={parentName}
343
+ routerDisabled={routerDisabled}
305
344
  {...this.state}
306
345
  />
307
346
  );
@@ -1 +1 @@
1
- {"version":3,"file":"VersionsSidebarContainer.js","names":["React","flow","getProp","merge","noop","generatePath","withRouter","withFeatureConsumer","isFeatureEnabled","API","FIELD_METADATA_ARCHIVE","messages","openUrlInsideIframe","StaticVersionsSidebar","VersionsSidebar","VersionsSidebarAPI","withAPIContext","ViewType","VersionsSidebarContainer","Component","constructor","args","_defineProperty","isArchived","isLoading","isWatermarked","versionCount","Infinity","versionLimit","versions","window","versionId","setState","api","deleteVersion","findVersion","then","fetchVersion","handleDeleteSuccess","props","onVersionDelete","catch","handleActionError","versionActionDeleteError","fetchDownloadUrl","onVersionDownload","versionActionDownloadError","updateVersion","onVersionPreview","promoteVersion","fetchData","handleFetchSuccess","handlePromoteSuccess","onVersionPromote","versionActionPromoteError","restoreVersion","handleRestoreSuccess","onVersionRestore","versionActionRestoreError","message","error","data","selectedVersionId","id","mergeResponse","updateVersionToCurrent","versionFetchError","fileResponse","versionsResponse","version_limit","undefined","versionsWithPermissions","getVersionsAPI","addPermissions","entries","total_count","sortVersions","verifyVersion","file","file_version","fileVersion","features","fileId","isArchiveFeatureEnabled","handleFetchError","state","find","version","newVersion","newVersionId","map","_objectSpread","newVersions","mergeVersions","history","match","push","path","params","getCurrentVersionId","onVersionChange","selectedVersion","currentVersionId","componentDidMount","onLoad","initialize","component","feature","componentDidUpdate","prevFileId","prevVersionId","refresh","sort","a","b","Date","parse","created_at","render","parentName","onUpgradeClick","createElement","_extends","onDelete","handleActionDelete","onDownload","handleActionDownload","onPreview","handleActionPreview","onPromote","handleActionPromote","onRestore","handleActionRestore","DETAILS","VersionsSidebarContainerComponent"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebarContainer.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar container\n * @author Box\n */\n\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport merge from 'lodash/merge';\nimport noop from 'lodash/noop';\nimport { generatePath, withRouter } from 'react-router-dom';\nimport type { Match, RouterHistory } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport { withFeatureConsumer, isFeatureEnabled } from '../../common/feature-checking';\nimport API from '../../../api';\nimport { FIELD_METADATA_ARCHIVE } from '../../../constants';\nimport messages from './messages';\nimport openUrlInsideIframe from '../../../utils/iframe';\nimport StaticVersionsSidebar from './StaticVersionSidebar';\nimport VersionsSidebar from './VersionsSidebar';\nimport VersionsSidebarAPI from './VersionsSidebarAPI';\nimport { withAPIContext } from '../../common/api-context';\nimport type { FeatureConfig } from '../../common/feature-checking';\nimport type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';\nimport type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';\nimport { ViewType, type ViewTypeValues } from '../../common/types/SidebarNavigation';\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n fileId: string,\n hasSidebarInitialized?: boolean,\n history: RouterHistory,\n match: Match,\n onLoad: SidebarLoadCallback,\n onUpgradeClick?: () => void,\n onVersionChange: VersionChangeCallback,\n onVersionDelete: VersionActionCallback,\n onVersionDownload: VersionActionCallback,\n onVersionPreview: VersionActionCallback,\n onVersionPromote: VersionActionCallback,\n onVersionRestore: VersionActionCallback,\n parentName: ViewTypeValues,\n versionId?: string,\n};\n\ntype State = {\n error?: MessageDescriptor,\n isArchived: boolean,\n isLoading: boolean,\n isWatermarked: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nclass VersionsSidebarContainer extends React.Component<Props, State> {\n static defaultProps = {\n onLoad: noop,\n onVersionChange: noop,\n onVersionDelete: noop,\n onVersionDownload: noop,\n onVersionPreview: noop,\n onVersionPromote: noop,\n onVersionRestore: noop,\n parentName: ViewType.DETAILS,\n };\n\n api: VersionsSidebarAPI;\n\n props: Props;\n\n state: State = {\n isArchived: false,\n isLoading: true,\n isWatermarked: false,\n versionCount: Infinity,\n versionLimit: Infinity,\n versions: [],\n };\n\n window: any = window;\n\n componentDidMount() {\n const { onLoad } = this.props;\n this.initialize();\n this.fetchData().then(() => {\n onLoad({ component: 'preview', feature: 'versions' });\n });\n }\n\n componentDidUpdate({ fileId: prevFileId, versionId: prevVersionId }: Props) {\n const { fileId, versionId } = this.props;\n\n if (fileId !== prevFileId) {\n this.refresh();\n }\n\n if (versionId !== prevVersionId) {\n this.verifyVersion();\n }\n }\n\n handleActionDelete = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .deleteVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleDeleteSuccess)\n .then(() => this.props.onVersionDelete(versionId))\n .catch(() => this.handleActionError(messages.versionActionDeleteError));\n };\n\n handleActionDownload = (versionId: string): Promise<void> => {\n return this.api\n .fetchDownloadUrl(this.findVersion(versionId))\n .then(openUrlInsideIframe)\n .then(() => this.props.onVersionDownload(versionId))\n .catch(() => this.handleActionError(messages.versionActionDownloadError));\n };\n\n handleActionPreview = (versionId: string): void => {\n this.updateVersion(versionId);\n this.props.onVersionPreview(versionId);\n };\n\n handleActionPromote = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .promoteVersion(this.findVersion(versionId))\n .then(this.api.fetchData)\n .then(this.handleFetchSuccess)\n .then(this.handlePromoteSuccess)\n .then(() => this.props.onVersionPromote(versionId))\n .catch(() => this.handleActionError(messages.versionActionPromoteError));\n };\n\n handleActionRestore = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .restoreVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleRestoreSuccess)\n .then(() => this.props.onVersionRestore(versionId))\n .catch(() => this.handleActionError(messages.versionActionRestoreError));\n };\n\n handleActionError = (message: MessageDescriptor): void => {\n this.setState({\n error: message,\n isLoading: false,\n });\n };\n\n handleDeleteSuccess = (data: BoxItemVersion): void => {\n const { versionId: selectedVersionId } = this.props;\n const { id: versionId } = data;\n\n this.mergeResponse(data);\n\n // Bump the user to the current version if they deleted their selected version\n if (versionId === selectedVersionId) {\n this.updateVersionToCurrent();\n }\n };\n\n handleRestoreSuccess = (data: BoxItemVersion): void => {\n this.mergeResponse(data);\n };\n\n handleFetchError = (): void => {\n this.setState({\n error: messages.versionFetchError,\n isArchived: false,\n isLoading: false,\n isWatermarked: false,\n versionCount: 0,\n versions: [],\n });\n };\n\n handleFetchSuccess = ([fileResponse, versionsResponse]: [BoxItem, FileVersions]): [BoxItem, FileVersions] => {\n const { api } = this.props;\n const { version_limit } = fileResponse;\n const isArchived = !!getProp(fileResponse, FIELD_METADATA_ARCHIVE);\n const isWatermarked = getProp(fileResponse, 'watermark_info.is_watermarked', false);\n const versionLimit = version_limit !== null && version_limit !== undefined ? version_limit : Infinity;\n const versionsWithPermissions = api.getVersionsAPI(false).addPermissions(versionsResponse, fileResponse) || {};\n const { entries: versions, total_count: versionCount } = versionsWithPermissions;\n\n this.setState(\n {\n error: undefined,\n isArchived,\n isLoading: false,\n isWatermarked,\n versionCount,\n versionLimit,\n versions: this.sortVersions(versions),\n },\n this.verifyVersion,\n );\n\n return [fileResponse, versionsResponse];\n };\n\n handlePromoteSuccess = ([file]: [BoxItem, FileVersions]): void => {\n const { file_version: fileVersion } = file;\n\n if (fileVersion) {\n this.updateVersion(fileVersion.id);\n }\n };\n\n initialize = (): void => {\n const { api, features, fileId }: Props = this.props;\n const isArchiveFeatureEnabled = isFeatureEnabled(features, 'contentSidebar.archive.enabled');\n\n this.api = new VersionsSidebarAPI({ api, fileId, isArchiveFeatureEnabled });\n };\n\n fetchData = (): Promise<?[BoxItem, FileVersions]> => {\n return this.api.fetchData().then(this.handleFetchSuccess).catch(this.handleFetchError);\n };\n\n findVersion = (versionId: ?string): ?BoxItemVersion => {\n const { versions } = this.state;\n\n return versions.find(version => version.id === versionId);\n };\n\n getCurrentVersionId = (): ?string => {\n const { versions } = this.state;\n return versions[0] ? versions[0].id : null;\n };\n\n mergeVersions = (newVersion: BoxItemVersion): Array<BoxItemVersion> => {\n const { versions } = this.state;\n const newVersionId = newVersion ? newVersion.id : '';\n return versions.map(version => (version.id === newVersionId ? merge({ ...version }, newVersion) : version));\n };\n\n mergeResponse = (data: BoxItemVersion): void => {\n const newVersions = this.mergeVersions(data);\n\n this.setState({\n error: undefined,\n isLoading: false,\n versions: newVersions,\n });\n };\n\n refresh(): void {\n this.initialize();\n this.setState({ isLoading: true }, this.fetchData);\n }\n\n sortVersions(versions?: Array<BoxItemVersion> = []): Array<BoxItemVersion> {\n return [...versions].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at));\n }\n\n updateVersion = (versionId?: ?string): void => {\n const { history, match } = this.props;\n return history.push(generatePath(match.path, { ...match.params, versionId }));\n };\n\n updateVersionToCurrent = (): void => {\n this.updateVersion(this.getCurrentVersionId());\n };\n\n verifyVersion = () => {\n const { onVersionChange, versionId } = this.props;\n const selectedVersion = this.findVersion(versionId);\n\n if (selectedVersion) {\n onVersionChange(selectedVersion, {\n currentVersionId: this.getCurrentVersionId(),\n updateVersionToCurrent: this.updateVersionToCurrent,\n });\n } else {\n this.updateVersionToCurrent();\n }\n };\n\n render() {\n const { fileId, parentName, onUpgradeClick } = this.props;\n\n if (onUpgradeClick) {\n return <StaticVersionsSidebar onUpgradeClick={onUpgradeClick} parentName={parentName} {...this.state} />;\n }\n\n return (\n <VersionsSidebar\n fileId={fileId}\n onDelete={this.handleActionDelete}\n onDownload={this.handleActionDownload}\n onPreview={this.handleActionPreview}\n onPromote={this.handleActionPromote}\n onRestore={this.handleActionRestore}\n parentName={parentName}\n {...this.state}\n />\n );\n }\n}\n\nexport type VersionsSidebarProps = Props;\nexport { VersionsSidebarContainer as VersionsSidebarContainerComponent };\nexport default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VersionsSidebarContainer.js","names":["React","flow","getProp","merge","noop","generatePath","withRouter","withFeatureConsumer","isFeatureEnabled","API","FIELD_METADATA_ARCHIVE","messages","openUrlInsideIframe","StaticVersionsSidebar","VersionsSidebar","VersionsSidebarAPI","withAPIContext","ViewType","VersionsSidebarContainer","Component","constructor","args","_defineProperty","isArchived","isLoading","isWatermarked","versionCount","Infinity","versionLimit","versions","window","versionId","setState","api","deleteVersion","findVersion","then","fetchVersion","handleDeleteSuccess","props","onVersionDelete","catch","handleActionError","versionActionDeleteError","fetchDownloadUrl","onVersionDownload","versionActionDownloadError","updateVersion","onVersionPreview","promoteVersion","fetchData","handleFetchSuccess","handlePromoteSuccess","onVersionPromote","versionActionPromoteError","restoreVersion","handleRestoreSuccess","onVersionRestore","versionActionRestoreError","message","error","data","selectedVersionId","id","mergeResponse","updateVersionToCurrent","versionFetchError","fileResponse","versionsResponse","version_limit","undefined","versionsWithPermissions","getVersionsAPI","addPermissions","entries","total_count","sortVersions","verifyVersion","file","file_version","fileVersion","features","fileId","isArchiveFeatureEnabled","handleFetchError","state","find","version","newVersion","newVersionId","map","_objectSpread","newVersions","mergeVersions","history","match","routerDisabled","internalSidebarNavigationHandler","internalSidebarNavigation","navigationUpdate","push","path","params","getCurrentVersionId","onVersionChange","selectedVersion","currentVersionId","componentDidMount","onLoad","initialize","component","feature","componentDidUpdate","prevFileId","prevVersionId","refresh","sort","a","b","Date","parse","created_at","render","parentName","onUpgradeClick","createElement","_extends","onDelete","handleActionDelete","onDownload","handleActionDownload","onPreview","handleActionPreview","onPromote","handleActionPromote","onRestore","handleActionRestore","DETAILS","VersionsSidebarContainerComponent"],"sources":["../../../../src/elements/content-sidebar/versions/VersionsSidebarContainer.js"],"sourcesContent":["/**\n * @flow\n * @file Versions Sidebar container\n * @author Box\n */\n\nimport * as React from 'react';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport merge from 'lodash/merge';\nimport noop from 'lodash/noop';\nimport { generatePath, withRouter } from 'react-router-dom';\nimport type { Match, RouterHistory } from 'react-router-dom';\nimport type { MessageDescriptor } from 'react-intl';\nimport { withFeatureConsumer, isFeatureEnabled } from '../../common/feature-checking';\nimport API from '../../../api';\nimport { FIELD_METADATA_ARCHIVE } from '../../../constants';\nimport messages from './messages';\nimport openUrlInsideIframe from '../../../utils/iframe';\nimport StaticVersionsSidebar from './StaticVersionSidebar';\nimport VersionsSidebar from './VersionsSidebar';\nimport VersionsSidebarAPI from './VersionsSidebarAPI';\nimport { withAPIContext } from '../../common/api-context';\nimport type { FeatureConfig } from '../../common/feature-checking';\nimport type { VersionActionCallback, VersionChangeCallback, SidebarLoadCallback } from './flowTypes';\nimport type { BoxItemVersion, BoxItem, FileVersions } from '../../../common/types/core';\nimport {\n ViewType,\n type ViewTypeValues,\n type InternalSidebarNavigation,\n type InternalSidebarNavigationHandler,\n} from '../../common/types/SidebarNavigation';\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n fileId: string,\n hasSidebarInitialized?: boolean,\n history: RouterHistory,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n match: Match,\n onLoad: SidebarLoadCallback,\n onUpgradeClick?: () => void,\n onVersionChange: VersionChangeCallback,\n onVersionDelete: VersionActionCallback,\n onVersionDownload: VersionActionCallback,\n onVersionPreview: VersionActionCallback,\n onVersionPromote: VersionActionCallback,\n onVersionRestore: VersionActionCallback,\n parentName: ViewTypeValues,\n routerDisabled?: boolean,\n versionId?: string,\n};\n\ntype State = {\n error?: MessageDescriptor,\n isArchived: boolean,\n isLoading: boolean,\n isWatermarked: boolean,\n versionCount: number,\n versionLimit: number,\n versions: Array<BoxItemVersion>,\n};\n\nclass VersionsSidebarContainer extends React.Component<Props, State> {\n static defaultProps = {\n onLoad: noop,\n onVersionChange: noop,\n onVersionDelete: noop,\n onVersionDownload: noop,\n onVersionPreview: noop,\n onVersionPromote: noop,\n onVersionRestore: noop,\n parentName: ViewType.DETAILS,\n };\n\n api: VersionsSidebarAPI;\n\n props: Props;\n\n state: State = {\n isArchived: false,\n isLoading: true,\n isWatermarked: false,\n versionCount: Infinity,\n versionLimit: Infinity,\n versions: [],\n };\n\n window: any = window;\n\n componentDidMount() {\n const { onLoad } = this.props;\n this.initialize();\n this.fetchData().then(() => {\n onLoad({ component: 'preview', feature: 'versions' });\n });\n }\n\n componentDidUpdate({ fileId: prevFileId, versionId: prevVersionId }: Props) {\n const { fileId, versionId } = this.props;\n\n if (fileId !== prevFileId) {\n this.refresh();\n }\n\n if (versionId !== prevVersionId) {\n this.verifyVersion();\n }\n }\n\n handleActionDelete = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .deleteVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleDeleteSuccess)\n .then(() => this.props.onVersionDelete(versionId))\n .catch(() => this.handleActionError(messages.versionActionDeleteError));\n };\n\n handleActionDownload = (versionId: string): Promise<void> => {\n return this.api\n .fetchDownloadUrl(this.findVersion(versionId))\n .then(openUrlInsideIframe)\n .then(() => this.props.onVersionDownload(versionId))\n .catch(() => this.handleActionError(messages.versionActionDownloadError));\n };\n\n handleActionPreview = (versionId: string): void => {\n this.updateVersion(versionId);\n this.props.onVersionPreview(versionId);\n };\n\n handleActionPromote = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .promoteVersion(this.findVersion(versionId))\n .then(this.api.fetchData)\n .then(this.handleFetchSuccess)\n .then(this.handlePromoteSuccess)\n .then(() => this.props.onVersionPromote(versionId))\n .catch(() => this.handleActionError(messages.versionActionPromoteError));\n };\n\n handleActionRestore = (versionId: string): Promise<void> => {\n this.setState({ isLoading: true });\n\n return this.api\n .restoreVersion(this.findVersion(versionId))\n .then(() => this.api.fetchVersion(versionId))\n .then(this.handleRestoreSuccess)\n .then(() => this.props.onVersionRestore(versionId))\n .catch(() => this.handleActionError(messages.versionActionRestoreError));\n };\n\n handleActionError = (message: MessageDescriptor): void => {\n this.setState({\n error: message,\n isLoading: false,\n });\n };\n\n handleDeleteSuccess = (data: BoxItemVersion): void => {\n const { versionId: selectedVersionId } = this.props;\n const { id: versionId } = data;\n\n this.mergeResponse(data);\n\n // Bump the user to the current version if they deleted their selected version\n if (versionId === selectedVersionId) {\n this.updateVersionToCurrent();\n }\n };\n\n handleRestoreSuccess = (data: BoxItemVersion): void => {\n this.mergeResponse(data);\n };\n\n handleFetchError = (): void => {\n this.setState({\n error: messages.versionFetchError,\n isArchived: false,\n isLoading: false,\n isWatermarked: false,\n versionCount: 0,\n versions: [],\n });\n };\n\n handleFetchSuccess = ([fileResponse, versionsResponse]: [BoxItem, FileVersions]): [BoxItem, FileVersions] => {\n const { api } = this.props;\n const { version_limit } = fileResponse;\n const isArchived = !!getProp(fileResponse, FIELD_METADATA_ARCHIVE);\n const isWatermarked = getProp(fileResponse, 'watermark_info.is_watermarked', false);\n const versionLimit = version_limit !== null && version_limit !== undefined ? version_limit : Infinity;\n const versionsWithPermissions = api.getVersionsAPI(false).addPermissions(versionsResponse, fileResponse) || {};\n const { entries: versions, total_count: versionCount } = versionsWithPermissions;\n\n this.setState(\n {\n error: undefined,\n isArchived,\n isLoading: false,\n isWatermarked,\n versionCount,\n versionLimit,\n versions: this.sortVersions(versions),\n },\n this.verifyVersion,\n );\n\n return [fileResponse, versionsResponse];\n };\n\n handlePromoteSuccess = ([file]: [BoxItem, FileVersions]): void => {\n const { file_version: fileVersion } = file;\n\n if (fileVersion) {\n this.updateVersion(fileVersion.id);\n }\n };\n\n initialize = (): void => {\n const { api, features, fileId }: Props = this.props;\n const isArchiveFeatureEnabled = isFeatureEnabled(features, 'contentSidebar.archive.enabled');\n\n this.api = new VersionsSidebarAPI({ api, fileId, isArchiveFeatureEnabled });\n };\n\n fetchData = (): Promise<?[BoxItem, FileVersions]> => {\n return this.api.fetchData().then(this.handleFetchSuccess).catch(this.handleFetchError);\n };\n\n findVersion = (versionId: ?string): ?BoxItemVersion => {\n const { versions } = this.state;\n\n return versions.find(version => version.id === versionId);\n };\n\n getCurrentVersionId = (): ?string => {\n const { versions } = this.state;\n return versions[0] ? versions[0].id : null;\n };\n\n mergeVersions = (newVersion: BoxItemVersion): Array<BoxItemVersion> => {\n const { versions } = this.state;\n const newVersionId = newVersion ? newVersion.id : '';\n return versions.map(version => (version.id === newVersionId ? merge({ ...version }, newVersion) : version));\n };\n\n mergeResponse = (data: BoxItemVersion): void => {\n const newVersions = this.mergeVersions(data);\n\n this.setState({\n error: undefined,\n isLoading: false,\n versions: newVersions,\n });\n };\n\n refresh(): void {\n this.initialize();\n this.setState({ isLoading: true }, this.fetchData);\n }\n\n sortVersions(versions?: Array<BoxItemVersion> = []): Array<BoxItemVersion> {\n return [...versions].sort((a, b) => Date.parse(b.created_at) - Date.parse(a.created_at));\n }\n\n updateVersion = (versionId?: ?string): void => {\n const { history, match, routerDisabled, internalSidebarNavigationHandler, internalSidebarNavigation } =\n this.props;\n\n if (routerDisabled && internalSidebarNavigationHandler) {\n const navigationUpdate: InternalSidebarNavigation = { ...internalSidebarNavigation };\n if (versionId) {\n navigationUpdate.versionId = versionId;\n } else {\n delete navigationUpdate.versionId;\n }\n internalSidebarNavigationHandler(navigationUpdate);\n } else {\n history.push(generatePath(match.path, { ...match.params, versionId }));\n }\n };\n\n updateVersionToCurrent = (): void => {\n this.updateVersion(this.getCurrentVersionId());\n };\n\n verifyVersion = () => {\n const { onVersionChange, versionId } = this.props;\n const selectedVersion = this.findVersion(versionId);\n\n if (selectedVersion) {\n onVersionChange(selectedVersion, {\n currentVersionId: this.getCurrentVersionId(),\n updateVersionToCurrent: this.updateVersionToCurrent,\n });\n } else {\n this.updateVersionToCurrent();\n }\n };\n\n render() {\n const {\n fileId,\n parentName,\n onUpgradeClick,\n routerDisabled,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n } = this.props;\n\n if (onUpgradeClick) {\n return (\n <StaticVersionsSidebar\n onUpgradeClick={onUpgradeClick}\n parentName={parentName}\n routerDisabled={routerDisabled}\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n {...this.state}\n />\n );\n }\n\n return (\n <VersionsSidebar\n fileId={fileId}\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n onDelete={this.handleActionDelete}\n onDownload={this.handleActionDownload}\n onPreview={this.handleActionPreview}\n onPromote={this.handleActionPromote}\n onRestore={this.handleActionRestore}\n parentName={parentName}\n routerDisabled={routerDisabled}\n {...this.state}\n />\n );\n }\n}\n\nexport type VersionsSidebarProps = Props;\nexport { VersionsSidebarContainer as VersionsSidebarContainerComponent };\nexport default flow([withRouter, withAPIContext, withFeatureConsumer])(VersionsSidebarContainer);\n"],"mappings":"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","ignoreList":[]}