box-ui-elements 24.0.0-beta.5 → 24.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +1 -1
  3. package/dist/picker.js +1 -1
  4. package/es/elements/content-explorer/Content.js +3 -1
  5. package/es/elements/content-explorer/Content.js.map +1 -1
  6. package/es/elements/content-explorer/ContentExplorer.js +17 -6
  7. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  8. package/es/elements/content-explorer/MetadataQueryAPIHelper.js +104 -7
  9. package/es/elements/content-explorer/MetadataQueryAPIHelper.js.map +1 -1
  10. package/es/elements/content-explorer/MetadataQueryBuilder.js +154 -0
  11. package/es/elements/content-explorer/MetadataQueryBuilder.js.map +1 -0
  12. package/es/elements/content-explorer/MetadataViewContainer.js +92 -46
  13. package/es/elements/content-explorer/MetadataViewContainer.js.map +1 -1
  14. package/es/elements/content-explorer/constants.js +4 -2
  15. package/es/elements/content-explorer/constants.js.map +1 -1
  16. package/es/elements/content-explorer/stories/MetadataView.stories.js +3 -25
  17. package/es/elements/content-explorer/stories/MetadataView.stories.js.map +1 -1
  18. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +4 -16
  19. package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
  20. package/es/elements/content-explorer/utils.js +12 -0
  21. package/es/elements/content-explorer/utils.js.map +1 -1
  22. package/es/src/elements/common/__mocks__/mockMetadata.d.ts +8 -24
  23. package/es/src/elements/content-explorer/Content.d.ts +4 -3
  24. package/es/src/elements/content-explorer/ContentExplorer.d.ts +8 -3
  25. package/es/src/elements/content-explorer/MetadataQueryAPIHelper.d.ts +11 -2
  26. package/es/src/elements/content-explorer/MetadataQueryBuilder.d.ts +27 -0
  27. package/es/src/elements/content-explorer/MetadataViewContainer.d.ts +8 -4
  28. package/es/src/elements/content-explorer/__tests__/MetadataQueryBuilder.test.d.ts +1 -0
  29. package/es/src/elements/content-explorer/constants.d.ts +4 -2
  30. package/es/src/elements/content-explorer/utils.d.ts +2 -0
  31. package/i18n/bn-IN.js +1 -1
  32. package/i18n/bn-IN.properties +8 -0
  33. package/i18n/da-DK.js +1 -1
  34. package/i18n/da-DK.properties +8 -0
  35. package/i18n/de-DE.js +1 -1
  36. package/i18n/de-DE.properties +8 -0
  37. package/i18n/en-AU.js +1 -1
  38. package/i18n/en-AU.properties +8 -0
  39. package/i18n/en-CA.js +1 -1
  40. package/i18n/en-CA.properties +8 -0
  41. package/i18n/en-GB.js +1 -1
  42. package/i18n/en-GB.properties +8 -0
  43. package/i18n/es-419.js +1 -1
  44. package/i18n/es-419.properties +8 -0
  45. package/i18n/es-ES.js +1 -1
  46. package/i18n/es-ES.properties +8 -0
  47. package/i18n/fi-FI.js +1 -1
  48. package/i18n/fi-FI.properties +8 -0
  49. package/i18n/fr-CA.js +1 -1
  50. package/i18n/fr-CA.properties +8 -0
  51. package/i18n/fr-FR.js +1 -1
  52. package/i18n/fr-FR.properties +8 -0
  53. package/i18n/hi-IN.js +1 -1
  54. package/i18n/hi-IN.properties +8 -0
  55. package/i18n/it-IT.js +1 -1
  56. package/i18n/it-IT.properties +8 -0
  57. package/i18n/ja-JP.js +1 -1
  58. package/i18n/ja-JP.properties +8 -0
  59. package/i18n/ko-KR.js +1 -1
  60. package/i18n/ko-KR.properties +8 -0
  61. package/i18n/nb-NO.js +1 -1
  62. package/i18n/nb-NO.properties +8 -0
  63. package/i18n/nl-NL.js +1 -1
  64. package/i18n/nl-NL.properties +8 -0
  65. package/i18n/pl-PL.js +1 -1
  66. package/i18n/pl-PL.properties +8 -0
  67. package/i18n/pt-BR.js +1 -1
  68. package/i18n/pt-BR.properties +8 -0
  69. package/i18n/ru-RU.js +1 -1
  70. package/i18n/ru-RU.properties +8 -0
  71. package/i18n/sv-SE.js +1 -1
  72. package/i18n/sv-SE.properties +8 -0
  73. package/i18n/tr-TR.js +1 -1
  74. package/i18n/tr-TR.properties +8 -0
  75. package/i18n/zh-CN.js +1 -1
  76. package/i18n/zh-CN.properties +8 -0
  77. package/i18n/zh-TW.js +1 -1
  78. package/i18n/zh-TW.properties +8 -0
  79. package/package.json +3 -3
  80. package/src/elements/common/__mocks__/mockMetadata.ts +7 -11
  81. package/src/elements/content-explorer/Content.tsx +8 -2
  82. package/src/elements/content-explorer/ContentExplorer.tsx +209 -194
  83. package/src/elements/content-explorer/MetadataQueryAPIHelper.ts +111 -5
  84. package/src/elements/content-explorer/MetadataQueryBuilder.ts +194 -0
  85. package/src/elements/content-explorer/MetadataViewContainer.tsx +112 -37
  86. package/src/elements/content-explorer/__tests__/Content.test.tsx +1 -0
  87. package/src/elements/content-explorer/__tests__/ContentExplorer.test.tsx +2 -5
  88. package/src/elements/content-explorer/__tests__/MetadataQueryAPIHelper.test.ts +427 -8
  89. package/src/elements/content-explorer/__tests__/MetadataQueryBuilder.test.ts +535 -0
  90. package/src/elements/content-explorer/__tests__/MetadataViewContainer.test.tsx +413 -9
  91. package/src/elements/content-explorer/constants.ts +39 -2
  92. package/src/elements/content-explorer/stories/MetadataView.stories.tsx +3 -21
  93. package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +2 -13
  94. package/src/elements/content-explorer/utils.ts +17 -0
