ember-sortable
Version:
Sortable UI primitives for Ember.
58 lines (56 loc) • 1.6 kB
TypeScript
import Service from '@ember/service';
import type SortableGroupModifier from '../modifiers/sortable-group';
import type SortableItemModifier from '../modifiers/sortable-item';
export interface Group<T> {
groupModifier: SortableGroupModifier<T> | undefined;
items: SortableItemModifier<T>[];
}
export default class EmberSortableService<T> extends Service {
/**
* Internal State for any groups currently in DOM
*
* {
* groupName: {
* groupModifier: object,
* items: []
* }
* }
* @type {{}}
*/
groups: Record<string, Group<T>>;
/**
* Register a new group with the service
*
* @param {String} groupName
* @param {SortableGroupModifier} groupModifier
*/
registerGroup(groupName: string, groupModifier: SortableGroupModifier<T> | undefined): void;
/**
* De-register a group with the service
*
* @param {String} groupName
*/
deregisterGroup(groupName: string): void;
/**
* Register an item with this group
*
* @method registerItem
* @param {String} groupName
* @param {SortableItemModifier} item
*/
registerItem(groupName: string, item: SortableItemModifier<T>): void;
/**
De-register an item with this group.
@method deregisterItem
@param groupName
@param item
*/
deregisterItem(groupName: string, item: SortableItemModifier<T>): void;
/**
* Fetch a group definition
*
* @param {String} groupName
* @returns {*}
*/
fetchGroup(groupName: string): Group<T>;
}