box-ui-elements 23.5.0-beta.3 → 23.5.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +1 -1
- package/dist/picker.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/es/elements/common/sub-header/SubHeader.js +3 -0
- package/es/elements/common/sub-header/SubHeader.js.map +1 -1
- package/es/elements/common/sub-header/SubHeaderLeftV2.js +3 -23
- package/es/elements/common/sub-header/SubHeaderLeftV2.js.map +1 -1
- package/es/elements/common/sub-header/SubHeaderRight.js +6 -2
- package/es/elements/common/sub-header/SubHeaderRight.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.js +44 -5
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.scss +12 -0
- package/es/elements/content-explorer/MetadataSidePanel.js +92 -0
- package/es/elements/content-explorer/MetadataSidePanel.js.map +1 -0
- package/es/elements/content-explorer/MetadataSidePanel.scss +12 -0
- package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js +30 -0
- package/es/elements/content-explorer/stories/tests/MetadataView-visual.stories.js.map +1 -1
- package/es/elements/content-explorer/utils.js +67 -0
- package/es/elements/content-explorer/utils.js.map +1 -0
- package/es/src/elements/common/sub-header/SubHeader.d.ts +2 -1
- package/es/src/elements/common/sub-header/SubHeaderLeftV2.d.ts +1 -1
- package/es/src/elements/common/sub-header/SubHeaderRight.d.ts +4 -1
- package/es/src/elements/content-explorer/ContentExplorer.d.ts +15 -0
- package/es/src/elements/content-explorer/MetadataSidePanel.d.ts +13 -0
- package/es/src/elements/content-explorer/__tests__/MetadataSidePanel.test.d.ts +1 -0
- package/es/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.d.ts +1 -0
- package/es/src/elements/content-explorer/utils.d.ts +22 -0
- package/package.json +1 -1
- package/src/elements/common/sub-header/SubHeader.tsx +4 -0
- package/src/elements/common/sub-header/SubHeaderLeftV2.tsx +3 -22
- package/src/elements/common/sub-header/SubHeaderRight.tsx +8 -2
- package/src/elements/content-explorer/ContentExplorer.scss +12 -0
- package/src/elements/content-explorer/ContentExplorer.tsx +120 -71
- package/src/elements/content-explorer/MetadataSidePanel.scss +12 -0
- package/src/elements/content-explorer/MetadataSidePanel.tsx +126 -0
- package/src/elements/content-explorer/__tests__/ContentExplorer.test.tsx +80 -16
- package/src/elements/content-explorer/__tests__/MetadataSidePanel.test.tsx +127 -0
- package/src/elements/content-explorer/stories/tests/MetadataView-visual.stories.tsx +26 -0
- package/src/elements/content-explorer/utils.ts +58 -0
|
@@ -22,6 +22,7 @@ const SubHeader = ({
|
|
|
22
22
|
onCreate,
|
|
23
23
|
onItemClick,
|
|
24
24
|
onSortChange,
|
|
25
|
+
onMetadataSidePanelToggle,
|
|
25
26
|
onUpload,
|
|
26
27
|
onViewModeChange,
|
|
27
28
|
portalElement,
|
|
@@ -67,9 +68,11 @@ const SubHeader = ({
|
|
|
67
68
|
onCreate: onCreate,
|
|
68
69
|
onGridViewSliderChange: onGridViewSliderChange,
|
|
69
70
|
onSortChange: onSortChange,
|
|
71
|
+
onMetadataSidePanelToggle: onMetadataSidePanelToggle,
|
|
70
72
|
onUpload: onUpload,
|
|
71
73
|
onViewModeChange: onViewModeChange,
|
|
72
74
|
portalElement: portalElement,
|
|
75
|
+
selectedItemIds: selectedItemIds,
|
|
73
76
|
view: view,
|
|
74
77
|
viewMode: viewMode
|
|
75
78
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubHeader.js","names":["React","noop","classNames","PageHeader","SubHeaderLeft","SubHeaderLeftV2","SubHeaderRight","VIEW_MODE_LIST","VIEW_METADATA","useFeatureEnabled","SubHeader","canCreateNewFolder","canUpload","currentCollection","gridColumnCount","gridMaxColumns","gridMinColumns","maxGridColumnCountForWidth","onGridViewSliderChange","isSmall","onClearSelectedItemIds","onCreate","onItemClick","onSortChange","onUpload","onViewModeChange","portalElement","rootId","rootName","selectedItemIds","title","view","viewMode","isMetadataViewV2Feature","createElement","Root","className","variant","StartElements","EndElements"],"sources":["../../../../src/elements/common/sub-header/SubHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport noop from 'lodash/noop';\nimport classNames from 'classnames';\nimport { PageHeader } from '@box/blueprint-web';\nimport type { Selection } from 'react-aria-components';\n\nimport SubHeaderLeft from './SubHeaderLeft';\nimport SubHeaderLeftV2 from './SubHeaderLeftV2';\nimport SubHeaderRight from './SubHeaderRight';\nimport type { ViewMode } from '../flowTypes';\nimport type { View, Collection } from '../../../common/types/core';\nimport { VIEW_MODE_LIST, VIEW_METADATA } from '../../../constants';\nimport { useFeatureEnabled } from '../feature-checking';\n\nimport './SubHeader.scss';\n\nexport interface SubHeaderProps {\n canCreateNewFolder: boolean;\n canUpload: boolean;\n currentCollection: Collection;\n gridColumnCount?: number;\n gridMaxColumns?: number;\n gridMinColumns?: number;\n isSmall: boolean;\n maxGridColumnCountForWidth?: number;\n onClearSelectedItemIds: () => void;\n onCreate: () => void;\n onGridViewSliderChange?: (newSliderValue: number) => void;\n onItemClick: (id: string | null, triggerNavigationEvent: boolean | null) => void;\n onSortChange: (sortBy: string, sortDirection: string) => void;\n onUpload: () => void;\n onViewModeChange?: (viewMode: ViewMode) => void;\n portalElement?: HTMLElement;\n rootId: string;\n rootName?: string;\n selectedItemIds: Selection;\n title?: string;\n view: View;\n viewMode?: ViewMode;\n}\n\nconst SubHeader = ({\n canCreateNewFolder,\n canUpload,\n currentCollection,\n gridColumnCount = 0,\n gridMaxColumns = 0,\n gridMinColumns = 0,\n maxGridColumnCountForWidth = 0,\n onGridViewSliderChange = noop,\n isSmall,\n onClearSelectedItemIds,\n onCreate,\n onItemClick,\n onSortChange,\n onUpload,\n onViewModeChange,\n portalElement,\n rootId,\n rootName,\n selectedItemIds,\n title,\n view,\n viewMode = VIEW_MODE_LIST,\n}: SubHeaderProps) => {\n const isMetadataViewV2Feature = useFeatureEnabled('contentExplorer.metadataViewV2');\n\n if (view === VIEW_METADATA && !isMetadataViewV2Feature) {\n return null;\n }\n\n return (\n <PageHeader.Root\n className={classNames({ 'be-sub-header': !isMetadataViewV2Feature })}\n data-testid=\"be-sub-header\"\n variant=\"inline\"\n >\n <PageHeader.StartElements>\n {view !== VIEW_METADATA && !isMetadataViewV2Feature && (\n <SubHeaderLeft\n currentCollection={currentCollection}\n isSmall={isSmall}\n onItemClick={onItemClick}\n portalElement={portalElement}\n rootId={rootId}\n rootName={rootName}\n view={view}\n />\n )}\n {isMetadataViewV2Feature && (\n <SubHeaderLeftV2\n currentCollection={currentCollection}\n onClearSelectedItemIds={onClearSelectedItemIds}\n rootName={rootName}\n selectedItemIds={selectedItemIds}\n title={title}\n />\n )}\n </PageHeader.StartElements>\n <PageHeader.EndElements>\n <SubHeaderRight\n canCreateNewFolder={canCreateNewFolder}\n canUpload={canUpload}\n currentCollection={currentCollection}\n gridColumnCount={gridColumnCount}\n gridMaxColumns={gridMaxColumns}\n gridMinColumns={gridMinColumns}\n maxGridColumnCountForWidth={maxGridColumnCountForWidth}\n onCreate={onCreate}\n onGridViewSliderChange={onGridViewSliderChange}\n onSortChange={onSortChange}\n onUpload={onUpload}\n onViewModeChange={onViewModeChange}\n portalElement={portalElement}\n view={view}\n viewMode={viewMode}\n />\n </PageHeader.EndElements>\n </PageHeader.Root>\n );\n};\n\nexport default SubHeader;\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,IAAI,MAAM,aAAa;AAC9B,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,UAAU,QAAQ,oBAAoB;AAG/C,OAAOC,aAAa,MAAM,iBAAiB;AAC3C,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,OAAOC,cAAc,MAAM,kBAAkB;AAG7C,SAASC,cAAc,EAAEC,aAAa,QAAQ,oBAAoB;AAClE,SAASC,iBAAiB,QAAQ,qBAAqB;AAEvD,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"SubHeader.js","names":["React","noop","classNames","PageHeader","SubHeaderLeft","SubHeaderLeftV2","SubHeaderRight","VIEW_MODE_LIST","VIEW_METADATA","useFeatureEnabled","SubHeader","canCreateNewFolder","canUpload","currentCollection","gridColumnCount","gridMaxColumns","gridMinColumns","maxGridColumnCountForWidth","onGridViewSliderChange","isSmall","onClearSelectedItemIds","onCreate","onItemClick","onSortChange","onMetadataSidePanelToggle","onUpload","onViewModeChange","portalElement","rootId","rootName","selectedItemIds","title","view","viewMode","isMetadataViewV2Feature","createElement","Root","className","variant","StartElements","EndElements"],"sources":["../../../../src/elements/common/sub-header/SubHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport noop from 'lodash/noop';\nimport classNames from 'classnames';\nimport { PageHeader } from '@box/blueprint-web';\nimport type { Selection } from 'react-aria-components';\n\nimport SubHeaderLeft from './SubHeaderLeft';\nimport SubHeaderLeftV2 from './SubHeaderLeftV2';\nimport SubHeaderRight from './SubHeaderRight';\nimport type { ViewMode } from '../flowTypes';\nimport type { View, Collection } from '../../../common/types/core';\nimport { VIEW_MODE_LIST, VIEW_METADATA } from '../../../constants';\nimport { useFeatureEnabled } from '../feature-checking';\n\nimport './SubHeader.scss';\n\nexport interface SubHeaderProps {\n canCreateNewFolder: boolean;\n canUpload: boolean;\n currentCollection: Collection;\n gridColumnCount?: number;\n gridMaxColumns?: number;\n gridMinColumns?: number;\n isSmall: boolean;\n maxGridColumnCountForWidth?: number;\n onClearSelectedItemIds: () => void;\n onCreate: () => void;\n onGridViewSliderChange?: (newSliderValue: number) => void;\n onItemClick: (id: string | null, triggerNavigationEvent: boolean | null) => void;\n onSortChange: (sortBy: string, sortDirection: string) => void;\n onMetadataSidePanelToggle?: () => void;\n onUpload: () => void;\n onViewModeChange?: (viewMode: ViewMode) => void;\n portalElement?: HTMLElement;\n rootId: string;\n rootName?: string;\n selectedItemIds: Selection;\n title?: string;\n view: View;\n viewMode?: ViewMode;\n}\n\nconst SubHeader = ({\n canCreateNewFolder,\n canUpload,\n currentCollection,\n gridColumnCount = 0,\n gridMaxColumns = 0,\n gridMinColumns = 0,\n maxGridColumnCountForWidth = 0,\n onGridViewSliderChange = noop,\n isSmall,\n onClearSelectedItemIds,\n onCreate,\n onItemClick,\n onSortChange,\n onMetadataSidePanelToggle,\n onUpload,\n onViewModeChange,\n portalElement,\n rootId,\n rootName,\n selectedItemIds,\n title,\n view,\n viewMode = VIEW_MODE_LIST,\n}: SubHeaderProps) => {\n const isMetadataViewV2Feature = useFeatureEnabled('contentExplorer.metadataViewV2');\n\n if (view === VIEW_METADATA && !isMetadataViewV2Feature) {\n return null;\n }\n\n return (\n <PageHeader.Root\n className={classNames({ 'be-sub-header': !isMetadataViewV2Feature })}\n data-testid=\"be-sub-header\"\n variant=\"inline\"\n >\n <PageHeader.StartElements>\n {view !== VIEW_METADATA && !isMetadataViewV2Feature && (\n <SubHeaderLeft\n currentCollection={currentCollection}\n isSmall={isSmall}\n onItemClick={onItemClick}\n portalElement={portalElement}\n rootId={rootId}\n rootName={rootName}\n view={view}\n />\n )}\n {isMetadataViewV2Feature && (\n <SubHeaderLeftV2\n currentCollection={currentCollection}\n onClearSelectedItemIds={onClearSelectedItemIds}\n rootName={rootName}\n selectedItemIds={selectedItemIds}\n title={title}\n />\n )}\n </PageHeader.StartElements>\n <PageHeader.EndElements>\n <SubHeaderRight\n canCreateNewFolder={canCreateNewFolder}\n canUpload={canUpload}\n currentCollection={currentCollection}\n gridColumnCount={gridColumnCount}\n gridMaxColumns={gridMaxColumns}\n gridMinColumns={gridMinColumns}\n maxGridColumnCountForWidth={maxGridColumnCountForWidth}\n onCreate={onCreate}\n onGridViewSliderChange={onGridViewSliderChange}\n onSortChange={onSortChange}\n onMetadataSidePanelToggle={onMetadataSidePanelToggle}\n onUpload={onUpload}\n onViewModeChange={onViewModeChange}\n portalElement={portalElement}\n selectedItemIds={selectedItemIds}\n view={view}\n viewMode={viewMode}\n />\n </PageHeader.EndElements>\n </PageHeader.Root>\n );\n};\n\nexport default SubHeader;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import { useIntl } from 'react-intl';
|
|
3
3
|
import { XMark } from '@box/blueprint-web-assets/icons/Fill/index';
|
|
4
4
|
import { IconButton, PageHeader, Text } from '@box/blueprint-web';
|
|
5
|
+
import { useSelectedItemText } from '../../content-explorer/utils';
|
|
5
6
|
import messages from '../messages';
|
|
6
7
|
import './SubHeaderLeftV2.scss';
|
|
7
8
|
const SubHeaderLeftV2 = props => {
|
|
@@ -15,28 +16,7 @@ const SubHeaderLeftV2 = props => {
|
|
|
15
16
|
const {
|
|
16
17
|
formatMessage
|
|
17
18
|
} = useIntl();
|
|
18
|
-
|
|
19
|
-
// Generate selected item text based on selected keys
|
|
20
|
-
const selectedItemText = useMemo(() => {
|
|
21
|
-
const selectedCount = selectedItemIds === 'all' ? currentCollection.items.length : selectedItemIds.size;
|
|
22
|
-
if (selectedCount === 0) {
|
|
23
|
-
return '';
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Case 1: Single selected item - show item name
|
|
27
|
-
if (selectedCount === 1) {
|
|
28
|
-
const selectedKey = selectedItemIds === 'all' ? currentCollection.items[0].id : selectedItemIds.values().next().value;
|
|
29
|
-
const selectedItem = currentCollection.items.find(item => item.id === selectedKey);
|
|
30
|
-
return selectedItem?.name ?? '';
|
|
31
|
-
}
|
|
32
|
-
// Case 2: Multiple selected items - show count
|
|
33
|
-
if (selectedCount > 1) {
|
|
34
|
-
return formatMessage(messages.numFilesSelected, {
|
|
35
|
-
numSelected: selectedCount
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
return '';
|
|
39
|
-
}, [currentCollection.items, formatMessage, selectedItemIds]);
|
|
19
|
+
const selectedItemText = useSelectedItemText(currentCollection, selectedItemIds);
|
|
40
20
|
|
|
41
21
|
// Case 1 and 2: selected item text with X button
|
|
42
22
|
if (selectedItemText) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubHeaderLeftV2.js","names":["React","
|
|
1
|
+
{"version":3,"file":"SubHeaderLeftV2.js","names":["React","useIntl","XMark","IconButton","PageHeader","Text","useSelectedItemText","messages","SubHeaderLeftV2","props","currentCollection","onClearSelectedItemIds","rootName","selectedItemIds","title","formatMessage","selectedItemText","createElement","Root","className","variant","Corner","clearSelection","icon","onClick","StartElements","as"],"sources":["../../../../src/elements/common/sub-header/SubHeaderLeftV2.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { XMark } from '@box/blueprint-web-assets/icons/Fill/index';\nimport { IconButton, PageHeader, Text } from '@box/blueprint-web';\nimport type { Selection } from 'react-aria-components';\nimport { useSelectedItemText } from '../../content-explorer/utils';\nimport type { Collection } from '../../../common/types/core';\nimport messages from '../messages';\n\nimport './SubHeaderLeftV2.scss';\n\nexport interface SubHeaderLeftV2Props {\n currentCollection: Collection;\n onClearSelectedItemIds?: () => void;\n rootName?: string;\n selectedItemIds: Selection;\n title?: string;\n}\n\nconst SubHeaderLeftV2 = (props: SubHeaderLeftV2Props) => {\n const { currentCollection, onClearSelectedItemIds, rootName, selectedItemIds, title } = props;\n const { formatMessage } = useIntl();\n\n const selectedItemText = useSelectedItemText(currentCollection, selectedItemIds);\n\n // Case 1 and 2: selected item text with X button\n if (selectedItemText) {\n return (\n <PageHeader.Root className=\"be-SubHeaderLeftV2--selection\" variant=\"default\">\n <PageHeader.Corner>\n <IconButton\n aria-label={formatMessage(messages.clearSelection)}\n icon={XMark}\n onClick={onClearSelectedItemIds}\n variant=\"small-utility\"\n />\n </PageHeader.Corner>\n\n <PageHeader.StartElements>\n <Text as=\"span\">{selectedItemText}</Text>\n </PageHeader.StartElements>\n </PageHeader.Root>\n );\n }\n\n // Case 3: No selected items - show title if provided, otherwise show root name\n return (\n <Text as=\"h1\" variant=\"titleXLarge\">\n {title ?? rootName}\n </Text>\n );\n};\n\nexport default SubHeaderLeftV2;\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,KAAK,QAAQ,4CAA4C;AAClE,SAASC,UAAU,EAAEC,UAAU,EAAEC,IAAI,QAAQ,oBAAoB;AAEjE,SAASC,mBAAmB,QAAQ,8BAA8B;AAElE,OAAOC,QAAQ,MAAM,aAAa;AAElC,OAAO,wBAAwB;AAU/B,MAAMC,eAAe,GAAIC,KAA2B,IAAK;EACrD,MAAM;IAAEC,iBAAiB;IAAEC,sBAAsB;IAAEC,QAAQ;IAAEC,eAAe;IAAEC;EAAM,CAAC,GAAGL,KAAK;EAC7F,MAAM;IAAEM;EAAc,CAAC,GAAGd,OAAO,CAAC,CAAC;EAEnC,MAAMe,gBAAgB,GAAGV,mBAAmB,CAACI,iBAAiB,EAAEG,eAAe,CAAC;;EAEhF;EACA,IAAIG,gBAAgB,EAAE;IAClB,oBACIhB,KAAA,CAAAiB,aAAA,CAACb,UAAU,CAACc,IAAI;MAACC,SAAS,EAAC,+BAA+B;MAACC,OAAO,EAAC;IAAS,gBACxEpB,KAAA,CAAAiB,aAAA,CAACb,UAAU,CAACiB,MAAM,qBACdrB,KAAA,CAAAiB,aAAA,CAACd,UAAU;MACP,cAAYY,aAAa,CAACR,QAAQ,CAACe,cAAc,CAAE;MACnDC,IAAI,EAAErB,KAAM;MACZsB,OAAO,EAAEb,sBAAuB;MAChCS,OAAO,EAAC;IAAe,CAC1B,CACc,CAAC,eAEpBpB,KAAA,CAAAiB,aAAA,CAACb,UAAU,CAACqB,aAAa,qBACrBzB,KAAA,CAAAiB,aAAA,CAACZ,IAAI;MAACqB,EAAE,EAAC;IAAM,GAAEV,gBAAuB,CAClB,CACb,CAAC;EAE1B;;EAEA;EACA,oBACIhB,KAAA,CAAAiB,aAAA,CAACZ,IAAI;IAACqB,EAAE,EAAC,IAAI;IAACN,OAAO,EAAC;EAAa,GAC9BN,KAAK,IAAIF,QACR,CAAC;AAEf,CAAC;AAED,eAAeJ,eAAe","ignoreList":[]}
|
|
@@ -21,9 +21,11 @@ const SubHeaderRight = ({
|
|
|
21
21
|
onCreate,
|
|
22
22
|
onGridViewSliderChange,
|
|
23
23
|
onSortChange,
|
|
24
|
+
onMetadataSidePanelToggle,
|
|
24
25
|
onUpload,
|
|
25
26
|
onViewModeChange,
|
|
26
27
|
portalElement,
|
|
28
|
+
selectedItemIds,
|
|
27
29
|
view,
|
|
28
30
|
viewMode
|
|
29
31
|
}) => {
|
|
@@ -40,6 +42,7 @@ const SubHeaderRight = ({
|
|
|
40
42
|
const showSort = isFolder && hasItems;
|
|
41
43
|
const showAdd = (!!canUpload || !!canCreateNewFolder) && isFolder;
|
|
42
44
|
const isMetadataView = view === VIEW_METADATA;
|
|
45
|
+
const hasSelectedItems = !!(selectedItemIds && (selectedItemIds === 'all' || selectedItemIds.size > 0));
|
|
43
46
|
return /*#__PURE__*/React.createElement("div", {
|
|
44
47
|
className: "be-sub-header-right"
|
|
45
48
|
}, !isMetadataView && /*#__PURE__*/React.createElement(React.Fragment, null, hasItems && viewMode === VIEW_MODE_GRID && /*#__PURE__*/React.createElement(GridViewSlider, {
|
|
@@ -61,10 +64,11 @@ const SubHeaderRight = ({
|
|
|
61
64
|
portalElement: portalElement,
|
|
62
65
|
showCreate: canCreateNewFolder,
|
|
63
66
|
showUpload: canUpload
|
|
64
|
-
})), isMetadataView && isMetadataViewV2Feature && /*#__PURE__*/React.createElement(Button, {
|
|
67
|
+
})), isMetadataView && isMetadataViewV2Feature && hasSelectedItems && /*#__PURE__*/React.createElement(Button, {
|
|
65
68
|
icon: Pencil,
|
|
66
69
|
size: "large",
|
|
67
|
-
variant: "primary"
|
|
70
|
+
variant: "primary",
|
|
71
|
+
onClick: onMetadataSidePanelToggle
|
|
68
72
|
}, formatMessage(messages.metadata)));
|
|
69
73
|
};
|
|
70
74
|
export default SubHeaderRight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubHeaderRight.js","names":["React","Button","Pencil","useIntl","Sort","Add","GridViewSlider","ViewModeChangeButton","VIEW_FOLDER","VIEW_MODE_GRID","VIEW_METADATA","useFeatureEnabled","messages","SubHeaderRight","canCreateNewFolder","canUpload","currentCollection","gridColumnCount","gridMaxColumns","gridMinColumns","maxGridColumnCountForWidth","onCreate","onGridViewSliderChange","onSortChange","onUpload","onViewModeChange","portalElement","view","viewMode","formatMessage","isMetadataViewV2Feature","items","hasGridView","hasItems","length","isFolder","showSort","showAdd","isMetadataView","createElement","className","Fragment","columnCount","maxColumnCount","onChange","isDisabled","showCreate","showUpload","icon","
|
|
1
|
+
{"version":3,"file":"SubHeaderRight.js","names":["React","Button","Pencil","useIntl","Sort","Add","GridViewSlider","ViewModeChangeButton","VIEW_FOLDER","VIEW_MODE_GRID","VIEW_METADATA","useFeatureEnabled","messages","SubHeaderRight","canCreateNewFolder","canUpload","currentCollection","gridColumnCount","gridMaxColumns","gridMinColumns","maxGridColumnCountForWidth","onCreate","onGridViewSliderChange","onSortChange","onMetadataSidePanelToggle","onUpload","onViewModeChange","portalElement","selectedItemIds","view","viewMode","formatMessage","isMetadataViewV2Feature","items","hasGridView","hasItems","length","isFolder","showSort","showAdd","isMetadataView","hasSelectedItems","size","createElement","className","Fragment","columnCount","maxColumnCount","onChange","isDisabled","showCreate","showUpload","icon","variant","onClick","metadata"],"sources":["../../../../src/elements/common/sub-header/SubHeaderRight.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Button } from '@box/blueprint-web';\nimport { Pencil } from '@box/blueprint-web-assets/icons/Fill';\nimport { useIntl } from 'react-intl';\nimport type { Selection } from 'react-aria-components';\nimport Sort from './Sort';\nimport Add from './Add';\nimport GridViewSlider from '../../../components/grid-view/GridViewSlider';\nimport ViewModeChangeButton from './ViewModeChangeButton';\nimport { VIEW_FOLDER, VIEW_MODE_GRID, VIEW_METADATA } from '../../../constants';\nimport { useFeatureEnabled } from '../feature-checking';\n\nimport type { ViewMode } from '../flowTypes';\nimport type { SortBy, SortDirection, View, Collection } from '../../../common/types/core';\n\nimport messages from './messages';\n\nimport './SubHeaderRight.scss';\n\nexport interface SubHeaderRightProps {\n canCreateNewFolder: boolean;\n canUpload: boolean;\n currentCollection: Collection;\n gridColumnCount: number;\n gridMaxColumns: number;\n gridMinColumns: number;\n maxGridColumnCountForWidth: number;\n onCreate: () => void;\n onGridViewSliderChange: (newSliderValue: number) => void;\n onSortChange: (sortBy: SortBy, sortDirection: SortDirection) => void;\n onMetadataSidePanelToggle?: () => void;\n onUpload: () => void;\n onViewModeChange?: (viewMode: ViewMode) => void;\n portalElement?: HTMLElement;\n selectedItemIds?: Selection;\n view: View;\n viewMode: ViewMode;\n}\n\nconst SubHeaderRight = ({\n canCreateNewFolder,\n canUpload,\n currentCollection,\n gridColumnCount,\n gridMaxColumns,\n gridMinColumns,\n maxGridColumnCountForWidth,\n onCreate,\n onGridViewSliderChange,\n onSortChange,\n onMetadataSidePanelToggle,\n onUpload,\n onViewModeChange,\n portalElement,\n selectedItemIds,\n view,\n viewMode,\n}: SubHeaderRightProps) => {\n const { formatMessage } = useIntl();\n const isMetadataViewV2Feature = useFeatureEnabled('contentExplorer.metadataViewV2');\n const { items = [] }: Collection = currentCollection;\n const hasGridView: boolean = !!gridColumnCount;\n const hasItems: boolean = items.length > 0;\n const isFolder: boolean = view === VIEW_FOLDER;\n const showSort: boolean = isFolder && hasItems;\n const showAdd: boolean = (!!canUpload || !!canCreateNewFolder) && isFolder;\n const isMetadataView: boolean = view === VIEW_METADATA;\n const hasSelectedItems: boolean = !!(selectedItemIds && (selectedItemIds === 'all' || selectedItemIds.size > 0));\n return (\n <div className=\"be-sub-header-right\">\n {!isMetadataView && (\n <>\n {hasItems && viewMode === VIEW_MODE_GRID && (\n <GridViewSlider\n columnCount={gridColumnCount}\n gridMaxColumns={gridMaxColumns}\n gridMinColumns={gridMinColumns}\n maxColumnCount={maxGridColumnCountForWidth}\n onChange={onGridViewSliderChange}\n />\n )}\n {hasItems && hasGridView && (\n <ViewModeChangeButton viewMode={viewMode} onViewModeChange={onViewModeChange} />\n )}\n {showSort && <Sort onSortChange={onSortChange} portalElement={portalElement} />}\n {showAdd && (\n <Add\n isDisabled={!isFolder}\n onCreate={onCreate}\n onUpload={onUpload}\n portalElement={portalElement}\n showCreate={canCreateNewFolder}\n showUpload={canUpload}\n />\n )}\n </>\n )}\n\n {isMetadataView && isMetadataViewV2Feature && hasSelectedItems && (\n <Button icon={Pencil} size=\"large\" variant=\"primary\" onClick={onMetadataSidePanelToggle}>\n {formatMessage(messages.metadata)}\n </Button>\n )}\n </div>\n );\n};\n\nexport default SubHeaderRight;\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,MAAM,QAAQ,sCAAsC;AAC7D,SAASC,OAAO,QAAQ,YAAY;AAEpC,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,GAAG,MAAM,OAAO;AACvB,OAAOC,cAAc,MAAM,8CAA8C;AACzE,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,SAASC,WAAW,EAAEC,cAAc,EAAEC,aAAa,QAAQ,oBAAoB;AAC/E,SAASC,iBAAiB,QAAQ,qBAAqB;AAKvD,OAAOC,QAAQ,MAAM,YAAY;AAEjC,OAAO,uBAAuB;AAsB9B,MAAMC,cAAc,GAAGA,CAAC;EACpBC,kBAAkB;EAClBC,SAAS;EACTC,iBAAiB;EACjBC,eAAe;EACfC,cAAc;EACdC,cAAc;EACdC,0BAA0B;EAC1BC,QAAQ;EACRC,sBAAsB;EACtBC,YAAY;EACZC,yBAAyB;EACzBC,QAAQ;EACRC,gBAAgB;EAChBC,aAAa;EACbC,eAAe;EACfC,IAAI;EACJC;AACiB,CAAC,KAAK;EACvB,MAAM;IAAEC;EAAc,CAAC,GAAG5B,OAAO,CAAC,CAAC;EACnC,MAAM6B,uBAAuB,GAAGrB,iBAAiB,CAAC,gCAAgC,CAAC;EACnF,MAAM;IAAEsB,KAAK,GAAG;EAAe,CAAC,GAAGjB,iBAAiB;EACpD,MAAMkB,WAAoB,GAAG,CAAC,CAACjB,eAAe;EAC9C,MAAMkB,QAAiB,GAAGF,KAAK,CAACG,MAAM,GAAG,CAAC;EAC1C,MAAMC,QAAiB,GAAGR,IAAI,KAAKrB,WAAW;EAC9C,MAAM8B,QAAiB,GAAGD,QAAQ,IAAIF,QAAQ;EAC9C,MAAMI,OAAgB,GAAG,CAAC,CAAC,CAACxB,SAAS,IAAI,CAAC,CAACD,kBAAkB,KAAKuB,QAAQ;EAC1E,MAAMG,cAAuB,GAAGX,IAAI,KAAKnB,aAAa;EACtD,MAAM+B,gBAAyB,GAAG,CAAC,EAAEb,eAAe,KAAKA,eAAe,KAAK,KAAK,IAAIA,eAAe,CAACc,IAAI,GAAG,CAAC,CAAC,CAAC;EAChH,oBACI1C,KAAA,CAAA2C,aAAA;IAAKC,SAAS,EAAC;EAAqB,GAC/B,CAACJ,cAAc,iBACZxC,KAAA,CAAA2C,aAAA,CAAA3C,KAAA,CAAA6C,QAAA,QACKV,QAAQ,IAAIL,QAAQ,KAAKrB,cAAc,iBACpCT,KAAA,CAAA2C,aAAA,CAACrC,cAAc;IACXwC,WAAW,EAAE7B,eAAgB;IAC7BC,cAAc,EAAEA,cAAe;IAC/BC,cAAc,EAAEA,cAAe;IAC/B4B,cAAc,EAAE3B,0BAA2B;IAC3C4B,QAAQ,EAAE1B;EAAuB,CACpC,CACJ,EACAa,QAAQ,IAAID,WAAW,iBACpBlC,KAAA,CAAA2C,aAAA,CAACpC,oBAAoB;IAACuB,QAAQ,EAAEA,QAAS;IAACJ,gBAAgB,EAAEA;EAAiB,CAAE,CAClF,EACAY,QAAQ,iBAAItC,KAAA,CAAA2C,aAAA,CAACvC,IAAI;IAACmB,YAAY,EAAEA,YAAa;IAACI,aAAa,EAAEA;EAAc,CAAE,CAAC,EAC9EY,OAAO,iBACJvC,KAAA,CAAA2C,aAAA,CAACtC,GAAG;IACA4C,UAAU,EAAE,CAACZ,QAAS;IACtBhB,QAAQ,EAAEA,QAAS;IACnBI,QAAQ,EAAEA,QAAS;IACnBE,aAAa,EAAEA,aAAc;IAC7BuB,UAAU,EAAEpC,kBAAmB;IAC/BqC,UAAU,EAAEpC;EAAU,CACzB,CAEP,CACL,EAEAyB,cAAc,IAAIR,uBAAuB,IAAIS,gBAAgB,iBAC1DzC,KAAA,CAAA2C,aAAA,CAAC1C,MAAM;IAACmD,IAAI,EAAElD,MAAO;IAACwC,IAAI,EAAC,OAAO;IAACW,OAAO,EAAC,SAAS;IAACC,OAAO,EAAE9B;EAA0B,GACnFO,aAAa,CAACnB,QAAQ,CAAC2C,QAAQ,CAC5B,CAEX,CAAC;AAEd,CAAC;AAED,eAAe1C,cAAc","ignoreList":[]}
|
|
@@ -27,6 +27,7 @@ import ThemingStyles from '../common/theming';
|
|
|
27
27
|
import API from '../../api';
|
|
28
28
|
import MetadataQueryAPIHelperV2 from './MetadataQueryAPIHelper';
|
|
29
29
|
import MetadataQueryAPIHelper from '../../features/metadata-based-view/MetadataQueryAPIHelper';
|
|
30
|
+
import MetadataSidePanel from './MetadataSidePanel';
|
|
30
31
|
import Footer from './Footer';
|
|
31
32
|
import PreviewDialog from '../common/preview-dialog/PreviewDialog';
|
|
32
33
|
import ShareDialog from './ShareDialog';
|
|
@@ -1087,9 +1088,12 @@ class ContentExplorer extends Component {
|
|
|
1087
1088
|
selectedKeys: selectedItemIds,
|
|
1088
1089
|
onSelectionChange: ids => {
|
|
1089
1090
|
onSelectionChange?.(ids);
|
|
1090
|
-
|
|
1091
|
+
const isSelectionEmpty = ids !== 'all' && ids.size === 0;
|
|
1092
|
+
this.setState(_objectSpread({
|
|
1091
1093
|
selectedItemIds: ids
|
|
1092
|
-
}
|
|
1094
|
+
}, isSelectionEmpty && {
|
|
1095
|
+
isMetadataSidePanelOpen: false
|
|
1096
|
+
}));
|
|
1093
1097
|
}
|
|
1094
1098
|
})
|
|
1095
1099
|
});
|
|
@@ -1160,7 +1164,30 @@ class ContentExplorer extends Component {
|
|
|
1160
1164
|
});
|
|
1161
1165
|
_defineProperty(this, "clearSelectedItemIds", () => {
|
|
1162
1166
|
this.setState({
|
|
1163
|
-
selectedItemIds: new Set()
|
|
1167
|
+
selectedItemIds: new Set(),
|
|
1168
|
+
isMetadataSidePanelOpen: false
|
|
1169
|
+
});
|
|
1170
|
+
});
|
|
1171
|
+
/**
|
|
1172
|
+
* Toggle metadata side panel visibility
|
|
1173
|
+
*
|
|
1174
|
+
* @private
|
|
1175
|
+
* @return {void}
|
|
1176
|
+
*/
|
|
1177
|
+
_defineProperty(this, "onMetadataSidePanelToggle", () => {
|
|
1178
|
+
this.setState(prevState => ({
|
|
1179
|
+
isMetadataSidePanelOpen: !prevState.isMetadataSidePanelOpen
|
|
1180
|
+
}));
|
|
1181
|
+
});
|
|
1182
|
+
/**
|
|
1183
|
+
* Close metadata side panel
|
|
1184
|
+
*
|
|
1185
|
+
* @private
|
|
1186
|
+
* @return {void}
|
|
1187
|
+
*/
|
|
1188
|
+
_defineProperty(this, "closeMetadataSidePanel", () => {
|
|
1189
|
+
this.setState({
|
|
1190
|
+
isMetadataSidePanelOpen: false
|
|
1164
1191
|
});
|
|
1165
1192
|
});
|
|
1166
1193
|
const {
|
|
@@ -1202,6 +1229,7 @@ class ContentExplorer extends Component {
|
|
|
1202
1229
|
isCreateFolderModalOpen: false,
|
|
1203
1230
|
isDeleteModalOpen: false,
|
|
1204
1231
|
isLoading: false,
|
|
1232
|
+
isMetadataSidePanelOpen: false,
|
|
1205
1233
|
isPreviewModalOpen: false,
|
|
1206
1234
|
isRenameModalOpen: false,
|
|
1207
1235
|
isShareModalOpen: false,
|
|
@@ -1572,6 +1600,7 @@ class ContentExplorer extends Component {
|
|
|
1572
1600
|
isCreateFolderModalOpen,
|
|
1573
1601
|
isDeleteModalOpen,
|
|
1574
1602
|
isLoading,
|
|
1603
|
+
isMetadataSidePanelOpen,
|
|
1575
1604
|
isPreviewModalOpen,
|
|
1576
1605
|
isRenameModalOpen,
|
|
1577
1606
|
isShareModalOpen,
|
|
@@ -1580,6 +1609,7 @@ class ContentExplorer extends Component {
|
|
|
1580
1609
|
metadataTemplate,
|
|
1581
1610
|
rootName,
|
|
1582
1611
|
selected,
|
|
1612
|
+
selectedItemIds,
|
|
1583
1613
|
view
|
|
1584
1614
|
} = this.state;
|
|
1585
1615
|
const {
|
|
@@ -1595,6 +1625,7 @@ class ContentExplorer extends Component {
|
|
|
1595
1625
|
const allowUpload = canUpload && !!can_upload;
|
|
1596
1626
|
const allowCreate = canCreateNewFolder && !!can_upload;
|
|
1597
1627
|
const isDefaultViewMetadata = defaultView === DEFAULT_VIEW_METADATA;
|
|
1628
|
+
const isMetadataViewV2Feature = isFeatureEnabled(features, 'contentExplorer.metadataViewV2');
|
|
1598
1629
|
const isErrorView = view === VIEW_ERROR;
|
|
1599
1630
|
const viewMode = this.getViewMode();
|
|
1600
1631
|
const maxGridColumnCount = this.getMaxNumberOfGridViewColumnsForWidth();
|
|
@@ -1621,6 +1652,8 @@ class ContentExplorer extends Component {
|
|
|
1621
1652
|
className: "be-app-element",
|
|
1622
1653
|
onKeyDown: this.onKeyDown,
|
|
1623
1654
|
tabIndex: 0
|
|
1655
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1656
|
+
className: "bce-ContentExplorer-main"
|
|
1624
1657
|
}, !isDefaultViewMetadata && /*#__PURE__*/React.createElement(Header, {
|
|
1625
1658
|
view: view,
|
|
1626
1659
|
logoUrl: logoUrl,
|
|
@@ -1644,9 +1677,10 @@ class ContentExplorer extends Component {
|
|
|
1644
1677
|
onGridViewSliderChange: this.onGridViewSliderChange,
|
|
1645
1678
|
onItemClick: this.fetchFolder,
|
|
1646
1679
|
onSortChange: this.sort,
|
|
1680
|
+
onMetadataSidePanelToggle: this.onMetadataSidePanelToggle,
|
|
1647
1681
|
onViewModeChange: this.changeViewMode,
|
|
1648
1682
|
portalElement: this.rootElement,
|
|
1649
|
-
selectedItemIds:
|
|
1683
|
+
selectedItemIds: selectedItemIds,
|
|
1650
1684
|
title: title
|
|
1651
1685
|
}), /*#__PURE__*/React.createElement(Content, {
|
|
1652
1686
|
canDelete: canDelete,
|
|
@@ -1685,7 +1719,12 @@ class ContentExplorer extends Component {
|
|
|
1685
1719
|
pageSize: currentPageSize,
|
|
1686
1720
|
totalCount: totalCount,
|
|
1687
1721
|
onMarkerBasedPageChange: this.markerBasedPaginate
|
|
1688
|
-
}))),
|
|
1722
|
+
}))), isDefaultViewMetadata && isMetadataViewV2Feature && isMetadataSidePanelOpen && /*#__PURE__*/React.createElement(MetadataSidePanel, {
|
|
1723
|
+
currentCollection: currentCollection,
|
|
1724
|
+
onClose: this.closeMetadataSidePanel,
|
|
1725
|
+
metadataTemplate: metadataTemplate,
|
|
1726
|
+
selectedItemIds: selectedItemIds
|
|
1727
|
+
})), allowUpload && !!this.appElement ? /*#__PURE__*/React.createElement(UploadDialog, {
|
|
1689
1728
|
isOpen: isUploadModalOpen,
|
|
1690
1729
|
currentFolderId: id,
|
|
1691
1730
|
token: token,
|