芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/.cache/admin/src/containers/Roles/ListPage/index.js
import React, { useCallback, useEffect, useState } from 'react'; import { List, Header } from '@buffetjs/custom'; import { Button } from '@buffetjs/core'; import { Duplicate, Pencil, Plus } from '@buffetjs/icons'; import matchSorter from 'match-sorter'; import { useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { ListButton, useGlobalContext, useQuery, useUserPermissions } from 'strapi-helper-plugin'; import adminPermissions from '../../../permissions'; import PageTitle from '../../../components/SettingsPageTitle'; import { EmptyRole, RoleListWrapper, RoleRow } from '../../../components/Roles'; import { useRolesList, useSettingsHeaderSearchContext } from '../../../hooks'; import UpgradePlanModal from '../../../components/UpgradePlanModal'; import BaselineAlignment from './BaselineAlignment'; const RoleListPage = () => { const { formatMessage } = useIntl(); const { push } = useHistory(); const [isOpen, setIsOpen] = useState(false); const { emitEvent, settingsBaseURL } = useGlobalContext(); const { roles, isLoading } = useRolesList(); const { toggleHeaderSearch } = useSettingsHeaderSearchContext(); const { allowedActions: { canUpdate }, } = useUserPermissions(adminPermissions.settings.roles); const query = useQuery(); const _q = decodeURIComponent(query.get('_q') || ''); const results = matchSorter(roles, _q, { keys: ['name', 'description'] }); useEffect(() => { toggleHeaderSearch({ id: 'Settings.permissions.menu.link.roles.label' }); return () => { toggleHeaderSearch(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const handleGoTo = useCallback( id => { push(`${settingsBaseURL}/roles/${id}`); }, // eslint-disable-next-line react-hooks/exhaustive-deps [settingsBaseURL] ); const handleToggle = useCallback(e => { e.preventDefault(); e.stopPropagation(); setIsOpen(prev => !prev); }, []); const handleToggleModalForCreatingRole = useCallback(e => { e.preventDefault(); e.stopPropagation(); emitEvent('didShowRBACUpgradeModal'); setIsOpen(true); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const headerActions = [ { label: formatMessage({ id: 'Settings.roles.list.button.add', defaultMessage: 'Add new role', }), onClick: handleToggleModalForCreatingRole, color: 'primary', type: 'button', icon: true, }, ]; const resultsCount = results.length; return ( <>
1 ? '.plural' : '.singular'}`, }, { number: resultsCount } )} items={results} isLoading={isLoading} customRowComponent={role => (
handleGoTo(role.id)} canUpdate={canUpdate} links={[ { icon:
, onClick: handleToggle, }, { icon: canUpdate ?
: null, onClick: () => { handleGoTo(role.id); }, }, { icon:
, onClick: handleToggle, }, ]} role={role} /> )} /> {!resultsCount && !isLoading &&
}
} label={formatMessage({ id: 'Settings.roles.list.button.add', defaultMessage: 'Add new role', })} />
> ); }; export default RoleListPage;