Skip to content

Commit e75d9be

Browse files
committed
fix(reorder): several reorder lists in the same view
1 parent 9bbe485 commit e75d9be

File tree

7 files changed

+50
-27
lines changed

7 files changed

+50
-27
lines changed

src/components/item/item-reorder-gesture.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ export class ItemReorderGesture {
129129
}
130130

131131
private itemForCoord(coord: PointerCoordinates): HTMLElement {
132-
return itemForPosition(this.offset.x - 100, coord.y);
132+
return itemForPosition(this.offset.x - 100, coord.y, this.reorderList.getNativeElement());
133133
}
134134

135135
private scroll(posY: number): number {
@@ -152,7 +152,7 @@ export class ItemReorderGesture {
152152
}
153153
}
154154

155-
function itemForPosition(x: number, y: number): HTMLElement {
155+
function itemForPosition(x: number, y: number, list: any): HTMLElement {
156156
let element = <HTMLElement>document.elementFromPoint(x, y);
157-
return findReorderItem(element);
157+
return findReorderItem(element, list);
158158
}

src/components/item/item-reorder.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,12 @@ export class ItemReorder {
200200
* @private
201201
*/
202202
reorderPrepare() {
203-
let children: any = this._element.children;
203+
let ele = this._element;
204+
let children: any = ele.children;
204205
for (let i = 0, ilen = children.length; i < ilen; i++) {
205-
children[i].$ionIndex = i;
206+
var child = children[i];
207+
child.$ionIndex = i;
208+
child.$ionReorderList = ele;
206209
}
207210
}
208211

@@ -315,25 +318,28 @@ export class ItemReorder {
315318
})
316319
export class Reorder {
317320
constructor(
318-
@Inject(forwardRef(() => Item)) private item: Item,
321+
@Inject(forwardRef(() => Item)) private item: ItemReorder,
319322
private elementRef: ElementRef) {
320323
elementRef.nativeElement['$ionComponent'] = this;
321324
}
322325

323-
getReorderNode() {
326+
getReorderNode(): HTMLElement {
324327
let node = <any>this.item.getNativeElement();
325-
return findReorderItem(node);
328+
return findReorderItem(node, null);
326329
}
327330

328331
}
329332

330333
/**
331334
* @private
332335
*/
333-
export function findReorderItem(node: any): HTMLElement {
336+
export function findReorderItem(node: any, listNode: any): HTMLElement {
334337
let nested = 0;
335338
while (node && nested < 4) {
336-
if (indexForItem(node) !== undefined ) {
339+
if (indexForItem(node) !== undefined) {
340+
if (listNode && node.parentNode !== listNode) {
341+
return null;
342+
}
337343
return node;
338344
}
339345
node = node.parentNode;
@@ -349,3 +355,10 @@ export function indexForItem(element: any): number {
349355
return element['$ionIndex'];
350356
}
351357

358+
/**
359+
* @private
360+
*/
361+
export function reorderListForItem(element: any): any {
362+
return element['$ionReorderList'];
363+
}
364+

src/components/item/item.md.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ $item-md-sliding-content-background: $list-md-background-color !default;
3636
color: $list-md-text-color;
3737
background-color: $list-md-background-color;
3838
box-shadow: none;
39-
transition: background-color 300ms cubic-bezier(.4, 0, .2, 1), transform 300ms;
39+
transition: background-color 300ms cubic-bezier(.4, 0, .2, 1);
4040
}
4141

4242
.item-md.activated {

src/components/item/test/reorder/app-module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ export class E2EPage {
1010
isReordering: boolean = false;
1111

1212
constructor(private d: ChangeDetectorRef) {
13-
let nu = 30;
13+
let nu = 9;
1414
for (let i = 0; i < nu; i++) {
1515
this.items.push(i);
1616
}
1717
}
1818

19+
clickedButton(num: number) {
20+
console.log('clicked', num);
21+
}
22+
1923
toggle() {
2024
this.isReordering = !this.isReordering;
2125
}

src/components/item/test/reorder/main.html

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,25 @@
1212
<ion-content>
1313

1414
<ion-list [reorder]="isReordering" (ionItemReorder)="reorder($event)">
15-
<ion-item *ngFor="let item of items"
15+
<button ion-item *ngFor="let item of items" (click)="clickedButton(item)"
1616
[style.background]="'rgb('+(255-item*4)+','+(255-item*4)+','+(255-item*4)+')'"
1717
[style.min-height]="item*2+35+'px'">
1818
{{item}}
19-
</ion-item>
19+
</button>
20+
</ion-list>
21+
22+
<ion-list [reorder]="isReordering" (ionItemReorder)="reorder($event)">
23+
<ion-item-sliding *ngFor="let item of items">
24+
<button ion-item (click)="clickedButton(item)">
25+
Sliding item {{item}}
26+
</button>
27+
<ion-item-options side="right" icon-left>
28+
<button ion-button color='danger'>
29+
<ion-icon name="trash"></ion-icon>
30+
Remove
31+
</button>
32+
</ion-item-options>
33+
</ion-item-sliding>
2034
</ion-list>
2135

2236
</ion-content>

src/components/menu/menu.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -288,21 +288,16 @@ export class Menu {
288288
*/
289289
@Output() ionClose: EventEmitter<boolean> = new EventEmitter<boolean>();
290290

291-
/** @private */
292-
_menuCtrl: MenuController;
293-
294291
constructor(
295-
_menuCtrl: MenuController,
292+
public _menuCtrl: MenuController,
296293
private _elementRef: ElementRef,
297294
private _config: Config,
298295
private _platform: Platform,
299296
private _renderer: Renderer,
300297
private _keyboard: Keyboard,
301298
private _zone: NgZone,
302299
public gestureCtrl: GestureController
303-
) {
304-
this._menuCtrl = _menuCtrl;
305-
}
300+
) {}
306301

307302
/**
308303
* @private

src/config/config.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -233,12 +233,9 @@ export class Config {
233233
// or it was from the users platform configs
234234
// or it was from the default platform configs
235235
// in that order
236-
let rtnVal: any;
237-
if (isFunction(this._c[key])) {
238-
rtnVal = this._c[key](this.platform);
239-
240-
} else {
241-
rtnVal = this._c[key];
236+
let rtnVal: any = this._c[key];
237+
if (isFunction(rtnVal)) {
238+
rtnVal = rtnVal(this.platform);
242239
}
243240

244241
return (rtnVal !== null ? rtnVal : fallbackValue);

0 commit comments

Comments
 (0)