@@ -582,12 +582,18 @@ be.messageCenter.previewError = 很抱歉,顯示此影像時發生問題。
582
582
  be.messageCenter.product = 產品
583
583
  # Title for the message center modal
584
584
  be.messageCenter.title = 新增內容
585
+ # Text shown in error notification banner
586
+ be.metadataUpdateErrorNotification = Unable to save changes. Please try again.
587
+ # Text shown in success notification banner
588
+ be.metadataUpdateSuccessNotification = {numSelected, plural, =1 {1 document updated} other {# documents updated} }
585
589
  # Text for modified date with modified prefix.
586
590
  be.modifiedDate = 於 {date} 修改
587
591
  # Text for modified date with user with modified prefix.
588
592
  be.modifiedDateBy = {name} 於 {date} 修改
589
593
  # Label for a button that displays more options
590
594
  be.moreOptions = 更多選項
595
+ # Display text for field when there are multiple items selected and have different value
596
+ be.multipleValues = Multiple Values
591
597
  # Name ascending option shown in the share access drop down select.
592
598
  be.nameASC = 名稱:A → Z
593
599
  # Name descending option shown in the share access drop down select.
@@ -834,6 +840,8 @@ be.skillUnknownError = 執行這個技能或擷取其資料時發生錯誤。
834
840
  be.sort = 排序
835
841
  # Label for status skill card in the preview sidebar
836
842
  be.statusSkill = 狀態
843
+ # Generic success label.
844
+ be.success = Success
837
845
  # Shown instead of todays date.
838
846
  be.today = 今天
839
847
  # Label for keywords/topics skill section in the preview sidebar
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-ui-elements",
3
- "version": "24.0.0-beta.5",
3
+ "version": "24.0.0-beta.7",
4
4
  "description": "Box UI Elements",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -140,7 +140,7 @@
140
140
  "@box/languages": "^1.0.0",
141
141
  "@box/metadata-editor": "^0.122.12",
142
142
  "@box/metadata-filter": "^1.19.2",
143
- "@box/metadata-view": "^0.41.2",
143
+ "@box/metadata-view": "^0.48.1",
144
144
  "@box/react-virtualized": "^9.22.3-rc-box.10",
145
145
  "@box/types": "^0.2.1",
146
146
  "@cfaester/enzyme-adapter-react-18": "^0.8.0",
@@ -307,7 +307,7 @@
307
307
  "@box/item-icon": "^0.17.15",
308
308
  "@box/metadata-editor": "^0.122.12",
309
309
  "@box/metadata-filter": "^1.19.2",
310
- "@box/metadata-view": "^0.41.2",
310
+ "@box/metadata-view": "^0.48.1",
311
311
  "@box/react-virtualized": "^9.22.3-rc-box.10",
312
312
  "@box/types": "^0.2.1",
313
313
  "@hapi/address": "^2.1.4",
@@ -9,7 +9,6 @@ const mockMetadata = {
9
9
  role: ['Business Owner', 'Marketing'],
10
10
  $template: 'templateName',
11
11
  $parent: 'file_1188899160835',
12
- name: 'something',
13
12
  industry: 'Technology',
14
13
  last_contacted_at: '2023-11-16T00:00:00.000Z',
15
14
  $version: 9,
@@ -31,7 +30,6 @@ const mockMetadata = {
31
30
  role: ['Developer'],
32
31
  $template: 'templateName',
33
32
  $parent: 'file_1318276254035',
34
- name: '1',
35
33
  industry: 'Technology',
36
34
  last_contacted_at: '2023-11-01T00:00:00.000Z',
37
35
  $version: 3,
@@ -94,7 +92,6 @@ const mockMetadata = {
94
92
  $scope: 'enterprise_0',
95
93
  $template: 'templateName',
96
94
  $parent: 'file_1812508470016',
97
- name: 'in folder 3 that doesnt have metadata',
98
95
  $version: 0,
99
96
  },
100
97
  },
@@ -154,14 +151,6 @@ const mockSchema = {
154
151
  hidden: false,
155
152
  copyInstanceOnItemCopy: false,
156
153
  fields: [
157
- {
158
- id: '56b6f00e-5db3-4875-a31d-14b20f63c0ea',
159
- type: 'string',
160
- key: 'name',
161
- displayName: 'Name',
162
- hidden: false,
163
- description: 'The customer name',
164
- },
165
154
  {
166
155
  id: '07d3c06c-5db4-4f3f-821e-19219ba70ed3',
167
156
  type: 'date',
@@ -220,6 +209,13 @@ const mockSchema = {
220
209
  },
221
210
  ],
222
211
  },
212
+ {
213
+ id: 'c3f87bb0-44df-4689-aafe-b9ed4aecbb01',
214
+ type: 'float',
215
+ key: 'number',
216
+ displayName: 'Merit Count',
217
+ hidden: false,
218
+ },
223
219
  ],
224
220
  };
225
221
 
@@ -4,7 +4,7 @@ import ItemGrid from '../common/item-grid';
4
4
  import ItemList from '../common/item-list';
5
5
  import ProgressBar from '../common/progress-bar';
6
6
  import MetadataBasedItemList from '../../features/metadata-based-view';
7
- import MetadataViewContainer, { MetadataViewContainerProps } from './MetadataViewContainer';
7
+ import MetadataViewContainer, { ExternalFilterValues, MetadataViewContainerProps } from './MetadataViewContainer';
8
8
  import { isFeatureEnabled, type FeatureConfig } from '../common/feature-checking';
9
9
  import { VIEW_ERROR, VIEW_METADATA, VIEW_MODE_LIST, VIEW_MODE_GRID, VIEW_SELECTED } from '../../constants';
10
10
  import type { ViewMode } from '../common/flowTypes';
@@ -37,7 +37,11 @@ export interface ContentProps extends Required<ItemEventHandlers>, Required<Item
37
37
  isTouch: boolean;
38
38
  itemActions?: ItemAction[];
39
39
  metadataTemplate?: MetadataTemplate;
40
- metadataViewProps?: Omit<MetadataViewContainerProps, 'currentCollection'>;
40
+ metadataViewProps?: Omit<
41
+ MetadataViewContainerProps,
42
+ 'hasError' | 'currentCollection' | 'metadataTemplate' | 'onMetadataFilter'
43
+ >;
44
+ onMetadataFilter?: (fields: ExternalFilterValues) => void;
41
45
  onMetadataUpdate: (
42
46
  item: BoxItem,
43
47
  field: string,
@@ -57,6 +61,7 @@ const Content = ({
57
61
  gridColumnCount,
58
62
  metadataTemplate,
59
63
  metadataViewProps,
64
+ onMetadataFilter,
60
65
  onMetadataUpdate,
61
66
  onSortChange,
62
67
  view,
@@ -89,6 +94,7 @@ const Content = ({
89
94
  isLoading={percentLoaded !== 100}
90
95
  hasError={view === VIEW_ERROR}
91
96
  metadataTemplate={metadataTemplate}
97
+ onMetadataFilter={onMetadataFilter}
92
98
  onSortChange={onSortChange}
93
99
  {...metadataViewProps}
94
100
  />
@@ -8,7 +8,6 @@ import getProp from 'lodash/get';
8
8
  import noop from 'lodash/noop';
9
9
  import throttle from 'lodash/throttle';
10
10
  import uniqueid from 'lodash/uniqueId';
11
- import { Notification, TooltipProvider } from '@box/blueprint-web';
12
11
  import { AxiosRequestConfig, AxiosResponse } from 'axios';
13
12
  import type { Key, Selection } from 'react-aria-components';
14
13
  import type { MetadataTemplateField } from '@box/metadata-editor';
@@ -35,7 +34,7 @@ import Content from './Content';
35
34
  import { isThumbnailAvailable } from '../common/utils';
36
35
  import { isFocusableElement, isInputElement, focus } from '../../utils/dom';
37
36
  import { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';
38
- import CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH from './constants';
37
+ import { CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH } from './constants';
39
38
  import LocalStore from '../../utils/LocalStore';
40
39
  import {
41
40
  withFeatureConsumer,
@@ -96,13 +95,14 @@ import type {
96
95
  import type { BulkItemAction } from '../common/sub-header/BulkItemActionMenu';
97
96
  import type { ContentPreviewProps } from '../content-preview';
98
97
  import type { ContentUploaderProps } from '../content-uploader';
99
- import type { MetadataViewContainerProps } from './MetadataViewContainer';
98
+ import type { ExternalFilterValues, MetadataViewContainerProps } from './MetadataViewContainer';
100
99
 
101
100
  import '../common/fonts.scss';
102
101
  import '../common/base.scss';
103
102
  import '../common/modal.scss';
104
103
  import './ContentExplorer.scss';
105
104
  import { withBlueprintModernization } from '../common/withBlueprintModernization';
105
+ import Providers from '../common/Providers';
106
106
 
107
107
  const GRID_VIEW_MAX_COLUMNS = 7;
108
108
  const GRID_VIEW_MIN_COLUMNS = 1;
@@ -127,6 +127,7 @@ export interface ContentExplorerProps {
127
127
  defaultView?: DefaultView;
128
128
  features?: FeatureConfig;
129
129
  fieldsToShow?: FieldsToShow;
130
+ hasProviders?: boolean;
130
131
  initialPage?: number;
131
132
  initialPageSize?: number;
132
133
  isLarge?: boolean;
@@ -140,7 +141,10 @@ export interface ContentExplorerProps {
140
141
  measureRef?: (ref: Element | null) => void;
141
142
  messages?: StringMap;
142
143
  metadataQuery?: MetadataQuery;
143
- metadataViewProps?: Omit<MetadataViewContainerProps, 'hasError' | 'currentCollection'>;
144
+ metadataViewProps?: Omit<
145
+ MetadataViewContainerProps,
146
+ 'hasError' | 'currentCollection' | 'metadataTemplate' | 'onMetadataFilter'
147
+ >;
144
148
  onCreate?: (item: BoxItem) => void;
145
149
  onDelete?: (item: BoxItem) => void;
146
150
  onDownload?: (item: BoxItem) => void;
@@ -183,6 +187,7 @@ type State = {
183
187
  isUploadModalOpen: boolean;
184
188
  markers: Array<string | null | undefined>;
185
189
  metadataTemplate: MetadataTemplate;
190
+ metadataFilters: ExternalFilterValues;
186
191
  rootName: string;
187
192
  searchQuery: string;
188
193
  selected?: BoxItem;
@@ -213,7 +218,7 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
213
218
 
214
219
  store: LocalStore = new LocalStore();
215
220
 
216
- metadataQueryAPIHelper: MetadataQueryAPIHelper;
221
+ metadataQueryAPIHelper: MetadataQueryAPIHelper | MetadataQueryAPIHelperV2;
217
222
 
218
223
  static defaultProps = {
219
224
  rootFolderId: DEFAULT_ROOT,
@@ -308,6 +313,7 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
308
313
  isShareModalOpen: false,
309
314
  isUploadModalOpen: false,
310
315
  markers: [],
316
+ metadataFilters: {},
311
317
  metadataTemplate: {},
312
318
  rootName: '',
313
319
  selectedItemIds: new Set(),
@@ -391,6 +397,7 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
391
397
  *
392
398
  * @private
393
399
  * @param {Object} metadataQueryCollection - Metadata query response collection
400
+ * @param {Object} metadataTemplate - Metadata template object
394
401
  * @return {void}
395
402
  */
396
403
  showMetadataQueryResultsSuccessCallback = (
@@ -442,7 +449,7 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
442
449
  */
443
450
  showMetadataQueryResults() {
444
451
  const { features, metadataQuery = {} }: ContentExplorerProps = this.props;
445
- const { currentPageNumber, markers, sortBy, sortDirection }: State = this.state;
452
+ const { currentPageNumber, markers, metadataFilters, sortBy, sortDirection }: State = this.state;
446
453
  const metadataQueryClone = cloneDeep(metadataQuery);
447
454
 
448
455
  if (currentPageNumber === 0) {
@@ -477,6 +484,12 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
477
484
  ];
478
485
 
479
486
  this.metadataQueryAPIHelper = new MetadataQueryAPIHelperV2(this.api);
487
+ this.metadataQueryAPIHelper.fetchMetadataQueryResults(
488
+ metadataQueryClone,
489
+ this.showMetadataQueryResultsSuccessCallback,
490
+ this.errorCallback,
491
+ metadataFilters,
492
+ );
480
493
  } else {
481
494
  metadataQueryClone.order_by = [
482
495
  {
@@ -485,13 +498,12 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
485
498
  },
486
499
  ];
487
500
  this.metadataQueryAPIHelper = new MetadataQueryAPIHelper(this.api);
501
+ this.metadataQueryAPIHelper.fetchMetadataQueryResults(
502
+ metadataQueryClone,
503
+ this.showMetadataQueryResultsSuccessCallback,
504
+ this.errorCallback,
505
+ );
488
506
  }
489
-
490
- this.metadataQueryAPIHelper.fetchMetadataQueryResults(
491
- metadataQueryClone,
492
- this.showMetadataQueryResultsSuccessCallback,
493
- this.errorCallback,
494
- );
495
507
  }
496
508
 
497
509
  /**
@@ -1725,6 +1737,10 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
1725
1737
  this.setState({ isMetadataSidePanelOpen: false });
1726
1738
  };
1727
1739
 
1740
+ filterMetadata = (fields: ExternalFilterValues) => {
1741
+ this.setState({ metadataFilters: fields }, this.refreshCollection);
1742
+ };
1743
+
1728
1744
  /**
1729
1745
  * Renders the file picker
1730
1746
  *
@@ -1750,6 +1766,7 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
1750
1766
  contentUploaderProps,
1751
1767
  defaultView,
1752
1768
  features,
1769
+ hasProviders,
1753
1770
  isMedium,
1754
1771
  isSmall,
1755
1772
  isTouch,
@@ -1819,193 +1836,191 @@ class ContentExplorer extends Component<ContentExplorerProps, State> {
1819
1836
  /* eslint-disable jsx-a11y/no-noninteractive-tabindex */
1820
1837
  return (
1821
1838
  <Internationalize language={language} messages={messages}>
1822
- <Notification.Provider>
1823
- <Notification.Viewport />
1824
- <TooltipProvider container={this.rootElement}>
1825
- <div id={this.id} className={styleClassName} ref={measureRef} data-testid="content-explorer">
1826
- <ThemingStyles selector={`#${this.id}`} theme={theme} />
1827
- <div className="be-app-element" onKeyDown={this.onKeyDown} tabIndex={0}>
1828
- <div className="bce-ContentExplorer-main">
1829
- {!isDefaultViewMetadata && (
1830
- <Header view={view} logoUrl={logoUrl} onSearch={this.search} />
1831
- )}
1832
-
1833
- <SubHeader
1834
- bulkItemActions={bulkItemActions}
1835
- view={view}
1836
- viewMode={viewMode}
1837
- rootId={rootFolderId}
1838
- isSmall={isSmall}
1839
- rootName={rootName}
1840
- currentCollection={currentCollection}
1841
- canUpload={allowUpload}
1842
- canCreateNewFolder={allowCreate}
1843
- gridColumnCount={gridColumnCount}
1844
- gridMaxColumns={GRID_VIEW_MAX_COLUMNS}
1845
- gridMinColumns={GRID_VIEW_MIN_COLUMNS}
1846
- maxGridColumnCountForWidth={maxGridColumnCount}
1847
- onUpload={this.upload}
1848
- onClearSelectedItemIds={this.clearSelectedItemIds}
1849
- onCreate={this.createFolder}
1850
- onGridViewSliderChange={this.onGridViewSliderChange}
1851
- onItemClick={this.fetchFolder}
1852
- onSortChange={this.sort}
1853
- onMetadataSidePanelToggle={this.onMetadataSidePanelToggle}
1854
- onViewModeChange={this.changeViewMode}
1855
- portalElement={this.rootElement}
1856
- selectedItemIds={selectedItemIds}
1857
- title={title}
1858
- />
1859
-
1860
- <Content
1861
- canDelete={canDelete}
1862
- canDownload={canDownload}
1863
- canPreview={canPreview}
1864
- canRename={canRename}
1865
- canShare={canShare}
1866
- currentCollection={currentCollection}
1867
- features={features}
1868
- gridColumnCount={Math.min(gridColumnCount, maxGridColumnCount)}
1869
- isMedium={isMedium}
1870
- isSmall={isSmall}
1871
- isTouch={isTouch}
1872
- itemActions={itemActions}
1873
- fieldsToShow={fieldsToShow}
1874
- metadataTemplate={metadataTemplate}
1875
- metadataViewProps={metadataViewProps}
1876
- onItemClick={this.onItemClick}
1877
- onItemDelete={this.delete}
1878
- onItemDownload={this.download}
1879
- onItemPreview={this.preview}
1880
- onItemRename={this.rename}
1881
- onItemSelect={this.select}
1882
- onItemShare={this.share}
1883
- onMetadataUpdate={this.updateMetadata}
1884
- onSortChange={this.sort}
1885
- portalElement={this.rootElement}
1886
- view={view}
1887
- viewMode={viewMode}
1888
- />
1889
-
1890
- {!isErrorView && (
1891
- <Footer>
1892
- <Pagination
1893
- hasNextMarker={hasNextMarker}
1894
- hasPrevMarker={hasPreviousMarker}
1895
- isSmall={isSmall}
1896
- offset={offset}
1897
- onOffsetChange={this.paginate}
1898
- pageSize={currentPageSize}
1899
- totalCount={totalCount}
1900
- onMarkerBasedPageChange={this.markerBasedPaginate}
1901
- />
1902
- </Footer>
1903
- )}
1904
- </div>
1905
- {isDefaultViewMetadata && isMetadataViewV2Feature && isMetadataSidePanelOpen && (
1906
- <MetadataSidePanel
1907
- currentCollection={currentCollection}
1908
- metadataTemplate={metadataTemplate}
1909
- onClose={this.closeMetadataSidePanel}
1910
- onUpdate={this.updateMetadataV2}
1911
- refreshCollection={this.refreshCollection}
1912
- selectedItemIds={selectedItemIds}
1913
- />
1839
+ <Providers hasProviders={hasProviders}>
1840
+ <div id={this.id} className={styleClassName} ref={measureRef} data-testid="content-explorer">
1841
+ <ThemingStyles selector={`#${this.id}`} theme={theme} />
1842
+ <div className="be-app-element" onKeyDown={this.onKeyDown} tabIndex={0}>
1843
+ <div className="bce-ContentExplorer-main">
1844
+ {!isDefaultViewMetadata && (
1845
+ <Header view={view} logoUrl={logoUrl} onSearch={this.search} />
1914
1846
  )}
1915
- </div>
1916
- {allowUpload && !!this.appElement ? (
1917
- <UploadDialog
1918
- isOpen={isUploadModalOpen}
1919
- currentFolderId={id}
1920
- token={token}
1921
- sharedLink={sharedLink}
1922
- sharedLinkPassword={sharedLinkPassword}
1923
- apiHost={apiHost}
1924
- uploadHost={uploadHost}
1925
- onClose={this.uploadSuccessHandler}
1926
- parentElement={this.rootElement}
1927
- appElement={this.appElement}
1928
- onUpload={onUpload}
1929
- contentUploaderProps={contentUploaderProps}
1930
- requestInterceptor={requestInterceptor}
1931
- responseInterceptor={responseInterceptor}
1932
- />
1933
- ) : null}
1934
- {allowCreate && !!this.appElement ? (
1935
- <CreateFolderDialog
1936
- isOpen={isCreateFolderModalOpen}
1937
- onCreate={this.throttledCreateFolderCallback}
1938
- onCancel={this.closeModals}
1939
- isLoading={isLoading}
1940
- errorCode={errorCode}
1941
- parentElement={this.rootElement}
1942
- appElement={this.appElement}
1943
- />
1944
- ) : null}
1945
- {canDelete && selected && !!this.appElement ? (
1946
- <DeleteConfirmationDialog
1947
- isOpen={isDeleteModalOpen}
1948
- onDelete={this.deleteCallback}
1949
- onCancel={this.closeModals}
1950
- item={selected}
1951
- isLoading={isLoading}
1952
- parentElement={this.rootElement}
1953
- appElement={this.appElement}
1954
- />
1955
- ) : null}
1956
- {canRename && selected && !!this.appElement ? (
1957
- <RenameDialog
1958
- isOpen={isRenameModalOpen}
1959
- onRename={this.renameCallback}
1960
- onCancel={this.closeModals}
1961
- item={selected}
1962
- isLoading={isLoading}
1963
- errorCode={errorCode}
1964
- parentElement={this.rootElement}
1965
- appElement={this.appElement}
1966
- />
1967
- ) : null}
1968
- {canShare && selected && !!this.appElement ? (
1969
- <ShareDialog
1970
- isOpen={isShareModalOpen}
1971
- canSetShareAccess={canSetShareAccess}
1972
- onShareAccessChange={this.changeShareAccess}
1973
- onCancel={this.refreshCollection}
1974
- item={selected}
1975
- isLoading={isLoading}
1976
- parentElement={this.rootElement}
1977
- appElement={this.appElement}
1847
+
1848
+ <SubHeader
1849
+ bulkItemActions={bulkItemActions}
1850
+ view={view}
1851
+ viewMode={viewMode}
1852
+ rootId={rootFolderId}
1853
+ isSmall={isSmall}
1854
+ rootName={rootName}
1855
+ currentCollection={currentCollection}
1856
+ canUpload={allowUpload}
1857
+ canCreateNewFolder={allowCreate}
1858
+ gridColumnCount={gridColumnCount}
1859
+ gridMaxColumns={GRID_VIEW_MAX_COLUMNS}
1860
+ gridMinColumns={GRID_VIEW_MIN_COLUMNS}
1861
+ maxGridColumnCountForWidth={maxGridColumnCount}
1862
+ onUpload={this.upload}
1863
+ onClearSelectedItemIds={this.clearSelectedItemIds}
1864
+ onCreate={this.createFolder}
1865
+ onGridViewSliderChange={this.onGridViewSliderChange}
1866
+ onItemClick={this.fetchFolder}
1867
+ onSortChange={this.sort}
1868
+ onMetadataSidePanelToggle={this.onMetadataSidePanelToggle}
1869
+ onViewModeChange={this.changeViewMode}
1870
+ portalElement={this.rootElement}
1871
+ selectedItemIds={selectedItemIds}
1872
+ title={title}
1978
1873
  />
1979
- ) : null}
1980
- {canPreview && selected && !!this.appElement ? (
1981
- <PreviewDialog
1982
- isOpen={isPreviewModalOpen}
1983
- isTouch={isTouch}
1984
- onCancel={this.closeModals}
1985
- item={selected}
1986
- currentCollection={cloneDeep(currentCollection)}
1987
- token={token}
1988
- parentElement={this.rootElement}
1989
- appElement={this.appElement}
1990
- onPreview={onPreview}
1991
- onDownload={onDownload}
1874
+
1875
+ <Content
1876
+ canDelete={canDelete}
1992
1877
  canDownload={canDownload}
1993
- cache={this.api.getCache()}
1994
- apiHost={apiHost}
1995
- appHost={appHost}
1996
- staticHost={staticHost}
1997
- staticPath={staticPath}
1998
- previewLibraryVersion={previewLibraryVersion}
1999
- sharedLink={sharedLink}
2000
- sharedLinkPassword={sharedLinkPassword}
2001
- contentPreviewProps={contentPreviewProps}
2002
- requestInterceptor={requestInterceptor}
2003
- responseInterceptor={responseInterceptor}
1878
+ canPreview={canPreview}
1879
+ canRename={canRename}
1880
+ canShare={canShare}
1881
+ currentCollection={currentCollection}
1882
+ features={features}
1883
+ gridColumnCount={Math.min(gridColumnCount, maxGridColumnCount)}
1884
+ isMedium={isMedium}
1885
+ isSmall={isSmall}
1886
+ isTouch={isTouch}
1887
+ itemActions={itemActions}
1888
+ fieldsToShow={fieldsToShow}
1889
+ metadataTemplate={metadataTemplate}
1890
+ metadataViewProps={metadataViewProps}
1891
+ onItemClick={this.onItemClick}
1892
+ onItemDelete={this.delete}
1893
+ onItemDownload={this.download}
1894
+ onItemPreview={this.preview}
1895
+ onItemRename={this.rename}
1896
+ onItemSelect={this.select}
1897
+ onItemShare={this.share}
1898
+ onMetadataFilter={this.filterMetadata}
1899
+ onMetadataUpdate={this.updateMetadata}
1900
+ onSortChange={this.sort}
1901
+ portalElement={this.rootElement}
1902
+ view={view}
1903
+ viewMode={viewMode}
1904
+ />
1905
+
1906
+ {!isErrorView && (
1907
+ <Footer>
1908
+ <Pagination
1909
+ hasNextMarker={hasNextMarker}
1910
+ hasPrevMarker={hasPreviousMarker}
1911
+ isSmall={isSmall}
1912
+ offset={offset}
1913
+ onOffsetChange={this.paginate}
1914
+ pageSize={currentPageSize}
1915
+ totalCount={totalCount}
1916
+ onMarkerBasedPageChange={this.markerBasedPaginate}
1917
+ />
1918
+ </Footer>
1919
+ )}
1920
+ </div>
1921
+ {isDefaultViewMetadata && isMetadataViewV2Feature && isMetadataSidePanelOpen && (
1922
+ <MetadataSidePanel
1923
+ currentCollection={currentCollection}
1924
+ metadataTemplate={metadataTemplate}
1925
+ onClose={this.closeMetadataSidePanel}
1926
+ onUpdate={this.updateMetadataV2}
1927
+ refreshCollection={this.refreshCollection}
1928
+ selectedItemIds={selectedItemIds}
2004
1929
  />
2005
- ) : null}
1930
+ )}
2006
1931
  </div>
2007
- </TooltipProvider>
2008
- </Notification.Provider>
1932
+ {allowUpload && !!this.appElement ? (
1933
+ <UploadDialog
1934
+ isOpen={isUploadModalOpen}
1935
+ currentFolderId={id}
1936
+ token={token}
1937
+ sharedLink={sharedLink}
1938
+ sharedLinkPassword={sharedLinkPassword}
1939
+ apiHost={apiHost}
1940
+ uploadHost={uploadHost}
1941
+ onClose={this.uploadSuccessHandler}
1942
+ parentElement={this.rootElement}
1943
+ appElement={this.appElement}
1944
+ onUpload={onUpload}
1945
+ contentUploaderProps={contentUploaderProps}
1946
+ requestInterceptor={requestInterceptor}
1947
+ responseInterceptor={responseInterceptor}
1948
+ />
1949
+ ) : null}
1950
+ {allowCreate && !!this.appElement ? (
1951
+ <CreateFolderDialog
1952
+ isOpen={isCreateFolderModalOpen}
1953
+ onCreate={this.throttledCreateFolderCallback}
1954
+ onCancel={this.closeModals}
1955
+ isLoading={isLoading}
1956
+ errorCode={errorCode}
1957
+ parentElement={this.rootElement}
1958
+ appElement={this.appElement}
1959
+ />
1960
+ ) : null}
1961
+ {canDelete && selected && !!this.appElement ? (
1962
+ <DeleteConfirmationDialog
1963
+ isOpen={isDeleteModalOpen}
1964
+ onDelete={this.deleteCallback}
1965
+ onCancel={this.closeModals}
1966
+ item={selected}
1967
+ isLoading={isLoading}
1968
+ parentElement={this.rootElement}
1969
+ appElement={this.appElement}
1970
+ />
1971
+ ) : null}
1972
+ {canRename && selected && !!this.appElement ? (
1973
+ <RenameDialog
1974
+ isOpen={isRenameModalOpen}
1975
+ onRename={this.renameCallback}
1976
+ onCancel={this.closeModals}
1977
+ item={selected}
1978
+ isLoading={isLoading}
1979
+ errorCode={errorCode}
1980
+ parentElement={this.rootElement}
1981
+ appElement={this.appElement}
1982
+ />
1983
+ ) : null}
1984
+ {canShare && selected && !!this.appElement ? (
1985
+ <ShareDialog
1986
+ isOpen={isShareModalOpen}
1987
+ canSetShareAccess={canSetShareAccess}
1988
+ onShareAccessChange={this.changeShareAccess}
1989
+ onCancel={this.refreshCollection}
1990
+ item={selected}
1991
+ isLoading={isLoading}
1992
+ parentElement={this.rootElement}
1993
+ appElement={this.appElement}
1994
+ />
1995
+ ) : null}
1996
+ {canPreview && selected && !!this.appElement ? (
1997
+ <PreviewDialog
1998
+ isOpen={isPreviewModalOpen}
1999
+ isTouch={isTouch}
2000
+ onCancel={this.closeModals}
2001
+ item={selected}
2002
+ currentCollection={cloneDeep(currentCollection)}
2003
+ token={token}
2004
+ parentElement={this.rootElement}
2005
+ appElement={this.appElement}
2006
+ onPreview={onPreview}
2007
+ onDownload={onDownload}
2008
+ canDownload={canDownload}
2009
+ cache={this.api.getCache()}
2010
+ apiHost={apiHost}
2011
+ appHost={appHost}
2012
+ staticHost={staticHost}
2013
+ staticPath={staticPath}
2014
+ previewLibraryVersion={previewLibraryVersion}
2015
+ sharedLink={sharedLink}
2016
+ sharedLinkPassword={sharedLinkPassword}
2017
+ contentPreviewProps={contentPreviewProps}
2018
+ requestInterceptor={requestInterceptor}
2019
+ responseInterceptor={responseInterceptor}
2020
+ />
2021
+ ) : null}
2022
+ </div>
2023
+ </Providers>
2009
2024
  </Internationalize>
2010
2025
  );
2011
2026
  /* eslint-enable jsx-a11y/no-static-element-interactions */