8000 Merge pull request #180 from keldoc/master · SortableJS/ngx-sortablejs@5765eda · GitHub
[go: up one dir, main page]

Skip to content

Commit 5765eda

Browse files
authored
Merge pull request #180 from keldoc/master
Replace default index with draggable indexes
2 parents 368ba2b + 01b2af0 commit 5765eda

File tree

3 files changed

+28
-52
lines changed

3 files changed

+28
-52
lines changed
Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,3 @@
1-
export interface SortablejsOptions {
2-
group?: string | {
3-
name?: string;
4-
pull?: boolean | 'clone' | Function;
5-
put?: boolean | string[] | Function;
6-
revertClone?: boolean;
7-
};
8-
sort?: boolean;
9-
delay?: number;
10-
touchStartThreshold?: number;
11-
disabled?: boolean;
12-
store?: {
13-
get: (sortable: any) => any[];
14-
set: (sortable: any) => any;
15-
};
16-
animation?: number;
17-
handle?: string;
18-
fi 10000 lter?: any;
19-
draggable?: string;
20-
ghostClass?: string;
21-
chosenClass?: string;
22-
dataIdAttr?: string;
23-
swapThreshold?: number;
24-
invertSwap?: boolean;
25-
invertedSwapThreshold?: number;
26-
direction?: string;
27-
forceFallback?: boolean;
28-
fallbackClass?: string;
29-
fallbackOnBody?: boolean;
30-
scroll?: boolean | HTMLElement;
31-
scrollSensitivity?: number;
32-
scrollSpeed?: number;
33-
preventOnFilter?: boolean;
34-
dragClass?: string;
35-
fallbackTolerance?: number;
36-
setData?: (dataTransfer: any, draggedElement: any) => any;
37-
onStart?: (event: any) => any;
38-
onEnd?: (event: any) => any;
39-
onAdd?: (event: any) => any;
40-
onAddOriginal?: (event: any) => any;
41-
onUpdate?: (event: any) => any;
42-
onSort?: (event: any) => any;
43-
onRemove?: (event: any) => any;
44-
onFilter?: (event: any) => any;
45-
onMove?: (event: any) => boolean;
46-
scrollFn?: (offsetX: any, offsetY: any, originalEvent: any) => any;
47-
onChoose?: (event: any) => any;
48-
onUnchoose?: (event: any) => any;
49-
onClone?: (event: any) => any;
50-
}
1+
import { Options } from 'sortablejs';
2+
3+
export type SortablejsOptions = Options;

projects/ngx-sortablejs/src/lib/sortablejs.directive.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@ import { SortablejsBindings } from './sortablejs-bindings';
66
import { SortablejsOptions } from './sortablejs-options';
77
import { SortablejsService } from './sortablejs.service';
88

9+
const getIndexesFromEvent = (event: SortableEvent) => {
10+
if (event.hasOwnProperty('newDraggableIndex') && event.hasOwnProperty('oldDraggableIndex')) {
11+
return {
12+
new: event.newDraggableIndex,
13+
old: event.oldDraggableIndex,
14+
};
15+
} else {
16+
return {
17+
new: event.newIndex,
18+
old: event.oldIndex,
19+
};
20+
}
21+
};
22+
923
@Directive({
1024
selector: '[sortablejs]',
1125
})
@@ -154,13 +168,21 @@ export class SortablejsDirective implements OnInit, OnChanges, OnDestroy {
154168
},
155169
onUpdate: (event: SortableEvent) => {
156170
const bindings = this.getBindings();
171+
const indexes = getIndexesFromEvent(event);
157172

158-
bindings.injectIntoEvery(event.newIndex, bindings.extractFromEvery(event.oldIndex));
173+
bindings.injectIntoEvery(indexes.new, bindings.extractFromEvery(indexes.old));
159174
this.proxyEvent('onUpdate', event);
160175
},
161176
};
162177
}
163178

164179
}
165180

166-
interface SortableEvent { oldIndex: number; newIndex: number; item: HTMLElement; clone: HTMLElement; }
181+
interface SortableEvent {
182+
oldIndex: number;
183+
newIndex: number;
184+
oldDraggableIndex?: number;
185+
newDraggableIndex?: number;
186+
item: HTMLElement;
187+
clone: HTMLElement;
188+
}

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"moduleResolution": "node",
1010
"emitDecoratorMetadata": true,
1111
"experimentalDecorators": true,
12+
"allowSyntheticDefaultImports": true,
1213
"importHelpers": true,
1314
"target": "es2015",
1415
"typeRoots": [

0 commit comments

Comments
 (0)
0