import React, { PureComponent } from 'react'; import { Tooltip } from '@grafana/ui'; import { SlideDown } from 'app/core/components/Animations/SlideDown'; import { StoreState, FolderInfo } from 'app/types'; import { DashboardAcl, PermissionLevel, NewDashboardAclItem } from 'app/types/acl'; import { getDashboardPermissions, addDashboardPermission, removeDashboardPermission, updateDashboardPermission, } from '../../state/actions'; import PermissionList from 'app/core/components/PermissionList/PermissionList'; import AddPermission from 'app/core/components/PermissionList/AddPermission'; import PermissionsInfo from 'app/core/components/PermissionList/PermissionsInfo'; import { connectWithStore } from 'app/core/utils/connectWithReduxStore'; export interface Props { dashboardId: number; folder?: FolderInfo; permissions: DashboardAcl[]; getDashboardPermissions: typeof getDashboardPermissions; updateDashboardPermission: typeof updateDashboardPermission; removeDashboardPermission: typeof removeDashboardPermission; addDashboardPermission: typeof addDashboardPermission; } export interface State { isAdding: boolean; } export class DashboardPermissions extends PureComponent { constructor(props) { super(props); this.state = { isAdding: false, }; } componentDidMount() { this.props.getDashboardPermissions(this.props.dashboardId); } onOpenAddPermissions = () => { this.setState({ isAdding: true }); }; onRemoveItem = (item: DashboardAcl) => { this.props.removeDashboardPermission(this.props.dashboardId, item); }; onPermissionChanged = (item: DashboardAcl, level: PermissionLevel) => { this.props.updateDashboardPermission(this.props.dashboardId, item, level); }; onAddPermission = (newItem: NewDashboardAclItem) => { return this.props.addDashboardPermission(this.props.dashboardId, newItem); }; onCancelAddPermission = () => { this.setState({ isAdding: false }); }; render() { const { permissions, folder } = this.props; const { isAdding } = this.state; return (

Permissions

}>
); } } const mapStateToProps = (state: StoreState) => ({ permissions: state.dashboard.permissions, }); const mapDispatchToProps = { getDashboardPermissions, addDashboardPermission, removeDashboardPermission, updateDashboardPermission, }; export default connectWithStore(DashboardPermissions, mapStateToProps, mapDispatchToProps);