// @flow import React, { Component } from 'react'; import classNames from 'classnames'; import { FormattedMessage } from 'react-intl'; import DropdownMenu, { MenuToggle } from '../../components/dropdown-menu'; import PlainButton from '../../components/plain-button'; import { Menu, SelectMenuItem } from '../../components/menu'; import type { permissionLevelType } from './flowTypes'; import { CAN_VIEW_DOWNLOAD, CAN_VIEW_ONLY } from './constants'; import messages from './messages'; type Props = { allowedPermissionLevels: Array, canChangePermissionLevel: boolean, changePermissionLevel: ( newPermissionLevel: permissionLevelType, ) => Promise<{ permissionLevel: permissionLevelType }>, permissionLevel?: permissionLevelType, submitting: boolean, trackingProps: { onChangeSharedLinkPermissionLevel?: Function, sharedLinkPermissionsMenuButtonProps?: Object, }, }; class SharedLinkPermissionMenu extends Component { static defaultProps = { trackingProps: {}, }; onChangePermissionLevel = (newPermissionLevel: permissionLevelType) => { const { changePermissionLevel, permissionLevel, trackingProps } = this.props; const { onChangeSharedLinkPermissionLevel } = trackingProps; if (permissionLevel !== newPermissionLevel) { changePermissionLevel(newPermissionLevel); if (onChangeSharedLinkPermissionLevel) { onChangeSharedLinkPermissionLevel(newPermissionLevel); } } }; render() { const { allowedPermissionLevels, permissionLevel, submitting, trackingProps } = this.props; const { sharedLinkPermissionsMenuButtonProps } = trackingProps; if (!permissionLevel) { return null; } const permissionLevels = { [CAN_VIEW_DOWNLOAD]: { label: , description: , }, [CAN_VIEW_ONLY]: { label: , description: , }, }; return ( {permissionLevels[permissionLevel].label} {allowedPermissionLevels.map(level => ( this.onChangePermissionLevel(level)} >
{permissionLevels[level].label} {permissionLevels[level].description}
))}
); } } export default SharedLinkPermissionMenu;