box-ui-elements 18.0.0-beta.3 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/explorer.js +1 -1
- package/dist/openwith.js +1 -1
- package/dist/picker.js +2 -2
- package/dist/preview.js +1 -1
- package/dist/sharing.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/uploader.js +1 -1
- package/es/constants.js +1 -1
- package/es/constants.js.flow +1 -1
- package/es/constants.js.map +1 -1
- package/es/elements/content-picker/ContentPicker.js +2 -2
- package/es/elements/content-picker/ContentPicker.js.flow +2 -2
- package/es/elements/content-picker/ContentPicker.js.map +1 -1
- package/es/styles/_reset.scss +0 -1
- package/package.json +1 -1
- package/src/constants.js +1 -1
- package/src/elements/content-picker/ContentPicker.js +2 -2
- package/src/styles/_reset.scss +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/content-picker/ContentPicker.js"],"names":["React","Component","classNames","debounce","uniqueid","noop","Header","SubHeader","UploadDialog","CreateFolderDialog","Internationalize","makeResponsive","OffsetBasedPagination","isFocusableElement","isInputElement","focus","API","Content","Footer","CLIENT_NAME_CONTENT_PICKER","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","DEFAULT_ROOT","DEFAULT_SEARCH_DEBOUNCE","DEFAULT_VIEW_FILES","DEFAULT_VIEW_RECENTS","ERROR_CODE_ITEM_NAME_IN_USE","ERROR_CODE_ITEM_NAME_INVALID","ERROR_CODE_ITEM_NAME_TOO_LONG","FIELD_NAME","FIELD_SHARED_LINK","SORT_ASC","TYPE_FILE","TYPE_FOLDER","TYPE_WEBLINK","TYPED_ID_FOLDER_PREFIX","VIEW_ERROR","VIEW_FOLDER","VIEW_RECENTS","VIEW_SEARCH","VIEW_SELECTED","FILE_SHARED_LINK_FIELDS_TO_FETCH","defaultType","ContentPicker","props","selected","state","Object","keys","map","key","clone","onChoose","results","getSelectedItems","forEach","onCancel","deleteSelectedKeys","setState","id","currentCollection","view","searchQuery","fetchFolder","showRecents","search","showSelected","Error","error","code","console","item","type","triggerNavigationEvent","rootFolderId","currentId","currentOffset","limit","currentPageSize","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","api","getFolderAPI","getFolder","collection","fetchFolderSuccessCallback","errorCallback","forceFetch","percentLoaded","items","getCache","get","finishNavigation","query","getSearchAPI","searchSuccessCallback","trimmedQuery","debouncedSearch","cancel","permissions","canUpload","canUploadPermission","can_upload","isUploadModalOpen","createFolderCallback","name","isCreateFolderModalOpen","canCreateNewFolder","errorCode","isLoading","create","status","response","forceSharedLink","canSetShareAccess","selectableType","maxSelectable","indexOf","selectedKeys","selectedCount","hasHitSelectionLimit","isSingleFileSelection","cacheKey","getAPI","getCacheKey","existing","existingFromCache","existInSelected","prior","fetchSharedLinkInfo","focusedRow","findIndex","i","getFolderFields","handleSharedLinkSuccess","fields","getFileAPI","getFile","getWebLinkAPI","getWeblink","changeShareAccess","undefined","updateItemInCollection","select","access","can_set_share_access","share","updatedItem","newState","collectionItem","refreshCollection","table","event","target","toLowerCase","preventDefault","globalModifier","choose","upload","createFolder","newOffset","apiHost","clientName","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","rootName","destroy","clearCache","defaultView","currentFolderId","document","getElementById","appElement","firstElementChild","prevState","prevFolderId","autoFocus","activeElement","clearSelectedItemsOnNavigation","commonState","closeModals","getRecentsAPI","recents","recentsSuccessCallback","messages","logoUrl","contentUploaderProps","extensions","isHeaderLogoVisible","isPaginationVisible","isSmall","className","measureRef","chooseButtonLabel","cancelButtonLabel","renderCustomActionButtons","showSelectedButton","totalCount","isSingleSelect","allowUpload","allowCreate","styleClassName","onKeyDown","sort","tableRef","onItemClick","onFocusChange","paginate","uploadSuccessHandler","Infinity","ContentPickerComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Picker Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport type { Node } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport uniqueid from 'lodash/uniqueId';\nimport noop from 'lodash/noop';\nimport Header from '../common/header';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport UploadDialog from '../common/upload-dialog';\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport Internationalize from '../common/Internationalize';\nimport makeResponsive from '../common/makeResponsive';\nimport OffsetBasedPagination from '../../features/pagination/OffsetBasedPagination';\nimport { isFocusableElement, isInputElement, focus } from '../../utils/dom';\nimport API from '../../api';\nimport Content from './Content';\nimport Footer from './Footer';\nimport {\n CLIENT_NAME_CONTENT_PICKER,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_PAGE_NUMBER,\n DEFAULT_PAGE_SIZE,\n DEFAULT_ROOT,\n DEFAULT_SEARCH_DEBOUNCE,\n DEFAULT_VIEW_FILES,\n DEFAULT_VIEW_RECENTS,\n ERROR_CODE_ITEM_NAME_IN_USE,\n ERROR_CODE_ITEM_NAME_INVALID,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n FIELD_NAME,\n FIELD_SHARED_LINK,\n SORT_ASC,\n TYPE_FILE,\n TYPE_FOLDER,\n TYPE_WEBLINK,\n TYPED_ID_FOLDER_PREFIX,\n VIEW_ERROR,\n VIEW_FOLDER,\n VIEW_RECENTS,\n VIEW_SEARCH,\n VIEW_SELECTED,\n} from '../../constants';\nimport { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';\nimport type { ElementsXhrError } from '../../common/types/api';\nimport type {\n View,\n DefaultView,\n StringAnyMap,\n StringMap,\n SortBy,\n SortDirection,\n Token,\n Access,\n BoxItemPermission,\n BoxItem,\n Collection,\n} from '../../common/types/core';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentPicker.scss';\n\ntype Props = {\n apiHost: string,\n autoFocus: boolean,\n canCreateNewFolder: boolean,\n canSetShareAccess: boolean,\n canUpload: boolean,\n cancelButtonLabel?: string,\n chooseButtonLabel?: string,\n className: string,\n clearSelectedItemsOnNavigation: boolean,\n clientName: string,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId?: string,\n defaultView: DefaultView,\n extensions: string[],\n initialPage: number,\n initialPageSize: number,\n isHeaderLogoVisible?: boolean,\n isLarge: boolean,\n isPaginationVisible?: boolean,\n isSmall: boolean,\n isTouch: boolean,\n language?: string,\n logoUrl?: string,\n maxSelectable: number,\n measureRef?: Function,\n messages?: StringMap,\n onCancel: Function,\n onChoose: Function,\n renderCustomActionButtons?: ({\n onCancel: Function,\n onChoose: Function,\n selectedCount: number,\n selectedItems: BoxItem[],\n }) => Node,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showSelectedButton: boolean,\n sortBy: SortBy,\n sortDirection: SortDirection,\n token: Token,\n type: string,\n uploadHost: string,\n};\n\ntype State = {\n currentCollection: Collection,\n currentOffset: number,\n currentPageSize: number,\n errorCode: string,\n focusedRow: number,\n isCreateFolderModalOpen: boolean,\n isLoading: boolean,\n isUploadModalOpen: boolean,\n rootName: string,\n searchQuery: string,\n selected: { [string]: BoxItem },\n sortBy: SortBy,\n sortDirection: SortDirection,\n view: View,\n};\n\nconst defaultType = `${TYPE_FILE},${TYPE_WEBLINK}`;\n\nclass ContentPicker extends Component<Props, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: Props;\n\n table: any;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n globalModifier: boolean;\n\n firstLoad: boolean = true; // Keeps track of very 1st load\n\n static defaultProps = {\n type: defaultType,\n rootFolderId: DEFAULT_ROOT,\n onChoose: noop,\n onCancel: noop,\n initialPage: DEFAULT_PAGE_NUMBER,\n initialPageSize: DEFAULT_PAGE_SIZE,\n sortBy: FIELD_NAME,\n sortDirection: SORT_ASC,\n extensions: [],\n maxSelectable: Infinity,\n canUpload: true,\n canSetShareAccess: true,\n canCreateNewFolder: true,\n autoFocus: false,\n className: '',\n apiHost: DEFAULT_HOSTNAME_API,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n clientName: CLIENT_NAME_CONTENT_PICKER,\n defaultView: DEFAULT_VIEW_FILES,\n contentUploaderProps: {},\n showSelectedButton: true,\n clearSelectedItemsOnNavigation: false,\n isHeaderLogoVisible: true,\n isPaginationVisible: true,\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentPicker}\n */\n constructor(props: Props) {\n super(props);\n\n const {\n apiHost,\n clientName,\n initialPage,\n initialPageSize,\n language,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n sortBy,\n sortDirection,\n token,\n uploadHost,\n } = props;\n\n this.api = new API({\n apiHost,\n clientName,\n id: `${TYPED_ID_FOLDER_PREFIX}${rootFolderId}`,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n });\n\n this.id = uniqueid('bcp_');\n\n this.state = {\n sortBy,\n sortDirection,\n rootName: '',\n currentCollection: {},\n currentOffset: initialPageSize * (initialPage - 1),\n currentPageSize: initialPageSize,\n selected: {},\n searchQuery: '',\n view: VIEW_FOLDER,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n focusedRow: 0,\n isLoading: false,\n errorCode: '',\n };\n }\n\n /**\n * Destroys api instances\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.clearCache();\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n const { defaultView, currentFolderId }: Props = this.props;\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = ((this.rootElement.firstElementChild: any): HTMLElement);\n\n if (defaultView === DEFAULT_VIEW_RECENTS) {\n this.showRecents();\n } else {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Fetches the current folder if different\n * from what was already fetched before.\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate({ currentFolderId: prevFolderId }: Props, prevState: State): void {\n const { currentFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n }: State = prevState;\n\n if (prevFolderId === currentFolderId) {\n return;\n }\n\n if (typeof currentFolderId === 'string' && id !== currentFolderId) {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Gets selected items from state.\n * Clones values before returning so that\n * object references are broken. Also cleans\n * up the selected attribute since it was\n * added by the file picker.\n *\n * @private\n * @return {BoxItem[]}\n */\n getSelectedItems = (): BoxItem[] => {\n const { selected }: State = this.state;\n return Object.keys(selected).map(key => {\n const clone: BoxItem = { ...selected[key] };\n delete clone.selected;\n return clone;\n });\n };\n\n /**\n * Choose button action.\n *\n * @private\n * @fires choose\n * @return {void}\n */\n choose = (): void => {\n const { onChoose }: Props = this.props;\n const results = this.getSelectedItems();\n onChoose(results);\n };\n\n /**\n * Deletes selected keys off of selected items in state.\n *\n * @private\n * @return {void}\n */\n deleteSelectedKeys = (): void => {\n const { selected }: State = this.state;\n\n // Clear out the selected field\n Object.keys(selected).forEach(key => delete selected[key].selected);\n };\n\n /**\n * Cancel button action\n *\n * @private\n * @fires cancel\n * @return {void}\n */\n cancel = (): void => {\n const { onCancel }: Props = this.props;\n\n this.deleteSelectedKeys();\n\n // Reset the selected state\n this.setState({ selected: {} }, () => onCancel());\n };\n\n /**\n * Resets the percentLoaded in the collection\n * so that the loading bar starts showing\n *\n * @private\n * @return {Collection}\n */\n currentUnloadedCollection(): Collection {\n const { currentCollection }: State = this.state;\n return Object.assign(currentCollection, {\n percentLoaded: 0,\n });\n }\n\n /**\n * Refreshing the item collection depending\n * upon the view. Collection is gotten from cache.\n * Navigation event is prevented.\n *\n * @private\n * @return {void}\n */\n refreshCollection = (): void => {\n const {\n currentCollection: { id },\n view,\n searchQuery,\n }: State = this.state;\n if (view === VIEW_FOLDER && id) {\n this.fetchFolder(id, false);\n } else if (view === VIEW_RECENTS) {\n this.showRecents(false);\n } else if (view === VIEW_SEARCH && searchQuery) {\n this.search(searchQuery);\n } else if (view === VIEW_SELECTED) {\n this.showSelected();\n } else {\n throw new Error('Cannot refresh incompatible view!');\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error error object\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n this.setState({ view: VIEW_ERROR });\n /* eslint-disable no-console */\n console.error(error, code);\n /* eslint-enable no-console */\n };\n\n /**\n * Action performed when clicking on an item\n *\n * @private\n * @param {Object|string} item - the clicked box item\n * @return {void}\n */\n onItemClick = (item: BoxItem | string): void => {\n // If the id was passed in, just use that\n if (typeof item === 'string') {\n this.fetchFolder(item);\n return;\n }\n\n // If the item was passed in\n const { id, type }: BoxItem = item;\n if (type === TYPE_FOLDER) {\n this.fetchFolder(id);\n }\n };\n\n /**\n * Focuses the grid\n *\n * @private\n * @return {void}\n */\n finishNavigation(): void {\n const { autoFocus }: Props = this.props;\n const {\n currentCollection: { percentLoaded },\n }: State = this.state;\n\n // If loading for the very first time, only allow focus if autoFocus is true\n if (this.firstLoad && !autoFocus) {\n this.firstLoad = false;\n return;\n }\n\n // Don't focus the grid until its loaded and user is not already on an interactable element\n if (percentLoaded === 100 && !isFocusableElement(document.activeElement)) {\n focus(this.rootElement, '.bcp-item-row');\n this.setState({ focusedRow: 0 });\n }\n\n this.firstLoad = false;\n }\n\n /**\n * Folder fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} triggerNavigationEvent - To focus the grid\n * @return {void}\n */\n fetchFolderSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const { clearSelectedItemsOnNavigation, rootFolderId }: Props = this.props;\n const { id, name }: Collection = collection;\n\n const commonState = {\n currentCollection: collection,\n rootName: id === rootFolderId ? name : '',\n };\n\n // New folder state\n const newState = clearSelectedItemsOnNavigation ? { ...commonState, selected: {} } : commonState;\n\n // Close any open modals\n this.closeModals();\n\n // Deletes selected keys\n if (clearSelectedItemsOnNavigation) {\n this.deleteSelectedKeys();\n }\n\n if (triggerNavigationEvent) {\n // Fire folder navigation event\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Fetches a folder, defaults to fetching root folder\n *\n * @private\n * @param {string|void} [id] folder id\n * @param {Boolean|void} [triggerNavigationEvent] - To focus the grid\n * @return {void}\n */\n fetchFolder = (id?: string, triggerNavigationEvent?: boolean = true): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id: currentId },\n currentOffset,\n currentPageSize: limit,\n searchQuery = '',\n sortBy,\n sortDirection,\n }: State = this.state;\n const folderId: string = typeof id === 'string' ? id : rootFolderId;\n const hasFolderChanged = currentId && currentId !== folderId;\n const hasSearchQuery = !!searchQuery.trim().length;\n const offset = hasFolderChanged || hasSearchQuery ? 0 : currentOffset; // Reset offset on folder or mode change\n\n // If we are navigating around, aka not first load\n // then reset the focus to the root so that after\n // the collection loads the activeElement is not the\n // button that was clicked to fetch the folder\n if (!this.firstLoad) {\n this.rootElement.focus();\n }\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_FOLDER,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: offset,\n });\n\n // Fetch the folder using folder API\n this.api.getFolderAPI().getFolder(\n folderId,\n limit,\n offset,\n sortBy,\n sortDirection,\n (collection: Collection) => {\n this.fetchFolderSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n };\n\n /**\n * Recents fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n recentsSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const newState = { currentCollection: collection };\n if (triggerNavigationEvent) {\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Shows recents.\n * We always try to force fetch recents.\n *\n * @private\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n showRecents(triggerNavigationEvent: boolean = true): void {\n const { rootFolderId }: Props = this.props;\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_RECENTS,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: 0,\n });\n\n // Fetch the folder using folder API\n this.api.getRecentsAPI().recents(\n rootFolderId,\n (collection: Collection) => {\n this.recentsSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n }\n\n /**\n * Shows the selected items\n *\n * @private\n * @return {void}\n */\n showSelected = (): void => {\n const { selected, sortBy, sortDirection }: State = this.state;\n this.setState(\n {\n searchQuery: '',\n view: VIEW_SELECTED,\n currentCollection: {\n sortBy,\n sortDirection,\n percentLoaded: 100,\n items: Object.keys(selected).map(key => this.api.getCache().get(key)),\n },\n },\n this.finishNavigation,\n );\n };\n\n /**\n * Search success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @return {void}\n */\n searchSuccessCallback = (collection: Collection): void => {\n const { currentCollection }: State = this.state;\n this.setState({\n currentCollection: Object.assign(currentCollection, collection),\n });\n };\n\n /**\n * Debounced searching\n *\n * @private\n * @param {string} id folder id\n * @param {string} query search string\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n debouncedSearch: Function = debounce((id: string, query: string): void => {\n const { currentOffset, currentPageSize }: State = this.state;\n\n this.api\n .getSearchAPI()\n .search(id, query, currentPageSize, currentOffset, this.searchSuccessCallback, this.errorCallback, {\n forceFetch: true,\n });\n }, DEFAULT_SEARCH_DEBOUNCE);\n\n /**\n * Searches\n *\n * @private\n * @param {string} query search string\n * @return {void}\n */\n search = (query: string): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n currentOffset,\n searchQuery,\n }: State = this.state;\n const folderId = typeof id === 'string' ? id : rootFolderId;\n const trimmedQuery: string = query.trim();\n\n if (!query) {\n // Cancel the debounce so we don't search on a previous query\n this.debouncedSearch.cancel();\n\n // Query was cleared out, load the prior folder\n // The prior folder is always the parent folder for search\n this.setState({ currentOffset: 0 }, () => {\n this.fetchFolder(folderId, false);\n });\n\n return;\n }\n\n if (!trimmedQuery) {\n // Query now only has bunch of spaces\n // do nothing and but update prior state\n this.setState({\n searchQuery: query,\n });\n return;\n }\n\n this.setState({\n searchQuery: query,\n view: VIEW_SEARCH,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: trimmedQuery === searchQuery ? currentOffset : 0,\n });\n\n this.debouncedSearch(folderId, query);\n };\n\n /**\n * Uploads\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n upload = (): void => {\n const {\n currentCollection: { id, permissions },\n }: State = this.state;\n const { canUpload }: Props = this.props;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload: canUploadPermission }: BoxItemPermission = permissions;\n if (!canUpload || !canUploadPermission) {\n return;\n }\n\n this.setState({ isUploadModalOpen: true });\n };\n\n /**\n * Upload success handler\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n uploadSuccessHandler = (): void => {\n const {\n currentCollection: { id },\n }: State = this.state;\n this.fetchFolder(id, false);\n };\n\n /**\n * Creates a new folder\n *\n * @private\n * @return {void}\n */\n createFolder = (): void => {\n this.createFolderCallback();\n };\n\n /**\n * New folder callback\n *\n * @private\n * @param {string} name - folder name\n * @return {void}\n */\n createFolderCallback = (name?: string): void => {\n const { isCreateFolderModalOpen, currentCollection }: State = this.state;\n const { canCreateNewFolder }: Props = this.props;\n if (!canCreateNewFolder) {\n return;\n }\n\n const { id, permissions }: Collection = currentCollection;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n if (!isCreateFolderModalOpen || !name) {\n this.setState({ isCreateFolderModalOpen: true, errorCode: '' });\n return;\n }\n\n if (!name) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n if (name.length > 255) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_TOO_LONG,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getFolderAPI().create(\n id,\n name,\n () => {\n this.fetchFolder(id);\n },\n ({ response: { status } }) => {\n this.setState({\n errorCode: status === 409 ? ERROR_CODE_ITEM_NAME_IN_USE : ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n },\n );\n };\n\n /**\n * Selects or unselects an item\n *\n * @private\n * @param {Object} item file or folder object\n * @param {boolean} options.forceSharedLink Force a shared link if no link exists\n * @return {void}\n */\n select = (item: BoxItem, { forceSharedLink = true }: StringAnyMap = {}): void => {\n const { canSetShareAccess, type: selectableType, maxSelectable }: Props = this.props;\n const {\n view,\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n const { id, type }: BoxItem = item;\n\n if (!id || !type || selectableType.indexOf(type) === -1) {\n return;\n }\n\n const selectedKeys: Array<string> = Object.keys(selected);\n const selectedCount: number = selectedKeys.length;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable;\n const isSingleFileSelection: boolean = maxSelectable === 1;\n const cacheKey: string = this.api.getAPI(type).getCacheKey(id);\n const existing: BoxItem = selected[cacheKey];\n const existingFromCache: BoxItem = this.api.getCache().get(cacheKey);\n const existInSelected = selectedKeys.indexOf(cacheKey) !== -1;\n\n // Existing object could have mutated and we just need to update the\n // reference in the selected map. In that case treat it like a new selection.\n if (existing && existing === existingFromCache) {\n // We are selecting the same item that was already\n // selected. Unselect it in this case. Toggle case.\n delete existing.selected;\n delete selected[cacheKey];\n } else {\n // We are selecting a new item that was never\n // selected before. However if we are in a single\n // item selection mode, we should also unselect any\n // prior item that was selected.\n\n // Check if we hit the selection limit and if selection\n // is not already currently in the selected data structure.\n // Ignore when in single file selection mode.\n if (hasHitSelectionLimit && !isSingleFileSelection && !existInSelected) {\n return;\n }\n\n // Clear out the prior item for single file selection mode\n if (selectedCount > 0 && isSingleFileSelection) {\n const prior = selectedKeys[0]; // only one item\n delete selected[prior].selected;\n delete selected[prior];\n }\n\n // Select the new item\n item.selected = true;\n selected[cacheKey] = item;\n\n // If can set share access, fetch the shared link properties of the item\n // In the case where another item is selected, any in flight XHR will get\n // cancelled\n if (canSetShareAccess && forceSharedLink) {\n this.fetchSharedLinkInfo(item);\n }\n }\n\n const focusedRow = items.findIndex((i: BoxItem) => i.id === item.id);\n this.setState({ selected, focusedRow }, () => {\n if (view === VIEW_SELECTED) {\n // Need to refresh the selected view\n this.showSelected();\n }\n });\n };\n\n /**\n * Fetch the shared link info\n * @param {BoxItem} item - The item (folder, file, weblink)\n * @returns {void}\n */\n fetchSharedLinkInfo = (item: BoxItem): void => {\n const { id, type }: BoxItem = item;\n\n switch (type) {\n case TYPE_FOLDER:\n this.api.getFolderAPI().getFolderFields(id, this.handleSharedLinkSuccess, noop, {\n fields: FILE_SHARED_LINK_FIELDS_TO_FETCH,\n });\n break;\n case TYPE_FILE:\n this.api\n .getFileAPI()\n .getFile(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n case TYPE_WEBLINK:\n this.api\n .getWebLinkAPI()\n .getWeblink(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n default:\n throw new Error('Unknown Type');\n }\n };\n\n /**\n * Handles the shared link info by either creating a share link using enterprise defaults if\n * it does not already exist, otherwise update the item in the state currentCollection.\n *\n * @param {Object} item file or folder\n * @returns {void}\n */\n handleSharedLinkSuccess = (item: BoxItem) => {\n // if no shared link currently exists, create a shared link with enterprise default\n if (!item[FIELD_SHARED_LINK]) {\n this.changeShareAccess(undefined, item);\n } else {\n const { selected } = this.state;\n const { id, type } = item;\n // $FlowFixMe\n const cacheKey = this.api.getAPI(type).getCacheKey(id);\n // if shared link already exists, update the collection in state\n this.updateItemInCollection(item);\n if (item.selected && item !== selected[cacheKey]) {\n this.select(item, { forceSharedLink: false });\n }\n }\n };\n\n /**\n * Changes the share access of an item\n *\n * @private\n * @param {string} access share access\n * @param {Object} item file or folder object\n * @return {void}\n */\n changeShareAccess = (access?: Access, item: BoxItem): void => {\n const { canSetShareAccess }: Props = this.props;\n if (!item || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type }: BoxItem = item;\n if (!permissions || !type) {\n return;\n }\n\n const { can_set_share_access }: BoxItemPermission = permissions;\n if (access !== undefined && !can_set_share_access) {\n return;\n }\n\n this.api.getAPI(type).share(item, access, (updatedItem: BoxItem) => {\n this.updateItemInCollection(updatedItem);\n if (item.selected) {\n this.select(updatedItem, { forceSharedLink: false });\n }\n });\n };\n\n /**\n * Updates the BoxItem in the state's currentCollection\n *\n * @param {Object} item file or folder object\n * @returns {void}\n */\n updateItemInCollection = (item: BoxItem) => {\n const { currentCollection } = this.state;\n const { items = [] } = currentCollection;\n const newState = {\n currentCollection: {\n ...currentCollection,\n items: items.map(collectionItem => (collectionItem.id === item.id ? item : collectionItem)),\n },\n };\n this.setState(newState);\n };\n\n /**\n * Changes the sort by and sort direction\n *\n * @private\n * @param {string} sortBy - field to sorty by\n * @param {string} sortDirection - sort direction\n * @return {void}\n */\n sort = (sortBy: SortBy, sortDirection: SortDirection) => {\n const {\n currentCollection: { id },\n }: State = this.state;\n if (id) {\n this.setState({ sortBy, sortDirection }, this.refreshCollection);\n }\n };\n\n /**\n * Saves reference to table component\n *\n * @private\n * @param {Component} react component\n * @return {void}\n */\n tableRef = (table: React$Component<*, *>) => {\n this.table = table;\n };\n\n /**\n * Closes the modal dialogs that may be open\n *\n * @private\n * @return {void}\n */\n closeModals = (): void => {\n const { focusedRow }: State = this.state;\n\n this.setState({\n isLoading: false,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n });\n\n const {\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n if (selected && items.length > 0) {\n focus(this.rootElement, `.bcp-item-row-${focusedRow}`);\n }\n };\n\n /**\n * Keyboard events\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: Props = this.props;\n const key = event.key.toLowerCase();\n\n switch (key) {\n case '/':\n focus(this.rootElement, '.be-search input[type=\"search\"]', false);\n event.preventDefault();\n break;\n case 'arrowdown':\n focus(this.rootElement, '.bcp-item-row', false);\n this.setState({ focusedRow: 0 });\n event.preventDefault();\n break;\n case 'g':\n break;\n case 'b':\n if (this.globalModifier) {\n focus(this.rootElement, '.be-breadcrumb button', false);\n event.preventDefault();\n }\n\n break;\n case 'f':\n if (this.globalModifier) {\n this.fetchFolder(rootFolderId);\n event.preventDefault();\n }\n\n break;\n case 'c':\n if (this.globalModifier) {\n this.choose();\n event.preventDefault();\n }\n\n break;\n case 'x':\n if (this.globalModifier) {\n this.cancel();\n event.preventDefault();\n }\n\n break;\n case 's':\n if (this.globalModifier) {\n this.showSelected();\n event.preventDefault();\n }\n\n break;\n case 'u':\n if (this.globalModifier) {\n this.upload();\n event.preventDefault();\n }\n\n break;\n case 'r':\n if (this.globalModifier) {\n this.showRecents();\n event.preventDefault();\n }\n\n break;\n case 'n':\n if (this.globalModifier) {\n this.createFolder();\n event.preventDefault();\n }\n\n break;\n default:\n this.globalModifier = false;\n return;\n }\n\n this.globalModifier = key === 'g';\n };\n\n /**\n * Updates the focused row based on key binder\n *\n * @private\n * @param {number} focusedRow - the row index thats focused\n * @return {void}\n */\n onFocusChange = (focusedRow: number) => {\n this.setState({ focusedRow });\n };\n\n /**\n * Handle pagination changes\n *\n * @param {number} newOffset - the new page offset value\n */\n paginate = (newOffset: number) => {\n this.setState({ currentOffset: newOffset }, this.refreshCollection);\n };\n\n /**\n * Renders the file picker\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n language,\n messages,\n rootFolderId,\n logoUrl,\n canUpload,\n canSetShareAccess,\n canCreateNewFolder,\n contentUploaderProps,\n extensions,\n maxSelectable,\n type,\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n isHeaderLogoVisible,\n isPaginationVisible,\n isSmall,\n className,\n measureRef,\n chooseButtonLabel,\n cancelButtonLabel,\n requestInterceptor,\n responseInterceptor,\n renderCustomActionButtons,\n showSelectedButton,\n }: Props = this.props;\n const {\n view,\n rootName,\n selected,\n currentCollection,\n currentPageSize,\n searchQuery,\n isCreateFolderModalOpen,\n isUploadModalOpen,\n isLoading,\n errorCode,\n focusedRow,\n }: State = this.state;\n const { id, offset, permissions, totalCount }: Collection = currentCollection;\n const { can_upload }: BoxItemPermission = permissions || {};\n const selectedCount: number = Object.keys(selected).length;\n const isSingleSelect = maxSelectable === 1;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable && !isSingleSelect;\n const allowUpload: boolean = canUpload && !!can_upload;\n const allowCreate: boolean = canCreateNewFolder && !!can_upload;\n const styleClassName = classNames('be bcp', className);\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <div id={this.id} className={styleClassName} ref={measureRef} data-testid=\"content-picker\">\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n <Header\n view={view}\n isHeaderLogoVisible={isHeaderLogoVisible}\n isSmall={isSmall}\n searchQuery={searchQuery}\n logoUrl={logoUrl}\n onSearch={this.search}\n />\n <SubHeader\n view={view}\n rootId={rootFolderId}\n isSmall={isSmall}\n rootName={rootName}\n currentCollection={currentCollection}\n canUpload={allowUpload}\n canCreateNewFolder={allowCreate}\n onUpload={this.upload}\n onCreate={this.createFolder}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n />\n <Content\n view={view}\n isSmall={isSmall}\n rootId={rootFolderId}\n rootElement={this.rootElement}\n focusedRow={focusedRow}\n selectableType={type}\n canSetShareAccess={canSetShareAccess}\n extensionsWhitelist={extensions}\n hasHitSelectionLimit={hasHitSelectionLimit}\n currentCollection={currentCollection}\n isSingleSelect={isSingleSelect}\n tableRef={this.tableRef}\n onItemSelect={this.select}\n onItemClick={this.onItemClick}\n onFocusChange={this.onFocusChange}\n onShareAccessChange={this.changeShareAccess}\n />\n <Footer\n currentCollection={currentCollection}\n selectedCount={selectedCount}\n selectedItems={this.getSelectedItems()}\n showSelectedButton={showSelectedButton}\n hasHitSelectionLimit={hasHitSelectionLimit}\n isSingleSelect={isSingleSelect}\n onSelectedClick={this.showSelected}\n onChoose={this.choose}\n onCancel={this.cancel}\n chooseButtonLabel={chooseButtonLabel}\n cancelButtonLabel={cancelButtonLabel}\n renderCustomActionButtons={renderCustomActionButtons}\n >\n {isPaginationVisible ? (\n <OffsetBasedPagination\n offset={offset}\n onOffsetChange={this.paginate}\n pageSize={currentPageSize}\n totalCount={totalCount}\n />\n ) : null}\n </Footer>\n </div>\n {allowUpload && !!this.appElement ? (\n <UploadDialog\n isOpen={isUploadModalOpen}\n currentFolderId={id}\n token={token}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n apiHost={apiHost}\n uploadHost={uploadHost}\n onClose={this.uploadSuccessHandler}\n parentElement={this.rootElement}\n appElement={this.appElement}\n contentUploaderProps={contentUploaderProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\n {allowCreate && !!this.appElement ? (\n <CreateFolderDialog\n isOpen={isCreateFolderModalOpen}\n onCreate={this.createFolderCallback}\n onCancel={this.closeModals}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n </div>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport { ContentPicker as ContentPickerComponent };\nexport default makeResponsive(ContentPicker);\n"],"file":"ContentPicker.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/content-picker/ContentPicker.js"],"names":["React","Component","classNames","debounce","uniqueid","noop","Header","SubHeader","UploadDialog","CreateFolderDialog","Internationalize","makeResponsive","OffsetBasedPagination","isFocusableElement","isInputElement","focus","API","Content","Footer","CLIENT_NAME_CONTENT_PICKER","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_PAGE_NUMBER","DEFAULT_PAGE_SIZE","DEFAULT_ROOT","DEFAULT_SEARCH_DEBOUNCE","DEFAULT_VIEW_FILES","DEFAULT_VIEW_RECENTS","ERROR_CODE_ITEM_NAME_IN_USE","ERROR_CODE_ITEM_NAME_INVALID","ERROR_CODE_ITEM_NAME_TOO_LONG","FIELD_NAME","FIELD_SHARED_LINK","SORT_ASC","TYPE_FILE","TYPE_FOLDER","TYPE_WEBLINK","TYPED_ID_FOLDER_PREFIX","VIEW_ERROR","VIEW_FOLDER","VIEW_RECENTS","VIEW_SEARCH","VIEW_SELECTED","FILE_SHARED_LINK_FIELDS_TO_FETCH","defaultType","ContentPicker","props","selected","state","Object","keys","map","key","clone","onChoose","results","getSelectedItems","forEach","onCancel","deleteSelectedKeys","setState","id","currentCollection","view","searchQuery","fetchFolder","showRecents","search","showSelected","Error","error","code","console","item","type","triggerNavigationEvent","rootFolderId","currentId","currentOffset","limit","currentPageSize","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","api","getFolderAPI","getFolder","collection","fetchFolderSuccessCallback","errorCallback","forceFetch","percentLoaded","items","getCache","get","finishNavigation","query","getSearchAPI","searchSuccessCallback","trimmedQuery","debouncedSearch","cancel","permissions","canUpload","canUploadPermission","can_upload","isUploadModalOpen","createFolderCallback","name","isCreateFolderModalOpen","canCreateNewFolder","errorCode","isLoading","create","status","response","forceSharedLink","canSetShareAccess","selectableType","maxSelectable","indexOf","selectedKeys","selectedCount","hasHitSelectionLimit","isSingleFileSelection","cacheKey","getAPI","getCacheKey","existing","existingFromCache","existInSelected","prior","fetchSharedLinkInfo","focusedRow","findIndex","i","getFolderFields","handleSharedLinkSuccess","fields","getFileAPI","getFile","getWebLinkAPI","getWeblink","changeShareAccess","undefined","updateItemInCollection","select","access","can_set_share_access","share","updatedItem","newState","collectionItem","refreshCollection","table","event","target","toLowerCase","preventDefault","globalModifier","choose","upload","createFolder","newOffset","apiHost","clientName","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","rootName","destroy","clearCache","defaultView","currentFolderId","document","getElementById","appElement","firstElementChild","prevState","prevFolderId","autoFocus","activeElement","clearSelectedItemsOnNavigation","commonState","closeModals","getRecentsAPI","recents","recentsSuccessCallback","messages","logoUrl","contentUploaderProps","extensions","isHeaderLogoVisible","isPaginationVisible","isSmall","className","measureRef","chooseButtonLabel","cancelButtonLabel","renderCustomActionButtons","showSelectedButton","totalCount","isSingleSelect","allowUpload","allowCreate","styleClassName","onKeyDown","sort","tableRef","onItemClick","onFocusChange","paginate","uploadSuccessHandler","Infinity","ContentPickerComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Picker Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport type { Node } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport uniqueid from 'lodash/uniqueId';\nimport noop from 'lodash/noop';\nimport Header from '../common/header';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport UploadDialog from '../common/upload-dialog';\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport Internationalize from '../common/Internationalize';\nimport makeResponsive from '../common/makeResponsive';\nimport OffsetBasedPagination from '../../features/pagination/OffsetBasedPagination';\nimport { isFocusableElement, isInputElement, focus } from '../../utils/dom';\nimport API from '../../api';\nimport Content from './Content';\nimport Footer from './Footer';\nimport {\n CLIENT_NAME_CONTENT_PICKER,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_PAGE_NUMBER,\n DEFAULT_PAGE_SIZE,\n DEFAULT_ROOT,\n DEFAULT_SEARCH_DEBOUNCE,\n DEFAULT_VIEW_FILES,\n DEFAULT_VIEW_RECENTS,\n ERROR_CODE_ITEM_NAME_IN_USE,\n ERROR_CODE_ITEM_NAME_INVALID,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n FIELD_NAME,\n FIELD_SHARED_LINK,\n SORT_ASC,\n TYPE_FILE,\n TYPE_FOLDER,\n TYPE_WEBLINK,\n TYPED_ID_FOLDER_PREFIX,\n VIEW_ERROR,\n VIEW_FOLDER,\n VIEW_RECENTS,\n VIEW_SEARCH,\n VIEW_SELECTED,\n} from '../../constants';\nimport { FILE_SHARED_LINK_FIELDS_TO_FETCH } from '../../utils/fields';\nimport type { ElementsXhrError } from '../../common/types/api';\nimport type {\n View,\n DefaultView,\n StringAnyMap,\n StringMap,\n SortBy,\n SortDirection,\n Token,\n Access,\n BoxItemPermission,\n BoxItem,\n Collection,\n} from '../../common/types/core';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentPicker.scss';\n\ntype Props = {\n apiHost: string,\n autoFocus: boolean,\n canCreateNewFolder: boolean,\n canSetShareAccess: boolean,\n canUpload: boolean,\n cancelButtonLabel?: string,\n chooseButtonLabel?: string,\n className: string,\n clearSelectedItemsOnNavigation: boolean,\n clientName: string,\n contentUploaderProps: ContentUploaderProps,\n currentFolderId?: string,\n defaultView: DefaultView,\n extensions: string[],\n initialPage: number,\n initialPageSize: number,\n isHeaderLogoVisible?: boolean,\n isLarge: boolean,\n isPaginationVisible?: boolean,\n isSmall: boolean,\n isTouch: boolean,\n language?: string,\n logoUrl?: string,\n maxSelectable: number,\n measureRef?: Function,\n messages?: StringMap,\n onCancel: Function,\n onChoose: Function,\n renderCustomActionButtons?: ({\n onCancel: Function,\n onChoose: Function,\n selectedCount: number,\n selectedItems: BoxItem[],\n }) => Node,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showSelectedButton: boolean,\n sortBy: SortBy,\n sortDirection: SortDirection,\n token: Token,\n type: string,\n uploadHost: string,\n};\n\ntype State = {\n currentCollection: Collection,\n currentOffset: number,\n currentPageSize: number,\n errorCode: string,\n focusedRow: number,\n isCreateFolderModalOpen: boolean,\n isLoading: boolean,\n isUploadModalOpen: boolean,\n rootName: string,\n searchQuery: string,\n selected: { [string]: BoxItem },\n sortBy: SortBy,\n sortDirection: SortDirection,\n view: View,\n};\n\nconst defaultType = `${TYPE_FILE},${TYPE_WEBLINK}`;\n\nclass ContentPicker extends Component<Props, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: Props;\n\n table: any;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n globalModifier: boolean;\n\n firstLoad: boolean = true; // Keeps track of very 1st load\n\n static defaultProps = {\n type: defaultType,\n rootFolderId: DEFAULT_ROOT,\n onChoose: noop,\n onCancel: noop,\n initialPage: DEFAULT_PAGE_NUMBER,\n initialPageSize: DEFAULT_PAGE_SIZE,\n sortBy: FIELD_NAME,\n sortDirection: SORT_ASC,\n extensions: [],\n maxSelectable: Infinity,\n canUpload: true,\n canSetShareAccess: true,\n canCreateNewFolder: true,\n autoFocus: false,\n className: '',\n apiHost: DEFAULT_HOSTNAME_API,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n clientName: CLIENT_NAME_CONTENT_PICKER,\n defaultView: DEFAULT_VIEW_FILES,\n contentUploaderProps: {},\n showSelectedButton: true,\n clearSelectedItemsOnNavigation: false,\n isHeaderLogoVisible: true,\n isPaginationVisible: true,\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentPicker}\n */\n constructor(props: Props) {\n super(props);\n\n const {\n apiHost,\n clientName,\n initialPage,\n initialPageSize,\n language,\n requestInterceptor,\n responseInterceptor,\n rootFolderId,\n sharedLink,\n sharedLinkPassword,\n sortBy,\n sortDirection,\n token,\n uploadHost,\n } = props;\n\n this.api = new API({\n apiHost,\n clientName,\n id: `${TYPED_ID_FOLDER_PREFIX}${rootFolderId}`,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n });\n\n this.id = uniqueid('bcp_');\n\n this.state = {\n sortBy,\n sortDirection,\n rootName: '',\n currentCollection: {},\n currentOffset: initialPageSize * (initialPage - 1),\n currentPageSize: initialPageSize,\n selected: {},\n searchQuery: '',\n view: VIEW_FOLDER,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n focusedRow: 0,\n isLoading: false,\n errorCode: '',\n };\n }\n\n /**\n * Destroys api instances\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.clearCache();\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n const { defaultView, currentFolderId }: Props = this.props;\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = ((this.rootElement.firstElementChild: any): HTMLElement);\n\n if (defaultView === DEFAULT_VIEW_RECENTS) {\n this.showRecents();\n } else {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Fetches the current folder if different\n * from what was already fetched before.\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate({ currentFolderId: prevFolderId }: Props, prevState: State): void {\n const { currentFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n }: State = prevState;\n\n if (prevFolderId === currentFolderId) {\n return;\n }\n\n if (typeof currentFolderId === 'string' && id !== currentFolderId) {\n this.fetchFolder(currentFolderId);\n }\n }\n\n /**\n * Gets selected items from state.\n * Clones values before returning so that\n * object references are broken. Also cleans\n * up the selected attribute since it was\n * added by the file picker.\n *\n * @private\n * @return {BoxItem[]}\n */\n getSelectedItems = (): BoxItem[] => {\n const { selected }: State = this.state;\n return Object.keys(selected).map(key => {\n const clone: BoxItem = { ...selected[key] };\n delete clone.selected;\n return clone;\n });\n };\n\n /**\n * Choose button action.\n *\n * @private\n * @fires choose\n * @return {void}\n */\n choose = (): void => {\n const { onChoose }: Props = this.props;\n const results = this.getSelectedItems();\n onChoose(results);\n };\n\n /**\n * Deletes selected keys off of selected items in state.\n *\n * @private\n * @return {void}\n */\n deleteSelectedKeys = (): void => {\n const { selected }: State = this.state;\n\n // Clear out the selected field\n Object.keys(selected).forEach(key => delete selected[key].selected);\n };\n\n /**\n * Cancel button action\n *\n * @private\n * @fires cancel\n * @return {void}\n */\n cancel = (): void => {\n const { onCancel }: Props = this.props;\n\n this.deleteSelectedKeys();\n\n // Reset the selected state\n this.setState({ selected: {} }, () => onCancel());\n };\n\n /**\n * Resets the percentLoaded in the collection\n * so that the loading bar starts showing\n *\n * @private\n * @return {Collection}\n */\n currentUnloadedCollection(): Collection {\n const { currentCollection }: State = this.state;\n return Object.assign(currentCollection, {\n percentLoaded: 0,\n });\n }\n\n /**\n * Refreshing the item collection depending\n * upon the view. Collection is gotten from cache.\n * Navigation event is prevented.\n *\n * @private\n * @return {void}\n */\n refreshCollection = (): void => {\n const {\n currentCollection: { id },\n view,\n searchQuery,\n }: State = this.state;\n if (view === VIEW_FOLDER && id) {\n this.fetchFolder(id, false);\n } else if (view === VIEW_RECENTS) {\n this.showRecents(false);\n } else if (view === VIEW_SEARCH && searchQuery) {\n this.search(searchQuery);\n } else if (view === VIEW_SELECTED) {\n this.showSelected();\n } else {\n throw new Error('Cannot refresh incompatible view!');\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error error object\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n this.setState({ view: VIEW_ERROR });\n /* eslint-disable no-console */\n console.error(error, code);\n /* eslint-enable no-console */\n };\n\n /**\n * Action performed when clicking on an item\n *\n * @private\n * @param {Object|string} item - the clicked box item\n * @return {void}\n */\n onItemClick = (item: BoxItem | string): void => {\n // If the id was passed in, just use that\n if (typeof item === 'string') {\n this.fetchFolder(item);\n return;\n }\n\n // If the item was passed in\n const { id, type }: BoxItem = item;\n if (type === TYPE_FOLDER) {\n this.fetchFolder(id);\n }\n };\n\n /**\n * Focuses the grid\n *\n * @private\n * @return {void}\n */\n finishNavigation(): void {\n const { autoFocus }: Props = this.props;\n const {\n currentCollection: { percentLoaded },\n }: State = this.state;\n\n // If loading for the very first time, only allow focus if autoFocus is true\n if (this.firstLoad && !autoFocus) {\n this.firstLoad = false;\n return;\n }\n\n // Don't focus the grid until its loaded and user is not already on an interactable element\n if (percentLoaded === 100 && !isFocusableElement(document.activeElement)) {\n focus(this.rootElement, '.bcp-item-row');\n this.setState({ focusedRow: 0 });\n }\n\n this.firstLoad = false;\n }\n\n /**\n * Folder fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} triggerNavigationEvent - To focus the grid\n * @return {void}\n */\n fetchFolderSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const { clearSelectedItemsOnNavigation, rootFolderId }: Props = this.props;\n const { id, name }: Collection = collection;\n\n const commonState = {\n currentCollection: collection,\n rootName: id === rootFolderId ? name : '',\n };\n\n // New folder state\n const newState = clearSelectedItemsOnNavigation ? { ...commonState, selected: {} } : commonState;\n\n // Close any open modals\n this.closeModals();\n\n // Deletes selected keys\n if (clearSelectedItemsOnNavigation) {\n this.deleteSelectedKeys();\n }\n\n if (triggerNavigationEvent) {\n // Fire folder navigation event\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Fetches a folder, defaults to fetching root folder\n *\n * @private\n * @param {string|void} [id] folder id\n * @param {Boolean|void} [triggerNavigationEvent] - To focus the grid\n * @return {void}\n */\n fetchFolder = (id?: string, triggerNavigationEvent?: boolean = true): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id: currentId },\n currentOffset,\n currentPageSize: limit,\n searchQuery = '',\n sortBy,\n sortDirection,\n }: State = this.state;\n const folderId: string = typeof id === 'string' ? id : rootFolderId;\n const hasFolderChanged = currentId && currentId !== folderId;\n const hasSearchQuery = !!searchQuery.trim().length;\n const offset = hasFolderChanged || hasSearchQuery ? 0 : currentOffset; // Reset offset on folder or mode change\n\n // If we are navigating around, aka not first load\n // then reset the focus to the root so that after\n // the collection loads the activeElement is not the\n // button that was clicked to fetch the folder\n if (!this.firstLoad) {\n this.rootElement.focus();\n }\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_FOLDER,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: offset,\n });\n\n // Fetch the folder using folder API\n this.api.getFolderAPI().getFolder(\n folderId,\n limit,\n offset,\n sortBy,\n sortDirection,\n (collection: Collection) => {\n this.fetchFolderSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n };\n\n /**\n * Recents fetch success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @return {void}\n */\n recentsSuccessCallback(collection: Collection, triggerNavigationEvent: boolean): void {\n const newState = { currentCollection: collection };\n if (triggerNavigationEvent) {\n this.setState(newState, this.finishNavigation);\n } else {\n this.setState(newState);\n }\n }\n\n /**\n * Shows recents.\n * We always try to force fetch recents.\n *\n * @private\n * @param {Boolean|void} [triggerNavigationEvent] To trigger navigate event\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n showRecents(triggerNavigationEvent: boolean = true): void {\n const { rootFolderId }: Props = this.props;\n\n // Reset search state, the view and show busy indicator\n this.setState({\n searchQuery: '',\n view: VIEW_RECENTS,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: 0,\n });\n\n // Fetch the folder using folder API\n this.api.getRecentsAPI().recents(\n rootFolderId,\n (collection: Collection) => {\n this.recentsSuccessCallback(collection, triggerNavigationEvent);\n },\n this.errorCallback,\n { forceFetch: true },\n );\n }\n\n /**\n * Shows the selected items\n *\n * @private\n * @return {void}\n */\n showSelected = (): void => {\n const { selected, sortBy, sortDirection }: State = this.state;\n this.setState(\n {\n searchQuery: '',\n view: VIEW_SELECTED,\n currentCollection: {\n sortBy,\n sortDirection,\n percentLoaded: 100,\n items: Object.keys(selected).map(key => this.api.getCache().get(key)),\n },\n },\n this.finishNavigation,\n );\n };\n\n /**\n * Search success callback\n *\n * @private\n * @param {Object} collection item collection object\n * @return {void}\n */\n searchSuccessCallback = (collection: Collection): void => {\n const { currentCollection }: State = this.state;\n this.setState({\n currentCollection: Object.assign(currentCollection, collection),\n });\n };\n\n /**\n * Debounced searching\n *\n * @private\n * @param {string} id folder id\n * @param {string} query search string\n * @param {Boolean|void} [forceFetch] To void cache\n * @return {void}\n */\n debouncedSearch: Function = debounce((id: string, query: string): void => {\n const { currentOffset, currentPageSize }: State = this.state;\n\n this.api\n .getSearchAPI()\n .search(id, query, currentPageSize, currentOffset, this.searchSuccessCallback, this.errorCallback, {\n forceFetch: true,\n });\n }, DEFAULT_SEARCH_DEBOUNCE);\n\n /**\n * Searches\n *\n * @private\n * @param {string} query search string\n * @return {void}\n */\n search = (query: string): void => {\n const { rootFolderId }: Props = this.props;\n const {\n currentCollection: { id },\n currentOffset,\n searchQuery,\n }: State = this.state;\n const folderId = typeof id === 'string' ? id : rootFolderId;\n const trimmedQuery: string = query.trim();\n\n if (!query) {\n // Cancel the debounce so we don't search on a previous query\n this.debouncedSearch.cancel();\n\n // Query was cleared out, load the prior folder\n // The prior folder is always the parent folder for search\n this.setState({ currentOffset: 0 }, () => {\n this.fetchFolder(folderId, false);\n });\n\n return;\n }\n\n if (!trimmedQuery) {\n // Query now only has bunch of spaces\n // do nothing and but update prior state\n this.setState({\n searchQuery: query,\n });\n return;\n }\n\n this.setState({\n searchQuery: query,\n view: VIEW_SEARCH,\n currentCollection: this.currentUnloadedCollection(),\n currentOffset: trimmedQuery === searchQuery ? currentOffset : 0,\n });\n\n this.debouncedSearch(folderId, query);\n };\n\n /**\n * Uploads\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n upload = (): void => {\n const {\n currentCollection: { id, permissions },\n }: State = this.state;\n const { canUpload }: Props = this.props;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload: canUploadPermission }: BoxItemPermission = permissions;\n if (!canUpload || !canUploadPermission) {\n return;\n }\n\n this.setState({ isUploadModalOpen: true });\n };\n\n /**\n * Upload success handler\n *\n * @private\n * @param {File} file dom file object\n * @return {void}\n */\n uploadSuccessHandler = (): void => {\n const {\n currentCollection: { id },\n }: State = this.state;\n this.fetchFolder(id, false);\n };\n\n /**\n * Creates a new folder\n *\n * @private\n * @return {void}\n */\n createFolder = (): void => {\n this.createFolderCallback();\n };\n\n /**\n * New folder callback\n *\n * @private\n * @param {string} name - folder name\n * @return {void}\n */\n createFolderCallback = (name?: string): void => {\n const { isCreateFolderModalOpen, currentCollection }: State = this.state;\n const { canCreateNewFolder }: Props = this.props;\n if (!canCreateNewFolder) {\n return;\n }\n\n const { id, permissions }: Collection = currentCollection;\n if (!id || !permissions) {\n return;\n }\n\n const { can_upload }: BoxItemPermission = permissions;\n if (!can_upload) {\n return;\n }\n\n if (!isCreateFolderModalOpen || !name) {\n this.setState({ isCreateFolderModalOpen: true, errorCode: '' });\n return;\n }\n\n if (!name.trim()) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n return;\n }\n\n if (name.length > 255) {\n this.setState({\n errorCode: ERROR_CODE_ITEM_NAME_TOO_LONG,\n isLoading: false,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n this.api.getFolderAPI().create(\n id,\n name.trim(),\n () => {\n this.fetchFolder(id);\n },\n ({ response: { status } }) => {\n this.setState({\n errorCode: status === 409 ? ERROR_CODE_ITEM_NAME_IN_USE : ERROR_CODE_ITEM_NAME_INVALID,\n isLoading: false,\n });\n },\n );\n };\n\n /**\n * Selects or unselects an item\n *\n * @private\n * @param {Object} item file or folder object\n * @param {boolean} options.forceSharedLink Force a shared link if no link exists\n * @return {void}\n */\n select = (item: BoxItem, { forceSharedLink = true }: StringAnyMap = {}): void => {\n const { canSetShareAccess, type: selectableType, maxSelectable }: Props = this.props;\n const {\n view,\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n const { id, type }: BoxItem = item;\n\n if (!id || !type || selectableType.indexOf(type) === -1) {\n return;\n }\n\n const selectedKeys: Array<string> = Object.keys(selected);\n const selectedCount: number = selectedKeys.length;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable;\n const isSingleFileSelection: boolean = maxSelectable === 1;\n const cacheKey: string = this.api.getAPI(type).getCacheKey(id);\n const existing: BoxItem = selected[cacheKey];\n const existingFromCache: BoxItem = this.api.getCache().get(cacheKey);\n const existInSelected = selectedKeys.indexOf(cacheKey) !== -1;\n\n // Existing object could have mutated and we just need to update the\n // reference in the selected map. In that case treat it like a new selection.\n if (existing && existing === existingFromCache) {\n // We are selecting the same item that was already\n // selected. Unselect it in this case. Toggle case.\n delete existing.selected;\n delete selected[cacheKey];\n } else {\n // We are selecting a new item that was never\n // selected before. However if we are in a single\n // item selection mode, we should also unselect any\n // prior item that was selected.\n\n // Check if we hit the selection limit and if selection\n // is not already currently in the selected data structure.\n // Ignore when in single file selection mode.\n if (hasHitSelectionLimit && !isSingleFileSelection && !existInSelected) {\n return;\n }\n\n // Clear out the prior item for single file selection mode\n if (selectedCount > 0 && isSingleFileSelection) {\n const prior = selectedKeys[0]; // only one item\n delete selected[prior].selected;\n delete selected[prior];\n }\n\n // Select the new item\n item.selected = true;\n selected[cacheKey] = item;\n\n // If can set share access, fetch the shared link properties of the item\n // In the case where another item is selected, any in flight XHR will get\n // cancelled\n if (canSetShareAccess && forceSharedLink) {\n this.fetchSharedLinkInfo(item);\n }\n }\n\n const focusedRow = items.findIndex((i: BoxItem) => i.id === item.id);\n this.setState({ selected, focusedRow }, () => {\n if (view === VIEW_SELECTED) {\n // Need to refresh the selected view\n this.showSelected();\n }\n });\n };\n\n /**\n * Fetch the shared link info\n * @param {BoxItem} item - The item (folder, file, weblink)\n * @returns {void}\n */\n fetchSharedLinkInfo = (item: BoxItem): void => {\n const { id, type }: BoxItem = item;\n\n switch (type) {\n case TYPE_FOLDER:\n this.api.getFolderAPI().getFolderFields(id, this.handleSharedLinkSuccess, noop, {\n fields: FILE_SHARED_LINK_FIELDS_TO_FETCH,\n });\n break;\n case TYPE_FILE:\n this.api\n .getFileAPI()\n .getFile(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n case TYPE_WEBLINK:\n this.api\n .getWebLinkAPI()\n .getWeblink(id, this.handleSharedLinkSuccess, noop, { fields: FILE_SHARED_LINK_FIELDS_TO_FETCH });\n break;\n default:\n throw new Error('Unknown Type');\n }\n };\n\n /**\n * Handles the shared link info by either creating a share link using enterprise defaults if\n * it does not already exist, otherwise update the item in the state currentCollection.\n *\n * @param {Object} item file or folder\n * @returns {void}\n */\n handleSharedLinkSuccess = (item: BoxItem) => {\n // if no shared link currently exists, create a shared link with enterprise default\n if (!item[FIELD_SHARED_LINK]) {\n this.changeShareAccess(undefined, item);\n } else {\n const { selected } = this.state;\n const { id, type } = item;\n // $FlowFixMe\n const cacheKey = this.api.getAPI(type).getCacheKey(id);\n // if shared link already exists, update the collection in state\n this.updateItemInCollection(item);\n if (item.selected && item !== selected[cacheKey]) {\n this.select(item, { forceSharedLink: false });\n }\n }\n };\n\n /**\n * Changes the share access of an item\n *\n * @private\n * @param {string} access share access\n * @param {Object} item file or folder object\n * @return {void}\n */\n changeShareAccess = (access?: Access, item: BoxItem): void => {\n const { canSetShareAccess }: Props = this.props;\n if (!item || !canSetShareAccess) {\n return;\n }\n\n const { permissions, type }: BoxItem = item;\n if (!permissions || !type) {\n return;\n }\n\n const { can_set_share_access }: BoxItemPermission = permissions;\n if (access !== undefined && !can_set_share_access) {\n return;\n }\n\n this.api.getAPI(type).share(item, access, (updatedItem: BoxItem) => {\n this.updateItemInCollection(updatedItem);\n if (item.selected) {\n this.select(updatedItem, { forceSharedLink: false });\n }\n });\n };\n\n /**\n * Updates the BoxItem in the state's currentCollection\n *\n * @param {Object} item file or folder object\n * @returns {void}\n */\n updateItemInCollection = (item: BoxItem) => {\n const { currentCollection } = this.state;\n const { items = [] } = currentCollection;\n const newState = {\n currentCollection: {\n ...currentCollection,\n items: items.map(collectionItem => (collectionItem.id === item.id ? item : collectionItem)),\n },\n };\n this.setState(newState);\n };\n\n /**\n * Changes the sort by and sort direction\n *\n * @private\n * @param {string} sortBy - field to sorty by\n * @param {string} sortDirection - sort direction\n * @return {void}\n */\n sort = (sortBy: SortBy, sortDirection: SortDirection) => {\n const {\n currentCollection: { id },\n }: State = this.state;\n if (id) {\n this.setState({ sortBy, sortDirection }, this.refreshCollection);\n }\n };\n\n /**\n * Saves reference to table component\n *\n * @private\n * @param {Component} react component\n * @return {void}\n */\n tableRef = (table: React$Component<*, *>) => {\n this.table = table;\n };\n\n /**\n * Closes the modal dialogs that may be open\n *\n * @private\n * @return {void}\n */\n closeModals = (): void => {\n const { focusedRow }: State = this.state;\n\n this.setState({\n isLoading: false,\n isCreateFolderModalOpen: false,\n isUploadModalOpen: false,\n });\n\n const {\n selected,\n currentCollection: { items = [] },\n }: State = this.state;\n if (selected && items.length > 0) {\n focus(this.rootElement, `.bcp-item-row-${focusedRow}`);\n }\n };\n\n /**\n * Keyboard events\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: Props = this.props;\n const key = event.key.toLowerCase();\n\n switch (key) {\n case '/':\n focus(this.rootElement, '.be-search input[type=\"search\"]', false);\n event.preventDefault();\n break;\n case 'arrowdown':\n focus(this.rootElement, '.bcp-item-row', false);\n this.setState({ focusedRow: 0 });\n event.preventDefault();\n break;\n case 'g':\n break;\n case 'b':\n if (this.globalModifier) {\n focus(this.rootElement, '.be-breadcrumb button', false);\n event.preventDefault();\n }\n\n break;\n case 'f':\n if (this.globalModifier) {\n this.fetchFolder(rootFolderId);\n event.preventDefault();\n }\n\n break;\n case 'c':\n if (this.globalModifier) {\n this.choose();\n event.preventDefault();\n }\n\n break;\n case 'x':\n if (this.globalModifier) {\n this.cancel();\n event.preventDefault();\n }\n\n break;\n case 's':\n if (this.globalModifier) {\n this.showSelected();\n event.preventDefault();\n }\n\n break;\n case 'u':\n if (this.globalModifier) {\n this.upload();\n event.preventDefault();\n }\n\n break;\n case 'r':\n if (this.globalModifier) {\n this.showRecents();\n event.preventDefault();\n }\n\n break;\n case 'n':\n if (this.globalModifier) {\n this.createFolder();\n event.preventDefault();\n }\n\n break;\n default:\n this.globalModifier = false;\n return;\n }\n\n this.globalModifier = key === 'g';\n };\n\n /**\n * Updates the focused row based on key binder\n *\n * @private\n * @param {number} focusedRow - the row index thats focused\n * @return {void}\n */\n onFocusChange = (focusedRow: number) => {\n this.setState({ focusedRow });\n };\n\n /**\n * Handle pagination changes\n *\n * @param {number} newOffset - the new page offset value\n */\n paginate = (newOffset: number) => {\n this.setState({ currentOffset: newOffset }, this.refreshCollection);\n };\n\n /**\n * Renders the file picker\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n language,\n messages,\n rootFolderId,\n logoUrl,\n canUpload,\n canSetShareAccess,\n canCreateNewFolder,\n contentUploaderProps,\n extensions,\n maxSelectable,\n type,\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n isHeaderLogoVisible,\n isPaginationVisible,\n isSmall,\n className,\n measureRef,\n chooseButtonLabel,\n cancelButtonLabel,\n requestInterceptor,\n responseInterceptor,\n renderCustomActionButtons,\n showSelectedButton,\n }: Props = this.props;\n const {\n view,\n rootName,\n selected,\n currentCollection,\n currentPageSize,\n searchQuery,\n isCreateFolderModalOpen,\n isUploadModalOpen,\n isLoading,\n errorCode,\n focusedRow,\n }: State = this.state;\n const { id, offset, permissions, totalCount }: Collection = currentCollection;\n const { can_upload }: BoxItemPermission = permissions || {};\n const selectedCount: number = Object.keys(selected).length;\n const isSingleSelect = maxSelectable === 1;\n const hasHitSelectionLimit: boolean = selectedCount === maxSelectable && !isSingleSelect;\n const allowUpload: boolean = canUpload && !!can_upload;\n const allowCreate: boolean = canCreateNewFolder && !!can_upload;\n const styleClassName = classNames('be bcp', className);\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <div id={this.id} className={styleClassName} ref={measureRef} data-testid=\"content-picker\">\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n <Header\n view={view}\n isHeaderLogoVisible={isHeaderLogoVisible}\n isSmall={isSmall}\n searchQuery={searchQuery}\n logoUrl={logoUrl}\n onSearch={this.search}\n />\n <SubHeader\n view={view}\n rootId={rootFolderId}\n isSmall={isSmall}\n rootName={rootName}\n currentCollection={currentCollection}\n canUpload={allowUpload}\n canCreateNewFolder={allowCreate}\n onUpload={this.upload}\n onCreate={this.createFolder}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n />\n <Content\n view={view}\n isSmall={isSmall}\n rootId={rootFolderId}\n rootElement={this.rootElement}\n focusedRow={focusedRow}\n selectableType={type}\n canSetShareAccess={canSetShareAccess}\n extensionsWhitelist={extensions}\n hasHitSelectionLimit={hasHitSelectionLimit}\n currentCollection={currentCollection}\n isSingleSelect={isSingleSelect}\n tableRef={this.tableRef}\n onItemSelect={this.select}\n onItemClick={this.onItemClick}\n onFocusChange={this.onFocusChange}\n onShareAccessChange={this.changeShareAccess}\n />\n <Footer\n currentCollection={currentCollection}\n selectedCount={selectedCount}\n selectedItems={this.getSelectedItems()}\n showSelectedButton={showSelectedButton}\n hasHitSelectionLimit={hasHitSelectionLimit}\n isSingleSelect={isSingleSelect}\n onSelectedClick={this.showSelected}\n onChoose={this.choose}\n onCancel={this.cancel}\n chooseButtonLabel={chooseButtonLabel}\n cancelButtonLabel={cancelButtonLabel}\n renderCustomActionButtons={renderCustomActionButtons}\n >\n {isPaginationVisible ? (\n <OffsetBasedPagination\n offset={offset}\n onOffsetChange={this.paginate}\n pageSize={currentPageSize}\n totalCount={totalCount}\n />\n ) : null}\n </Footer>\n </div>\n {allowUpload && !!this.appElement ? (\n <UploadDialog\n isOpen={isUploadModalOpen}\n currentFolderId={id}\n token={token}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n apiHost={apiHost}\n uploadHost={uploadHost}\n onClose={this.uploadSuccessHandler}\n parentElement={this.rootElement}\n appElement={this.appElement}\n contentUploaderProps={contentUploaderProps}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n />\n ) : null}\n {allowCreate && !!this.appElement ? (\n <CreateFolderDialog\n isOpen={isCreateFolderModalOpen}\n onCreate={this.createFolderCallback}\n onCancel={this.closeModals}\n isLoading={isLoading}\n errorCode={errorCode}\n parentElement={this.rootElement}\n appElement={this.appElement}\n />\n ) : null}\n </div>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport { ContentPicker as ContentPickerComponent };\nexport default makeResponsive(ContentPicker);\n"],"file":"ContentPicker.js"}
|
package/es/styles/_reset.scss
CHANGED
package/package.json
CHANGED
package/src/constants.js
CHANGED
|
@@ -177,7 +177,7 @@ export const DELIMITER_SLASH: 'slash' = 'slash';
|
|
|
177
177
|
export const DELIMITER_CARET: 'caret' = 'caret';
|
|
178
178
|
|
|
179
179
|
/* ---------------------- Defaults -------------------------- */
|
|
180
|
-
export const DEFAULT_PREVIEW_VERSION = '2.
|
|
180
|
+
export const DEFAULT_PREVIEW_VERSION = '2.95.0';
|
|
181
181
|
export const DEFAULT_LOCALE = 'en-US';
|
|
182
182
|
export const DEFAULT_PATH_STATIC = 'platform/elements';
|
|
183
183
|
export const DEFAULT_PATH_STATIC_PREVIEW = 'platform/preview';
|
|
@@ -788,7 +788,7 @@ class ContentPicker extends Component<Props, State> {
|
|
|
788
788
|
return;
|
|
789
789
|
}
|
|
790
790
|
|
|
791
|
-
if (!name) {
|
|
791
|
+
if (!name.trim()) {
|
|
792
792
|
this.setState({
|
|
793
793
|
errorCode: ERROR_CODE_ITEM_NAME_INVALID,
|
|
794
794
|
isLoading: false,
|
|
@@ -807,7 +807,7 @@ class ContentPicker extends Component<Props, State> {
|
|
|
807
807
|
this.setState({ isLoading: true });
|
|
808
808
|
this.api.getFolderAPI().create(
|
|
809
809
|
id,
|
|
810
|
-
name,
|
|
810
|
+
name.trim(),
|
|
811
811
|
() => {
|
|
812
812
|
this.fetchFolder(id);
|
|
813
813
|
},
|