Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@import 'color-palette';
@import 'mixins';

.draggable-list .draggable-item {
cursor: move;
Expand All @@ -9,3 +9,21 @@
cursor: not-allowed;
}
}

.draggable-list.cdk-drop-list-dragging .draggable-item:not(.cdk-drag-placeholder) {
Comment thread
palbizu marked this conversation as resolved.
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
Comment thread
palbizu marked this conversation as resolved.
}

.cdk-drag-placeholder {
opacity: 0;
}

.cdk-drag-animating {
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}

.cdk-drag-preview {
box-sizing: border-box;
border-radius: 4px;
box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,28 @@ import {
Output,
QueryList
} from '@angular/core';
import { queryListAndChanges$ } from '@hypertrace/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { DraggableItemComponent } from './draggable-item/draggable-item.component';

@Component({
selector: 'ht-draggable-list',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['./draggable-list.component.scss'],
template: `
<div cdkDropList class="draggable-list" (cdkDropListDropped)="this.dropList($event)">
<div
class="draggable-list"
*ngIf="this.draggableItems$ | async as draggableItems"
cdkDropList
(cdkDropListDropped)="this.dropList($event, draggableItems)"
>
<div
*ngFor="let draggableItem of this.draggableItems"
cdkDrag
*ngFor="let draggableItem of draggableItems"
class="draggable-item"
[ngClass]="{ disabled: disabled || draggableItem.disabled }"
[cdkDragDisabled]="disabled || draggableItem.disabled"
[ngClass]="{ disabled: this.disabled || draggableItem.disabled }"
[cdkDragDisabled]="this.disabled || draggableItem.disabled"
cdkDrag
>
<ng-container *ngTemplateOutlet="draggableItem.content"></ng-container>
</div>
Expand All @@ -39,14 +47,19 @@ export class DraggableListComponent<T> implements AfterContentInit {
@ContentChildren(DraggableItemComponent)
public draggableItemsRef!: QueryList<DraggableItemComponent<T>>;

public draggableItems: DraggableItemComponent<T>[] = [];
public draggableItems$!: Observable<DraggableItemComponent<T>[]>;

public ngAfterContentInit(): void {
this.draggableItems = this.draggableItemsRef.toArray();
this.draggableItems$ = queryListAndChanges$(this.draggableItemsRef).pipe(
map(draggableItems => draggableItems.toArray())
);
}

public dropList(event: CdkDragDrop<DraggableItemComponent<unknown>[]>): void {
moveItemInArray(this.draggableItems, event.previousIndex, event.currentIndex);
this.draggableListChange.emit(this.draggableItems.map(dragabbleItem => dragabbleItem.data!));
public dropList(
event: CdkDragDrop<DraggableItemComponent<unknown>[]>,
draggableItems: DraggableItemComponent<T>[]
): void {
moveItemInArray(draggableItems, event.previousIndex, event.currentIndex);
this.draggableListChange.emit(draggableItems.map(dragabbleItem => dragabbleItem.data!));
}
}