\n \n \n \n \n | \n \n \n {serviceAccount.name}\n \n | \n \n \n {serviceAccount.login}\n \n | \n {contextSrv.licensedAccessControlEnabled() ? (\n \n {displayRolePicker && (\n onRoleChange(newRole, serviceAccount)}\n roleOptions={roleOptions}\n basicRoleDisabled={!canUpdateRole}\n disabled={serviceAccount.isExternal || serviceAccount.isDisabled}\n width={40}\n />\n )}\n | \n ) : (\n \n onRoleChange(newRole, serviceAccount)}\n />\n | \n )}\n \n \n \n \n \n \n {serviceAccount.tokens || 'No tokens'}\n \n \n | \n \n {!serviceAccount.isExternal && (\n \n {contextSrv.hasPermission(AccessControlAction.ServiceAccountsWrite) && !serviceAccount.tokens && (\n \n )}\n {contextSrv.hasPermissionInMetadata(AccessControlAction.ServiceAccountsWrite, serviceAccount) &&\n (serviceAccount.isDisabled ? (\n \n ) : (\n \n ))}\n {contextSrv.hasPermissionInMetadata(AccessControlAction.ServiceAccountsDelete, serviceAccount) && (\n onRemoveButtonClick(serviceAccount)}\n tooltip={`Delete service account ${serviceAccount.name}`}\n />\n )}\n \n )}\n {serviceAccount.isExternal && (\n \n \n \n )}\n | \n
\n );\n }\n);\nServiceAccountListItemComponent.displayName = 'ServiceAccountListItem';\n\nconst ServiceAccountsListItemSkeleton: SkeletonComponent = ({ rootProps }) => {\n const styles = useStyles2(getSkeletonStyles);\n\n return (\n