forked from DefinitelyTyped/DefinitelyTyped
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sortablejs.d.ts
208 lines (183 loc) · 6.67 KB
/
sortablejs.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
// Type definitions for Sortable.js v1.3.0-rc1
// Project: https://github.com/RubaXa/Sortable
// Definitions by: Maw-Fox <http://github.com/Maw-Fox>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
declare namespace Sortablejs {
interface SortableOptions {
group?: any;
sort?: boolean;
delay?: number;
disabled?: boolean;
store?: {
get: (sortable: Sortable) => any[];
set: (sortable: Sortable) => any;
};
animation?: number;
handle?: string;
filter?: any;
draggable?: string;
ghostClass?: string;
chosenClass?: string;
dataIdAttr?: string;
forceFallback?: boolean;
fallbackClass?: string;
fallbackOnBody?: boolean;
scroll?: boolean;
scrollSensitivity?: number;
scrollSpeed?: number;
setData?: (dataTransfer: any, draggedElement: any) => any;
onStart?: (event: any) => any;
onEnd?: (event: any) => any;
onAdd?: (event: any) => any;
onUpdate?: (event: any) => any;
onSort?: (event: any) => any;
onRemove?: (event: any) => any;
onFilter?: (event: any) => any;
onMove?: (event: any) => boolean;
}
interface SortableUtils {
/**
* Attach an event handler function
* @param {HTMLElement} element an HTMLElement.
* @param {string} event an Event context.
* @param {Function} fn
*/
on(element: any, event: string, fn: (event: any) => any): void;
/**
* Remove an event handler function
* @param {HTMLElement} element an HTMLElement.
* @param {string} event an Event context.
* @param {Function} fn a callback.
*/
off(element: any, event: string, fn: (event: any) => any): void;
/**
* Get the values of all the CSS properties.
* @param {HTMLElement} element an HTMLElement.
* @returns {Object}
*/
css(element: any): any;
/**
* Get the value of style properties.
* @param {HTMLElement} element an HTMLElement.
* @param {string} prop a property key.
* @returns {*}
*/
css(element: any, prop: string): any;
/**
* Set one CSS property.
* @param {HTMLElement} element an HTMLElement.
* @param {string} prop a property key.
* @param {string} value a property value.
*/
css(element: any, prop: string, value: string): void;
/**
* Set CSS properties.
* @param {HTMLElement} element an HTMLElement.
* @param {Object} props a properties object.
*/
css(element: any, props: any): void;
/**
* Get elements by tag name.
* @param {HTMLElement} context an HTMLElement.
* @param {string} tagName A tag name.
* @param {function} [iterator] An iterator.
* @returns {HTMLElement[]}
*/
find(context: any, tagName: string, iterator?: (value: any) => any): any[];
/**
* Takes a function and returns a new one that will always have a particular context.
* @param {*} context an HTMLElement.
* @param {function} fn a function.
* @returns {function}
*/
bind(context: any, fn: () => any): () => any;
/**
* Check the current matched set of elements against a selector.
* @param {HTMLElement} element an HTMLElement.
* @param {string} selector an element selector.
* @returns {boolean}
*/
is(element: any, selector: string): boolean;
/**
* For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
* @param {HTMLElement} element an HTMLElement.
* @param {string} selector an element seletor.
* @param {HTMLElement} [context] a specific element's context.
* @returns {HTMLElement}
*/
closest(element: any, selector: string, context?: any): any;
/**
* Add or remove one classes from each element
* @param {HTMLElement} element an HTMLElement.
* @param {string} name a class name.
* @param {boolean} state a class's state.
*/
toggleClass(element: any, name: string, state: boolean): void;
}
class DOMRect {
public bottom: number;
public height: number;
public left: number;
public right: number;
public top: number;
public width: number;
public x: number;
public y: number;
}
class Sortable {
public options: SortableOptions;
public el: any;
/**
* Sortable's main constructor.
* @param {HTMLElement} element Any variety of HTMLElement.
* @param {SortableOptions} options Sortable options object.
*/
constructor(element: any, options: SortableOptions);
static active: Sortable;
static utils: SortableUtils;
/**
* Creation of new instances.
* @param {HTMLElement} element Any variety of HTMLElement.
* @param {SortableOptions} options Sortable options object.
* @returns {Sortable}
*/
static create(element: any, options: SortableOptions): Sortable;
/**
* Options getter/setter
* @param {string} name a SortableOptions property.
* @param {*} [value] a Value.
* @returns {*}
*/
option(name: string, value: any): any;
option(name: string): any;
/**
* For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
* @param {string|HTMLElement} element an HTMLElement or selector string.
* @returns {HTMLElement}
*/
closest(element: any): any;
/**
* Sorts the elements according to the array.
* @param {string[]} order an array of strings to sort.
*/
sort(order: string[]): void;
/**
* Saving and restoring of the sort.
*/
save(): void;
/**
* Removes the sortable functionality completely.
*/
destroy(): void;
/**
* Serializes the sortable's item data-id's (dataIdAttr option) into an array of string.
* @returns {string[]}
*/
toArray(): string[];
}
}
import Sortable = Sortablejs.Sortable;
declare module 'Sortable' {
import Sortable = Sortablejs.Sortable;
export = Sortable;
}