ngx-sortablejs-v16
Version:
34 lines • 3.93 kB
JavaScript
export class SortablejsBinding {
constructor(target) {
this.target = target;
}
insert(index, item) {
if (this.isFormArray) {
this.target.insert(index, item);
}
else {
this.target.splice(index, 0, item);
}
}
get(index) {
return this.isFormArray ? this.target.at(index) : this.target[index];
}
remove(index) {
let item;
if (this.isFormArray) {
item = this.target.at(index);
this.target.removeAt(index);
}
else {
item = this.target.splice(index, 1)[0];
}
return item;
}
// we need this to identify that the target is a FormArray
// we don't want to have a dependency on @angular/forms just for that
get isFormArray() {
// just checking for random FormArray methods not available on a standard array
return !!this.target.at && !!this.target.insert && !!this.target.reset;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGVqcy1iaW5kaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNvcnRhYmxlanMvc3JjL2xpYi9zb3J0YWJsZWpzLWJpbmRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFvQixNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO0lBQUcsQ0FBQztJQUU1QyxNQUFNLENBQUMsS0FBYSxFQUFFLElBQVM7UUFDN0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsS0FBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDO1FBRVQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0wsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxxRUFBcUU7SUFDckUsSUFBWSxXQUFXO1FBQ3JCLCtFQUErRTtRQUMvRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnRhYmxlRGF0YSB9IGZyb20gXCIuL3NvcnRhYmxlanMuZGlyZWN0aXZlXCI7XG5cbmV4cG9ydCBjbGFzcyBTb3J0YWJsZWpzQmluZGluZyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFyZ2V0OiBTb3J0YWJsZURhdGEpIHt9XG5cbiAgaW5zZXJ0KGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIGlmICh0aGlzLmlzRm9ybUFycmF5KSB7XG4gICAgICB0aGlzLnRhcmdldC5pbnNlcnQoaW5kZXgsIGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldC5zcGxpY2UoaW5kZXgsIDAsIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb3JtQXJyYXkgPyB0aGlzLnRhcmdldC5hdChpbmRleCkgOiB0aGlzLnRhcmdldFtpbmRleF07XG4gIH1cblxuICByZW1vdmUoaW5kZXg6IG51bWJlcikge1xuICAgIGxldCBpdGVtO1xuXG4gICAgaWYgKHRoaXMuaXNGb3JtQXJyYXkpIHtcbiAgICAgIGl0ZW0gPSB0aGlzLnRhcmdldC5hdChpbmRleCk7XG4gICAgICB0aGlzLnRhcmdldC5yZW1vdmVBdChpbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0gPSB0aGlzLnRhcmdldC5zcGxpY2UoaW5kZXgsIDEpWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gd2UgbmVlZCB0aGlzIHRvIGlkZW50aWZ5IHRoYXQgdGhlIHRhcmdldCBpcyBhIEZvcm1BcnJheVxuICAvLyB3ZSBkb24ndCB3YW50IHRvIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEBhbmd1bGFyL2Zvcm1zIGp1c3QgZm9yIHRoYXRcbiAgcHJpdmF0ZSBnZXQgaXNGb3JtQXJyYXkoKSB7XG4gICAgLy8ganVzdCBjaGVja2luZyBmb3IgcmFuZG9tIEZvcm1BcnJheSBtZXRob2RzIG5vdCBhdmFpbGFibGUgb24gYSBzdGFuZGFyZCBhcnJheVxuICAgIHJldHVybiAhIXRoaXMudGFyZ2V0LmF0ICYmICEhdGhpcy50YXJnZXQuaW5zZXJ0ICYmICEhdGhpcy50YXJnZXQucmVzZXQ7XG4gIH1cbn1cbiJdfQ==