Change record status: 
Project: 
Introduced in branch: 
8.x
Description: 

Certain entity types, like user roles, filter formats, taxonomy vocabularies, and languages, all have a need for a specific ordering.
To make that easier, a specific subclass of EntityListController was added, \Drupal\Core\Config\Entity\DraggableListController.

In order for the controller to work properly, the entity type must have an weight entity key set in their entity type annotation.

To use the draggable list controller, a subclass needs to be created and specified in the entity type annotation. That subclass needs to implement getFormId() and very likely override buildHeader() and buildRow().

<?php
/**
* Provides a listing of user roles.
*/
class RoleListController extends DraggableListController {
  public function
getFormID() {
    return
'user_admin_roles_form';
  }
  public function
buildHeader() {
   
$header['label'] = t('Name');
    return
$header + parent::buildHeader();
  }
  public function
buildRow(EntityInterface $entity) {
   
$row['label'] = $this->getLabel($entity);
    return
$row + parent::buildRow($entity);
  }
}
?>
Impacts: 
Module developers
Updates Done (doc team, etc.)
Online documentation: 
Not done
Theming guide: 
Not done
Module developer documentation: 
Not done
Examples project: 
Not done
Coder Review: 
Not done
Coder Upgrade: 
Not done
Other: 
Other updates done