@klippa/ngx-enhancy-forms 18.24.0 → 18.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/elements/sortable-grouped-items/sortable-grouped-items.component.mjs +8 -6
- package/esm2022/lib/elements/sortable-items/sortable-items.component.mjs +134 -33
- package/fesm2022/klippa-ngx-enhancy-forms.mjs +135 -33
- package/fesm2022/klippa-ngx-enhancy-forms.mjs.map +1 -1
- package/lib/elements/sortable-items/sortable-items.component.d.ts +21 -12
- package/package.json +2 -4
|
@@ -3,9 +3,8 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
|
3
3
|
import { arrayIsSetAndFilled, splitArrayByCondition } from '../../util/arrays';
|
|
4
4
|
import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/
|
|
7
|
-
import * as i2 from "
|
|
8
|
-
import * as i3 from "../sortable-items/sortable-items.component";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "../sortable-items/sortable-items.component";
|
|
9
8
|
export class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
10
9
|
constructor() {
|
|
11
10
|
super(...arguments);
|
|
@@ -17,6 +16,7 @@ export class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
|
17
16
|
setTimeout(() => {
|
|
18
17
|
if (arrayIsSetAndFilled(value)) {
|
|
19
18
|
this.items = value.flatMap(e => [...e, '']);
|
|
19
|
+
console.log(this.items);
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
22
|
this.items = [];
|
|
@@ -25,6 +25,8 @@ export class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
onItemsRearranged(value) {
|
|
28
|
+
console.log('gers');
|
|
29
|
+
console.log(value);
|
|
28
30
|
const result = splitArrayByCondition(value, e => e === '').filter(arrayIsSetAndFilled);
|
|
29
31
|
this.setInnerValueAndNotify(result);
|
|
30
32
|
this.reloader = false;
|
|
@@ -42,10 +44,10 @@ export class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
|
42
44
|
});
|
|
43
45
|
}
|
|
44
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableGroupedItemsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableGroupedItemsComponent, selector: "klp-form-sortable-grouped-items", providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<ng-container
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableGroupedItemsComponent, selector: "klp-form-sortable-grouped-items", providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<ng-container>\n\t<klp-form-sortable-items\n\t\t[(ngModel)]=\"items\"\n\t\t(ngModelChange)=\"onItemsRearranged($event)\"\n\t>\n\t\t<ng-template let-item=\"item\">\n\t\t\t<div>{{item}}</div>\n\t\t</ng-template>\n\t</klp-form-sortable-items>\n</ng-container>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SortableItemsComponent, selector: "klp-form-sortable-items", inputs: ["sortableItemSize"] }] }); }
|
|
46
48
|
}
|
|
47
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableGroupedItemsComponent, decorators: [{
|
|
48
50
|
type: Component,
|
|
49
|
-
args: [{ selector: 'klp-form-sortable-grouped-items', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], template: "<ng-container
|
|
51
|
+
args: [{ selector: 'klp-form-sortable-grouped-items', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], template: "<ng-container>\n\t<klp-form-sortable-items\n\t\t[(ngModel)]=\"items\"\n\t\t(ngModelChange)=\"onItemsRearranged($event)\"\n\t>\n\t\t<ng-template let-item=\"item\">\n\t\t\t<div>{{item}}</div>\n\t\t</ng-template>\n\t</klp-form-sortable-items>\n</ng-container>\n", styles: [":host{display:block}\n"] }]
|
|
50
52
|
}] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtZ3JvdXBlZC1pdGVtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9zb3J0YWJsZS1ncm91cGVkLWl0ZW1zL3NvcnRhYmxlLWdyb3VwZWQtaXRlbXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtZ3JvdXBlZC1pdGVtcy9zb3J0YWJsZS1ncm91cGVkLWl0ZW1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFRdkYsTUFBTSxPQUFPLDZCQUFpQyxTQUFRLGlCQUFrQztJQU54Rjs7UUFRQyxhQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsaUhBQWlIO0tBbUNsSTtJQWpDQSxVQUFVLENBQUMsS0FBc0I7UUFDaEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNqQixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBd0I7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLE1BQU0sTUFBTSxHQUFvQixxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFRLENBQUM7UUFDL0csSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzFDLE9BQU8sS0FBSyxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FwQ1csNkJBQTZCO2tHQUE3Qiw2QkFBNkIsMERBRjlCLENBQUMsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLDZCQUE2QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxpRENUbkcsb1FBVUE7OzJGRENhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDQyxpQ0FBaUMsYUFHaEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLCtCQUErQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7YXJyYXlJc1NldEFuZEZpbGxlZCwgc3BsaXRBcnJheUJ5Q29uZGl0aW9ufSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5pbXBvcnQge1ZhbHVlQWNjZXNzb3JCYXNlfSBmcm9tICcuLi92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc29ydGFibGUtZ3JvdXBlZC1pdGVtcycsXG5cdHRlbXBsYXRlVXJsOiAnLi9zb3J0YWJsZS1ncm91cGVkLWl0ZW1zLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vc29ydGFibGUtZ3JvdXBlZC1pdGVtcy5jb21wb25lbnQuc2NzcyddLFxuXHRwcm92aWRlcnM6IFt7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBTb3J0YWJsZUdyb3VwZWRJdGVtc0NvbXBvbmVudCwgbXVsdGk6IHRydWV9XSxcbn0pXG5leHBvcnQgY2xhc3MgU29ydGFibGVHcm91cGVkSXRlbXNDb21wb25lbnQ8VD4gZXh0ZW5kcyBWYWx1ZUFjY2Vzc29yQmFzZTxBcnJheTxBcnJheTxUPj4+IHtcblx0cHVibGljIGl0ZW1zOiBBcnJheTxUIHwgc3RyaW5nPjtcblx0cmVsb2FkZXIgPSB0cnVlOyAvLyBzb3J0YWJsZSBpdGVtcyBkb2VzbnQgY29ycmVjdGx5IHVwZGF0ZSwgc28gd2UgaGF2ZSB0aGlzIGJvb2xlYW4gdGhhdCBmbGlwcyB0byByZXJlbmRlciB0aGUgc29ydGFibGUgaXRlbXMgY29tcFxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IEFycmF5PEFycmF5PFQ+Pik6IHZvaWQge1xuXHRcdHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuXHRcdHRoaXMucmVsb2FkZXIgPSBmYWxzZTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGlmIChhcnJheUlzU2V0QW5kRmlsbGVkKHZhbHVlKSkge1xuXHRcdFx0XHR0aGlzLml0ZW1zID0gdmFsdWUuZmxhdE1hcChlID0+IFsuLi5lLCAnJ10pO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLml0ZW1zKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuaXRlbXMgPSBbXTtcblx0XHRcdH1cblx0XHRcdHRoaXMucmVsb2FkZXIgPSB0cnVlO1xuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIG9uSXRlbXNSZWFycmFuZ2VkKHZhbHVlOiBBcnJheTxUIHwgc3RyaW5nPik6IHZvaWQge1xuXHRcdGNvbnNvbGUubG9nKCdnZXJzJyk7XG5cdFx0Y29uc29sZS5sb2codmFsdWUpO1xuXHRcdGNvbnN0IHJlc3VsdDogQXJyYXk8QXJyYXk8VD4+ID0gc3BsaXRBcnJheUJ5Q29uZGl0aW9uKHZhbHVlLCBlID0+IGUgPT09ICcnKS5maWx0ZXIoYXJyYXlJc1NldEFuZEZpbGxlZCkgYXMgYW55O1xuXHRcdHRoaXMuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeShyZXN1bHQpO1xuXHRcdHRoaXMucmVsb2FkZXIgPSBmYWxzZTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgJyddLmZpbHRlcigoZSwgaSkgPT4ge1xuXHRcdFx0XHRpZiAoaSA9PT0gMCAmJiBlID09PSAnJykge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZSA9PT0gJycgJiYgdGhpcy5pdGVtc1tpIC0gMV0gPT09ICcnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnJlbG9hZGVyID0gdHJ1ZTtcblx0XHR9KTtcblx0fVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cblx0PGtscC1mb3JtLXNvcnRhYmxlLWl0ZW1zXG5cdFx0WyhuZ01vZGVsKV09XCJpdGVtc1wiXG5cdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25JdGVtc1JlYXJyYW5nZWQoJGV2ZW50KVwiXG5cdD5cblx0XHQ8bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG5cdFx0XHQ8ZGl2Pnt7aXRlbX19PC9kaXY+XG5cdFx0PC9uZy10ZW1wbGF0ZT5cblx0PC9rbHAtZm9ybS1zb3J0YWJsZS1pdGVtcz5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,44 +1,136 @@
|
|
|
1
|
-
import { Component, ContentChild, Input, TemplateRef, } from '@angular/core';
|
|
1
|
+
import { Component, ContentChild, Host, Input, Optional, TemplateRef, ViewChildren, } from '@angular/core';
|
|
2
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
3
|
import { isValueSet } from '../../util/values';
|
|
4
4
|
import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
7
|
-
import * as i2 from "@
|
|
6
|
+
import * as i1 from "../../form/form-element/form-element.component";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
8
9
|
export class SortableItemsComponent extends ValueAccessorBase {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(
|
|
10
|
+
constructor(parent, controlContainer, ngZone) {
|
|
11
|
+
super(parent, controlContainer);
|
|
12
|
+
this.parent = parent;
|
|
13
|
+
this.controlContainer = controlContainer;
|
|
14
|
+
this.ngZone = ngZone;
|
|
11
15
|
this.sortableItemSize = 'lg';
|
|
12
|
-
this.useCustomScroll = false;
|
|
13
16
|
this.scrollInterval = null;
|
|
14
|
-
this.
|
|
15
|
-
|
|
17
|
+
this.onDragOver = (ev) => {
|
|
18
|
+
ev.preventDefault();
|
|
16
19
|
};
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
this.onDragEnter = (ev) => {
|
|
21
|
+
if (ev.clientY < 80) {
|
|
22
|
+
this.scrollPage(40);
|
|
23
|
+
}
|
|
24
|
+
else if (window.innerHeight - ev.clientY < 80) {
|
|
25
|
+
this.scrollPage(-40);
|
|
21
26
|
}
|
|
22
27
|
else {
|
|
23
28
|
this.stopScrolling();
|
|
24
29
|
}
|
|
30
|
+
ev.dataTransfer.dropEffect = 'move';
|
|
31
|
+
const targetIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === ev.target);
|
|
32
|
+
if (targetIndex === -1) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.currentDragPosition = targetIndex;
|
|
36
|
+
this.dragItems.forEach((dragItem, i) => {
|
|
37
|
+
if (this.dragSourceIndex === i) {
|
|
38
|
+
if (this.dragSourceIndex > this.currentDragPosition) {
|
|
39
|
+
const heightsAbove = this.dragItems.filter((e, i) => {
|
|
40
|
+
if (i >= this.dragSourceIndex) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return i > this.currentDragPosition - 1;
|
|
44
|
+
}).reduce((acc, cur, i) => {
|
|
45
|
+
return acc + cur.nativeElement.getBoundingClientRect().height;
|
|
46
|
+
}, 0);
|
|
47
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightsAbove}px)`;
|
|
48
|
+
}
|
|
49
|
+
else if (this.dragSourceIndex < this.currentDragPosition) {
|
|
50
|
+
const heightsAbove = this.dragItems.filter((e, i) => {
|
|
51
|
+
if (i <= this.dragSourceIndex) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return i <= this.currentDragPosition;
|
|
55
|
+
}).reduce((acc, cur, i) => {
|
|
56
|
+
return acc + cur.nativeElement.getBoundingClientRect().height;
|
|
57
|
+
}, 0);
|
|
58
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightsAbove}px)`;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${0}px)`;
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const heightOfCurrentlyDraggedItem = (this.dragItems.get(this.dragSourceIndex).nativeElement.getBoundingClientRect().height);
|
|
66
|
+
if (this.shouldShoveDown(i)) {
|
|
67
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightOfCurrentlyDraggedItem}px)`;
|
|
68
|
+
}
|
|
69
|
+
else if (this.shouldShoveUp(i)) {
|
|
70
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightOfCurrentlyDraggedItem}px)`;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
this.currentDragPosition = targetIndex;
|
|
25
77
|
};
|
|
26
|
-
this.
|
|
78
|
+
this.onDragStart = (ev) => {
|
|
79
|
+
ev.dataTransfer.effectAllowed = 'move';
|
|
80
|
+
this.ngZone.run(() => {
|
|
81
|
+
this.dragSourceIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === ev.target);
|
|
82
|
+
this.currentDragPosition = this.dragSourceIndex;
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
this.onDragEnd = (ev) => {
|
|
27
86
|
this.stopScrolling();
|
|
87
|
+
const movedElement = this.innerValue[this.dragSourceIndex];
|
|
88
|
+
const isMovedToLastPlace = this.currentDragPosition === this.innerValue.length - 1;
|
|
89
|
+
this.ngZone.run(() => {
|
|
90
|
+
this.innerValue = this.innerValue
|
|
91
|
+
.filter((e, i) => i !== this.dragSourceIndex)
|
|
92
|
+
.reduce((acc, cur, i) => {
|
|
93
|
+
if (i === this.currentDragPosition) {
|
|
94
|
+
return [...acc, movedElement, cur];
|
|
95
|
+
}
|
|
96
|
+
return [...acc, cur];
|
|
97
|
+
}, []);
|
|
98
|
+
if (isMovedToLastPlace) {
|
|
99
|
+
this.innerValue = [...this.innerValue, movedElement];
|
|
100
|
+
}
|
|
101
|
+
this.dragItems.forEach((dragItem, i) => {
|
|
102
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;
|
|
103
|
+
});
|
|
104
|
+
this.currentDragPosition = -1;
|
|
105
|
+
this.dragSourceIndex = -1;
|
|
106
|
+
this.setInnerValueAndNotify(this.innerValue);
|
|
107
|
+
});
|
|
28
108
|
};
|
|
29
109
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
110
|
+
ngAfterViewInit() {
|
|
111
|
+
this.dragItems.changes.subscribe(() => {
|
|
112
|
+
this.dragItems.forEach(e => {
|
|
113
|
+
this.ngZone.runOutsideAngular(() => {
|
|
114
|
+
e.nativeElement.removeEventListener('dragstart', this.onDragStart);
|
|
115
|
+
e.nativeElement.removeEventListener('dragover', this.onDragOver);
|
|
116
|
+
e.nativeElement.removeEventListener('dragenter', this.onDragEnter);
|
|
117
|
+
e.nativeElement.removeEventListener('dragend', this.onDragEnd);
|
|
118
|
+
e.nativeElement.addEventListener('dragstart', this.onDragStart);
|
|
119
|
+
e.nativeElement.addEventListener('dragover', this.onDragOver);
|
|
120
|
+
e.nativeElement.addEventListener('dragenter', this.onDragEnter);
|
|
121
|
+
e.nativeElement.addEventListener('dragend', this.onDragEnd);
|
|
122
|
+
this.dragItems.forEach((dragItem, i) => {
|
|
123
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
shouldShoveDown(index) {
|
|
130
|
+
return this.dragSourceIndex > index && this.currentDragPosition <= index;
|
|
131
|
+
}
|
|
132
|
+
shouldShoveUp(index) {
|
|
133
|
+
return this.dragSourceIndex < index && this.currentDragPosition >= index;
|
|
42
134
|
}
|
|
43
135
|
scrollPage(scrollAmount) {
|
|
44
136
|
if (!isValueSet(this.scrollInterval)) {
|
|
@@ -57,14 +149,14 @@ export class SortableItemsComponent extends ValueAccessorBase {
|
|
|
57
149
|
clearInterval(this.scrollInterval);
|
|
58
150
|
this.scrollInterval = null;
|
|
59
151
|
}
|
|
60
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableItemsComponent, deps:
|
|
61
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableItemsComponent, selector: "klp-form-sortable-items", inputs: { sortableItemSize: "sortableItemSize"
|
|
152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableItemsComponent, deps: [{ token: i1.FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableItemsComponent, selector: "klp-form-sortable-items", inputs: { sortableItemSize: "sortableItemSize" }, providers: [
|
|
62
154
|
{
|
|
63
155
|
provide: NG_VALUE_ACCESSOR,
|
|
64
156
|
useExisting: SortableItemsComponent,
|
|
65
157
|
multi: true,
|
|
66
158
|
},
|
|
67
|
-
], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'
|
|
159
|
+
], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "dragItems", predicate: ["dragItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[draggable]=\"!disabled\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm',\n\t\t \t}\"\n\t\t\t#dragItem\n\t>\n\t\t<div class=\"visual\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t\t</div>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\tclass=\"itemsContainer\"\n\t\t[ngClass]=\"{dragInProgress: dragSourceIndex >= 0}\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n", styles: [":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;padding:0;margin-bottom:0}.dragInProgress .visual{pointer-events:none;transition:transform .1s linear}.sortableItem{list-style:none;cursor:grab}.sortableItem .visual{border-top:1px solid #e6ecf5}.sortableItem .visual:hover{background:#f8f9fa}.largeSortableItem .visual{padding:15px}.smallSortableItem .visual{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
68
160
|
}
|
|
69
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableItemsComponent, decorators: [{
|
|
70
162
|
type: Component,
|
|
@@ -74,13 +166,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
74
166
|
useExisting: SortableItemsComponent,
|
|
75
167
|
multi: true,
|
|
76
168
|
},
|
|
77
|
-
], template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'
|
|
78
|
-
}],
|
|
169
|
+
], template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[draggable]=\"!disabled\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm',\n\t\t \t}\"\n\t\t\t#dragItem\n\t>\n\t\t<div class=\"visual\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t\t</div>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\tclass=\"itemsContainer\"\n\t\t[ngClass]=\"{dragInProgress: dragSourceIndex >= 0}\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n", styles: [":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;padding:0;margin-bottom:0}.dragInProgress .visual{pointer-events:none;transition:transform .1s linear}.sortableItem{list-style:none;cursor:grab}.sortableItem .visual{border-top:1px solid #e6ecf5}.sortableItem .visual:hover{background:#f8f9fa}.largeSortableItem .visual{padding:15px}.smallSortableItem .visual{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}\n"] }]
|
|
170
|
+
}], ctorParameters: () => [{ type: i1.FormElementComponent, decorators: [{
|
|
171
|
+
type: Host
|
|
172
|
+
}, {
|
|
173
|
+
type: Optional
|
|
174
|
+
}] }, { type: i2.ControlContainer, decorators: [{
|
|
175
|
+
type: Host
|
|
176
|
+
}, {
|
|
177
|
+
type: Optional
|
|
178
|
+
}] }, { type: i0.NgZone }], propDecorators: { template: [{
|
|
79
179
|
type: ContentChild,
|
|
80
180
|
args: [TemplateRef]
|
|
81
181
|
}], sortableItemSize: [{
|
|
82
182
|
type: Input
|
|
83
|
-
}],
|
|
84
|
-
type:
|
|
183
|
+
}], dragItems: [{
|
|
184
|
+
type: ViewChildren,
|
|
185
|
+
args: ['dragItem']
|
|
85
186
|
}] } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtaXRlbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtaXRlbXMvc29ydGFibGUtaXRlbXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtaXRlbXMvc29ydGFibGUtaXRlbXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLFdBQVcsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFjekYsTUFBTSxPQUFPLHNCQUNaLFNBQVEsaUJBQTZCO0lBYnRDOztRQWlCVSxxQkFBZ0IsR0FBZ0IsSUFBSSxDQUFDO1FBQ3JDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3pCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBZTlCLHNCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztRQUVGLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLG9FQUFvRTtZQUNwRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNGLENBQUMsQ0FBQztRQUVGLFVBQUssR0FBRyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDO0tBb0JGO0lBaERBLFFBQVE7UUFDUCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHO2dCQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDakIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQy9ELENBQUM7SUFDRixDQUFDO0lBbUJPLFVBQVUsQ0FBQyxZQUFvQjtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDYixHQUFHLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxZQUFZO29CQUN2RCxRQUFRLEVBQUUsUUFBUTtpQkFDbEIsQ0FBQyxDQUFDO2dCQUNILElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN0QixDQUFDO1lBQ0YsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztJQUNGLENBQUM7SUFFTyxhQUFhO1FBQ3BCLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzs4R0ExRFcsc0JBQXNCO2tHQUF0QixzQkFBc0Isd0lBUnZCO1lBQ1Y7Z0JBQ0MsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHNCQUFzQjtnQkFDbkMsS0FBSyxFQUFFLElBQUk7YUFDWDtTQUNELGdFQU1hLFdBQVcsdUVDNUIxQixzdkJBdUJBOzsyRkRDYSxzQkFBc0I7a0JBWmxDLFNBQVM7K0JBQ0MseUJBQXlCLGFBR3hCO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDWDtxQkFDRDs4QkFNMEIsUUFBUTtzQkFBbEMsWUFBWTt1QkFBQyxXQUFXO2dCQUNoQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHRJbnB1dCxcblx0T25Jbml0LFxuXHRUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdzb3J0YWJsZWpzJztcbmltcG9ydCB7IGlzVmFsdWVTZXQgfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQgeyBWYWx1ZUFjY2Vzc29yQmFzZSB9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1zb3J0YWJsZS1pdGVtcycsXG5cdHRlbXBsYXRlVXJsOiAnLi9zb3J0YWJsZS1pdGVtcy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3NvcnRhYmxlLWl0ZW1zLmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuXHRcdFx0dXNlRXhpc3Rpbmc6IFNvcnRhYmxlSXRlbXNDb21wb25lbnQsXG5cdFx0XHRtdWx0aTogdHJ1ZSxcblx0XHR9LFxuXHRdLFxufSlcbmV4cG9ydCBjbGFzcyBTb3J0YWJsZUl0ZW1zQ29tcG9uZW50XG5cdGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8QXJyYXk8YW55Pj5cblx0aW1wbGVtZW50cyBPbkluaXRcbntcblx0QENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGU7XG5cdEBJbnB1dCgpIHNvcnRhYmxlSXRlbVNpemU6ICdzbScgfCAnbGcnID0gJ2xnJztcblx0QElucHV0KCkgdXNlQ3VzdG9tU2Nyb2xsID0gZmFsc2U7XG5cblx0cHVibGljIHNvcnRhYmxlanNPcHRpb25zOiBPcHRpb25zO1xuXHRwcml2YXRlIHNjcm9sbEludGVydmFsID0gbnVsbDtcblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xuXHRcdGlmICh0aGlzLnVzZUN1c3RvbVNjcm9sbCkge1xuXHRcdFx0dGhpcy5zb3J0YWJsZWpzT3B0aW9ucyA9IHtcblx0XHRcdFx0b25VcGRhdGU6IHRoaXMuaXRlbXNPcmRlckNoYW5nZWQsXG5cdFx0XHRcdG9uTW92ZTogdGhpcy5vbkl0ZW1EcmFnLFxuXHRcdFx0XHRvbkVuZDogdGhpcy5vbkVuZCxcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc29ydGFibGVqc09wdGlvbnMgPSB7IG9uVXBkYXRlOiB0aGlzLml0ZW1zT3JkZXJDaGFuZ2VkIH07XG5cdFx0fVxuXHR9XG5cblx0aXRlbXNPcmRlckNoYW5nZWQgPSAoKSA9PiB7XG5cdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KHRoaXMuaW5uZXJWYWx1ZSk7XG5cdH07XG5cblx0b25JdGVtRHJhZyA9IChkYXRhKSA9PiB7XG5cdFx0Ly8gaWYgdGhlIGl0ZW0geW91J3JlIGRyYWdnaW5nIGlzIHJlYWNoaW5nIHRoZSB0b3AsIHN0YXJ0IHNjcm9sbGluZy5cblx0XHRpZiAoZGF0YS5yZWxhdGVkUmVjdC50b3AgPCAxMDApIHtcblx0XHRcdHRoaXMuc2Nyb2xsUGFnZSgxMDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblx0XHR9XG5cdH07XG5cblx0b25FbmQgPSAoKSA9PiB7XG5cdFx0dGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG5cdH07XG5cblx0cHJpdmF0ZSBzY3JvbGxQYWdlKHNjcm9sbEFtb3VudDogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKCFpc1ZhbHVlU2V0KHRoaXMuc2Nyb2xsSW50ZXJ2YWwpKSB7XG5cdFx0XHR0aGlzLnNjcm9sbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHR3aW5kb3cuc2Nyb2xsKHtcblx0XHRcdFx0XHR0b3A6IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIC0gc2Nyb2xsQW1vdW50LFxuXHRcdFx0XHRcdGJlaGF2aW9yOiAnc21vb3RoJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA8PSAxMDApIHtcblx0XHRcdFx0XHR0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0b3BTY3JvbGxpbmcoKTogdm9pZCB7XG5cdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnNjcm9sbEludGVydmFsKTtcblx0XHR0aGlzLnNjcm9sbEludGVydmFsID0gbnVsbDtcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNsaXN0SXRlbT5cblx0PGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlubmVyVmFsdWU7IGluZGV4IGFzIGluZGV4XCJcblx0XHRcdGNsYXNzPVwic29ydGFibGVJdGVtXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdGxhcmdlU29ydGFibGVJdGVtOiBzb3J0YWJsZUl0ZW1TaXplID09PSAnbGcnLFxuXHRcdCBcdHNtYWxsU29ydGFibGVJdGVtOiBzb3J0YWJsZUl0ZW1TaXplID09PSAnc20nXG5cdFx0IH1cIlxuXHQ+XG5cdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0sIGluZGV4OmluZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cblx0PC9saT5cbjwvbmctdGVtcGxhdGU+XG5cbjxvbCAqbmdJZj0nIWRpc2FibGVkJ1xuXHRcdFtzb3J0YWJsZWpzXT1cImlubmVyVmFsdWVcIlxuXHRcdFtzb3J0YWJsZWpzT3B0aW9uc109XCJzb3J0YWJsZWpzT3B0aW9uc1wiXG5cdFx0Y2xhc3M9XCJpdGVtc0NvbnRhaW5lclwiXG4+XG5cdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0SXRlbVwiPjwvbmctY29udGFpbmVyPlxuPC9vbD5cblxuPG9sICpuZ0lmPSdkaXNhYmxlZCcgY2xhc3M9XCJpdGVtc0NvbnRhaW5lciBkaXNhYmxlZC1tb3VzZS1jdXJzb3JcIj5cblx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RJdGVtXCI+PC9uZy1jb250YWluZXI+XG48L29sPlxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtaXRlbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtaXRlbXMvc29ydGFibGUtaXRlbXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvc29ydGFibGUtaXRlbXMvc29ydGFibGUtaXRlbXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBRVosSUFBSSxFQUNKLEtBQUssRUFHTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFlBQVksR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDOzs7OztBQWV2RixNQUFNLE9BQU8sc0JBQ1osU0FBUSxpQkFBNkI7SUFZckMsWUFDK0IsTUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ3hELE1BQWM7UUFFdEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBSkYsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN4RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWGQscUJBQWdCLEdBQWdCLElBQUksQ0FBQztRQU10QyxtQkFBYyxHQUFHLElBQUksQ0FBQztRQWlDdEIsZUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDM0IsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFD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LEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDYixHQUFHLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxZQUFZO29CQUN2RCxRQUFRLEVBQUUsUUFBUTtpQkFDbEIsQ0FBQyxDQUFDO2dCQUNILElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN0QixDQUFDO1lBQ0YsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsQ0FBQztJQUNGLENBQUM7SUFFTyxhQUFhO1FBQ3BCLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzs4R0F6S1csc0JBQXNCO2tHQUF0QixzQkFBc0Isb0dBUnZCO1lBQ1Y7Z0JBQ0MsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHNCQUFzQjtnQkFDbkMsS0FBSyxFQUFFLElBQUk7YUFDWDtTQUNELGdFQU1hLFdBQVcsaUtDbkMxQiwrekJBMEJBOzsyRkRLYSxzQkFBc0I7a0JBWmxDLFNBQVM7K0JBQ0MseUJBQXlCLGFBR3hCO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDWDtxQkFDRDs7MEJBZ0JDLElBQUk7OzBCQUFJLFFBQVE7OzBCQUNoQixJQUFJOzswQkFBSSxRQUFROzhEQVhTLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVztnQkFDaEIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVvQixTQUFTO3NCQUFsQyxZQUFZO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlclZpZXdJbml0LFxuXHRDb21wb25lbnQsXG5cdENvbnRlbnRDaGlsZCxcblx0RWxlbWVudFJlZixcblx0SG9zdCxcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0T25Jbml0LFxuXHRPcHRpb25hbCxcblx0UXVlcnlMaXN0LFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7aXNWYWx1ZVNldH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc29ydGFibGUtaXRlbXMnLFxuXHR0ZW1wbGF0ZVVybDogJy4vc29ydGFibGUtaXRlbXMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9zb3J0YWJsZS1pdGVtcy5jb21wb25lbnQuc2NzcyddLFxuXHRwcm92aWRlcnM6IFtcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcblx0XHRcdHVzZUV4aXN0aW5nOiBTb3J0YWJsZUl0ZW1zQ29tcG9uZW50LFxuXHRcdFx0bXVsdGk6IHRydWUsXG5cdFx0fSxcblx0XSxcbn0pXG5leHBvcnQgY2xhc3MgU29ydGFibGVJdGVtc0NvbXBvbmVudFxuXHRleHRlbmRzIFZhbHVlQWNjZXNzb3JCYXNlPEFycmF5PGFueT4+XG5cdGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0XG57XG5cdEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRASW5wdXQoKSBzb3J0YWJsZUl0ZW1TaXplOiAnc20nIHwgJ2xnJyA9ICdsZyc7XG5cblx0QFZpZXdDaGlsZHJlbignZHJhZ0l0ZW0nKSBkcmFnSXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblx0cHVibGljIGRyYWdTb3VyY2VJbmRleDogbnVtYmVyO1xuXHRwcml2YXRlIGN1cnJlbnREcmFnUG9zaXRpb246IG51bWJlcjtcblxuXHRwcml2YXRlIHNjcm9sbEludGVydmFsID0gbnVsbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50LFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG5cdFx0cHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSlcblx0e1xuXHRcdHN1cGVyKHBhcmVudCwgY29udHJvbENvbnRhaW5lcik7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5kcmFnSXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5kcmFnSXRlbXMuZm9yRWFjaChlID0+IHtcblx0XHRcdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0XHRcdGUubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCB0aGlzLm9uRHJhZ1N0YXJ0KTtcblx0XHRcdFx0XHRlLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLm9uRHJhZ092ZXIpO1xuXHRcdFx0XHRcdGUubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLm9uRHJhZ0VudGVyKTtcblx0XHRcdFx0XHRlLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIHRoaXMub25EcmFnRW5kKTtcblxuXHRcdFx0XHRcdGUubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCB0aGlzLm9uRHJhZ1N0YXJ0KTtcblx0XHRcdFx0XHRlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCB0aGlzLm9uRHJhZ092ZXIpO1xuXHRcdFx0XHRcdGUubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCB0aGlzLm9uRHJhZ0VudGVyKTtcblx0XHRcdFx0XHRlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIHRoaXMub25EcmFnRW5kKTtcblxuXHRcdFx0XHRcdHRoaXMuZHJhZ0l0ZW1zLmZvckVhY2goKGRyYWdJdGVtLCBpKSA9PiB7XG5cdFx0XHRcdFx0XHRkcmFnSXRlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy52aXN1YWwnKS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgwJSlgO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG9uRHJhZ092ZXIgPSAoZXYpID0+IHtcblx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHR9XG5cblx0cHJpdmF0ZSBvbkRyYWdFbnRlciA9IChldikgPT4ge1xuXHRcdGlmIChldi5jbGllbnRZIDwgODApIHtcblx0XHRcdHRoaXMuc2Nyb2xsUGFnZSg0MCk7XG5cdFx0fSBlbHNlIGlmICh3aW5kb3cuaW5uZXJIZWlnaHQgLSBldi5jbGllbnRZIDwgODApIHtcblx0XHRcdHRoaXMuc2Nyb2xsUGFnZSgtNDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblx0XHR9XG5cdFx0ZXYuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG5cdFx0Y29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLmRyYWdJdGVtcy5tYXAoZSA9PiBlLm5hdGl2ZUVsZW1lbnQpLmZpbmRJbmRleChlID0+IGUgPT09IChldi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKTtcblx0XHRpZiAodGFyZ2V0SW5kZXggPT09IC0xKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuY3VycmVudERyYWdQb3NpdGlvbiA9IHRhcmdldEluZGV4O1xuXHRcdHRoaXMuZHJhZ0l0ZW1zLmZvckVhY2goKGRyYWdJdGVtLCBpKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5kcmFnU291cmNlSW5kZXggPT09IGkpIHtcblxuXHRcdFx0XHRpZiAodGhpcy5kcmFnU291cmNlSW5kZXggPiB0aGlzLmN1cnJlbnREcmFnUG9zaXRpb24pIHtcblx0XHRcdFx0XHRjb25zdCBoZWlnaHRzQWJvdmUgPSB0aGlzLmRyYWdJdGVtcy5maWx0ZXIoKGUsIGkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChpID49IHRoaXMuZHJhZ1NvdXJjZUluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiBpID4gdGhpcy5jdXJyZW50RHJhZ1Bvc2l0aW9uIC0gMTtcblx0XHRcdFx0XHR9KS5yZWR1Y2UoKGFjYywgY3VyLCBpKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYWNjICsgY3VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHRcdGRyYWdJdGVtLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnZpc3VhbCcpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7LWhlaWdodHNBYm92ZX1weClgO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5kcmFnU291cmNlSW5kZXggPCB0aGlzLmN1cnJlbnREcmFnUG9zaXRpb24pIHtcblx0XHRcdFx0XHRjb25zdCBoZWlnaHRzQWJvdmUgPSB0aGlzLmRyYWdJdGVtcy5maWx0ZXIoKGUsIGkpID0+IHtcblx0XHRcdFx0XHRcdGlmIChpIDw9IHRoaXMuZHJhZ1NvdXJjZUluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJldHVybiBpIDw9IHRoaXMuY3VycmVudERyYWdQb3NpdGlvbjtcblx0XHRcdFx0XHR9KS5yZWR1Y2UoKGFjYywgY3VyLCBpKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gYWNjICsgY3VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHRcdGRyYWdJdGVtLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnZpc3VhbCcpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7aGVpZ2h0c0Fib3ZlfXB4KWA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRkcmFnSXRlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy52aXN1YWwnKS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgkezB9cHgpYDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgaGVpZ2h0T2ZDdXJyZW50bHlEcmFnZ2VkSXRlbSA9ICh0aGlzLmRyYWdJdGVtcy5nZXQodGhpcy5kcmFnU291cmNlSW5kZXgpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcblx0XHRcdGlmICh0aGlzLnNob3VsZFNob3ZlRG93bihpKSkge1xuXHRcdFx0XHRkcmFnSXRlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy52aXN1YWwnKS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke2hlaWdodE9mQ3VycmVudGx5RHJhZ2dlZEl0ZW19cHgpYDtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHRoaXMuc2hvdWxkU2hvdmVVcChpKSkge1xuXHRcdFx0XHRkcmFnSXRlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy52aXN1YWwnKS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgkey1oZWlnaHRPZkN1cnJlbnRseURyYWdnZWRJdGVtfXB4KWA7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0ZHJhZ0l0ZW0ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudmlzdWFsJykuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoMCUpYDtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuY3VycmVudERyYWdQb3NpdGlvbiA9IHRhcmdldEluZGV4O1xuXHR9XG5cblx0cHJpdmF0ZSBvbkRyYWdTdGFydCA9IChldikgPT4ge1xuXHRcdGV2LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnO1xuXHRcdHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG5cdFx0XHR0aGlzLmRyYWdTb3VyY2VJbmRleCA9IHRoaXMuZHJhZ0l0ZW1zLm1hcChlID0+IGUubmF0aXZlRWxlbWVudCkuZmluZEluZGV4KGUgPT4gZSA9PT0gZXYudGFyZ2V0KTtcblx0XHRcdHRoaXMuY3VycmVudERyYWdQb3NpdGlvbiA9IHRoaXMuZHJhZ1NvdXJjZUluZGV4O1xuXHRcdH0pO1xuXHR9O1xuXG5cdHByaXZhdGUgb25EcmFnRW5kID0gKGV2KSA9PiB7XG5cdFx0dGhpcy5zdG9wU2Nyb2xsaW5nKCk7XG5cdFx0Y29uc3QgbW92ZWRFbGVtZW50ID0gdGhpcy5pbm5lclZhbHVlW3RoaXMuZHJhZ1NvdXJjZUluZGV4XTtcblx0XHRjb25zdCBpc01vdmVkVG9MYXN0UGxhY2UgPSB0aGlzLmN1cnJlbnREcmFnUG9zaXRpb24gPT09IHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggLSAxO1xuXHRcdHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG5cdFx0XHR0aGlzLmlubmVyVmFsdWUgPSB0aGlzLmlubmVyVmFsdWVcblx0XHRcdC5maWx0ZXIoKGUsIGkpID0+IGkgIT09IHRoaXMuZHJhZ1NvdXJjZUluZGV4KVxuXHRcdFx0LnJlZHVjZSgoYWNjLCBjdXIsIGkpID0+IHtcblx0XHRcdFx0aWYgKGkgPT09IHRoaXMuY3VycmVudERyYWdQb3NpdGlvbikge1xuXHRcdFx0XHRcdHJldHVybiBbLi4uYWNjLCBtb3ZlZEVsZW1lbnQsIGN1cl07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFsuLi5hY2MsIGN1cl07XG5cdFx0XHR9LCBbXSk7XG5cdFx0XHRpZiAoaXNNb3ZlZFRvTGFzdFBsYWNlKSB7XG5cdFx0XHRcdHRoaXMuaW5uZXJWYWx1ZSA9IFsuLi50aGlzLmlubmVyVmFsdWUsIG1vdmVkRWxlbWVudF07XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmRyYWdJdGVtcy5mb3JFYWNoKChkcmFnSXRlbSwgaSkgPT4ge1xuXHRcdFx0XHRkcmFnSXRlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy52aXN1YWwnKS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgwJSlgO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmN1cnJlbnREcmFnUG9zaXRpb24gPSAtMTtcblx0XHRcdHRoaXMuZHJhZ1NvdXJjZUluZGV4ID0gLTE7XG5cdFx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkodGhpcy5pbm5lclZhbHVlKTtcblx0XHR9KTtcblx0fVxuXG5cdHNob3VsZFNob3ZlRG93bihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZHJhZ1NvdXJjZUluZGV4ID4gaW5kZXggJiYgdGhpcy5jdXJyZW50RHJhZ1Bvc2l0aW9uIDw9IGluZGV4O1xuXHR9XG5cblx0c2hvdWxkU2hvdmVVcChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZHJhZ1NvdXJjZUluZGV4IDwgaW5kZXggJiYgdGhpcy5jdXJyZW50RHJhZ1Bvc2l0aW9uID49IGluZGV4O1xuXHR9XG5cblx0cHJpdmF0ZSBzY3JvbGxQYWdlKHNjcm9sbEFtb3VudDogbnVtYmVyKTogdm9pZCB7XG5cdFx0aWYgKCFpc1ZhbHVlU2V0KHRoaXMuc2Nyb2xsSW50ZXJ2YWwpKSB7XG5cdFx0XHR0aGlzLnNjcm9sbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHR3aW5kb3cuc2Nyb2xsKHtcblx0XHRcdFx0XHR0b3A6IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wIC0gc2Nyb2xsQW1vdW50LFxuXHRcdFx0XHRcdGJlaGF2aW9yOiAnc21vb3RoJyxcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCA8PSAxMDApIHtcblx0XHRcdFx0XHR0aGlzLnN0b3BTY3JvbGxpbmcoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHN0b3BTY3JvbGxpbmcoKTogdm9pZCB7XG5cdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLnNjcm9sbEludGVydmFsKTtcblx0XHR0aGlzLnNjcm9sbEludGVydmFsID0gbnVsbDtcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNsaXN0SXRlbT5cblx0PGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlubmVyVmFsdWU7IGluZGV4IGFzIGluZGV4XCJcblx0XHRcdGNsYXNzPVwic29ydGFibGVJdGVtXCJcblx0XHRcdFtkcmFnZ2FibGVdPVwiIWRpc2FibGVkXCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdGxhcmdlU29ydGFibGVJdGVtOiBzb3J0YWJsZUl0ZW1TaXplID09PSAnbGcnLFxuXHRcdCBcdHNtYWxsU29ydGFibGVJdGVtOiBzb3J0YWJsZUl0ZW1TaXplID09PSAnc20nLFxuXHRcdCBcdH1cIlxuXHRcdFx0I2RyYWdJdGVtXG5cdD5cblx0XHQ8ZGl2IGNsYXNzPVwidmlzdWFsXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSwgaW5kZXg6aW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuXHRcdDwvZGl2PlxuXHQ8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG9sICpuZ0lmPSchZGlzYWJsZWQnXG5cdFx0Y2xhc3M9XCJpdGVtc0NvbnRhaW5lclwiXG5cdFx0W25nQ2xhc3NdPVwie2RyYWdJblByb2dyZXNzOiBkcmFnU291cmNlSW5kZXggPj0gMH1cIlxuPlxuXHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdEl0ZW1cIj48L25nLWNvbnRhaW5lcj5cbjwvb2w+XG5cbjxvbCAqbmdJZj0nZGlzYWJsZWQnIGNsYXNzPVwiaXRlbXNDb250YWluZXIgZGlzYWJsZWQtbW91c2UtY3Vyc29yXCI+XG5cdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0SXRlbVwiPjwvbmctY29udGFpbmVyPlxuPC9vbD5cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Input, EventEmitter, Component, SkipSelf, Optional, Output, InjectionToken, TemplateRef, Inject, ViewChild, ContentChild, Host, HostBinding, inject, NgModule } from '@angular/core';
|
|
2
|
+
import { Directive, Input, EventEmitter, Component, SkipSelf, Optional, Output, InjectionToken, TemplateRef, Inject, ViewChild, ContentChild, Host, HostBinding, ViewChildren, inject, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i2 from '@angular/forms';
|
|
@@ -8,7 +8,6 @@ import { isString } from 'lodash-es';
|
|
|
8
8
|
import { isArray } from 'lodash';
|
|
9
9
|
import * as i4 from '@ng-select/ng-select';
|
|
10
10
|
import { NgSelectModule } from '@ng-select/ng-select';
|
|
11
|
-
import * as i2$1 from '@dustfoundation/ngx-sortablejs';
|
|
12
11
|
import { SortablejsModule } from '@dustfoundation/ngx-sortablejs';
|
|
13
12
|
import { isSameDay, format, startOfMonth, endOfMonth, parse } from 'date-fns';
|
|
14
13
|
import * as i3 from '@angular/material/core';
|
|
@@ -1500,39 +1499,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
1500
1499
|
}] } });
|
|
1501
1500
|
|
|
1502
1501
|
class SortableItemsComponent extends ValueAccessorBase {
|
|
1503
|
-
constructor() {
|
|
1504
|
-
super(
|
|
1502
|
+
constructor(parent, controlContainer, ngZone) {
|
|
1503
|
+
super(parent, controlContainer);
|
|
1504
|
+
this.parent = parent;
|
|
1505
|
+
this.controlContainer = controlContainer;
|
|
1506
|
+
this.ngZone = ngZone;
|
|
1505
1507
|
this.sortableItemSize = 'lg';
|
|
1506
|
-
this.useCustomScroll = false;
|
|
1507
1508
|
this.scrollInterval = null;
|
|
1508
|
-
this.
|
|
1509
|
-
|
|
1509
|
+
this.onDragOver = (ev) => {
|
|
1510
|
+
ev.preventDefault();
|
|
1510
1511
|
};
|
|
1511
|
-
this.
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1512
|
+
this.onDragEnter = (ev) => {
|
|
1513
|
+
if (ev.clientY < 80) {
|
|
1514
|
+
this.scrollPage(40);
|
|
1515
|
+
}
|
|
1516
|
+
else if (window.innerHeight - ev.clientY < 80) {
|
|
1517
|
+
this.scrollPage(-40);
|
|
1515
1518
|
}
|
|
1516
1519
|
else {
|
|
1517
1520
|
this.stopScrolling();
|
|
1518
1521
|
}
|
|
1522
|
+
ev.dataTransfer.dropEffect = 'move';
|
|
1523
|
+
const targetIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === ev.target);
|
|
1524
|
+
if (targetIndex === -1) {
|
|
1525
|
+
return;
|
|
1526
|
+
}
|
|
1527
|
+
this.currentDragPosition = targetIndex;
|
|
1528
|
+
this.dragItems.forEach((dragItem, i) => {
|
|
1529
|
+
if (this.dragSourceIndex === i) {
|
|
1530
|
+
if (this.dragSourceIndex > this.currentDragPosition) {
|
|
1531
|
+
const heightsAbove = this.dragItems.filter((e, i) => {
|
|
1532
|
+
if (i >= this.dragSourceIndex) {
|
|
1533
|
+
return false;
|
|
1534
|
+
}
|
|
1535
|
+
return i > this.currentDragPosition - 1;
|
|
1536
|
+
}).reduce((acc, cur, i) => {
|
|
1537
|
+
return acc + cur.nativeElement.getBoundingClientRect().height;
|
|
1538
|
+
}, 0);
|
|
1539
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightsAbove}px)`;
|
|
1540
|
+
}
|
|
1541
|
+
else if (this.dragSourceIndex < this.currentDragPosition) {
|
|
1542
|
+
const heightsAbove = this.dragItems.filter((e, i) => {
|
|
1543
|
+
if (i <= this.dragSourceIndex) {
|
|
1544
|
+
return false;
|
|
1545
|
+
}
|
|
1546
|
+
return i <= this.currentDragPosition;
|
|
1547
|
+
}).reduce((acc, cur, i) => {
|
|
1548
|
+
return acc + cur.nativeElement.getBoundingClientRect().height;
|
|
1549
|
+
}, 0);
|
|
1550
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightsAbove}px)`;
|
|
1551
|
+
}
|
|
1552
|
+
else {
|
|
1553
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${0}px)`;
|
|
1554
|
+
}
|
|
1555
|
+
return;
|
|
1556
|
+
}
|
|
1557
|
+
const heightOfCurrentlyDraggedItem = (this.dragItems.get(this.dragSourceIndex).nativeElement.getBoundingClientRect().height);
|
|
1558
|
+
if (this.shouldShoveDown(i)) {
|
|
1559
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightOfCurrentlyDraggedItem}px)`;
|
|
1560
|
+
}
|
|
1561
|
+
else if (this.shouldShoveUp(i)) {
|
|
1562
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightOfCurrentlyDraggedItem}px)`;
|
|
1563
|
+
}
|
|
1564
|
+
else {
|
|
1565
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;
|
|
1566
|
+
}
|
|
1567
|
+
});
|
|
1568
|
+
this.currentDragPosition = targetIndex;
|
|
1569
|
+
};
|
|
1570
|
+
this.onDragStart = (ev) => {
|
|
1571
|
+
ev.dataTransfer.effectAllowed = 'move';
|
|
1572
|
+
this.ngZone.run(() => {
|
|
1573
|
+
this.dragSourceIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === ev.target);
|
|
1574
|
+
this.currentDragPosition = this.dragSourceIndex;
|
|
1575
|
+
});
|
|
1519
1576
|
};
|
|
1520
|
-
this.
|
|
1577
|
+
this.onDragEnd = (ev) => {
|
|
1521
1578
|
this.stopScrolling();
|
|
1579
|
+
const movedElement = this.innerValue[this.dragSourceIndex];
|
|
1580
|
+
const isMovedToLastPlace = this.currentDragPosition === this.innerValue.length - 1;
|
|
1581
|
+
this.ngZone.run(() => {
|
|
1582
|
+
this.innerValue = this.innerValue
|
|
1583
|
+
.filter((e, i) => i !== this.dragSourceIndex)
|
|
1584
|
+
.reduce((acc, cur, i) => {
|
|
1585
|
+
if (i === this.currentDragPosition) {
|
|
1586
|
+
return [...acc, movedElement, cur];
|
|
1587
|
+
}
|
|
1588
|
+
return [...acc, cur];
|
|
1589
|
+
}, []);
|
|
1590
|
+
if (isMovedToLastPlace) {
|
|
1591
|
+
this.innerValue = [...this.innerValue, movedElement];
|
|
1592
|
+
}
|
|
1593
|
+
this.dragItems.forEach((dragItem, i) => {
|
|
1594
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;
|
|
1595
|
+
});
|
|
1596
|
+
this.currentDragPosition = -1;
|
|
1597
|
+
this.dragSourceIndex = -1;
|
|
1598
|
+
this.setInnerValueAndNotify(this.innerValue);
|
|
1599
|
+
});
|
|
1522
1600
|
};
|
|
1523
1601
|
}
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1602
|
+
ngAfterViewInit() {
|
|
1603
|
+
this.dragItems.changes.subscribe(() => {
|
|
1604
|
+
this.dragItems.forEach(e => {
|
|
1605
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1606
|
+
e.nativeElement.removeEventListener('dragstart', this.onDragStart);
|
|
1607
|
+
e.nativeElement.removeEventListener('dragover', this.onDragOver);
|
|
1608
|
+
e.nativeElement.removeEventListener('dragenter', this.onDragEnter);
|
|
1609
|
+
e.nativeElement.removeEventListener('dragend', this.onDragEnd);
|
|
1610
|
+
e.nativeElement.addEventListener('dragstart', this.onDragStart);
|
|
1611
|
+
e.nativeElement.addEventListener('dragover', this.onDragOver);
|
|
1612
|
+
e.nativeElement.addEventListener('dragenter', this.onDragEnter);
|
|
1613
|
+
e.nativeElement.addEventListener('dragend', this.onDragEnd);
|
|
1614
|
+
this.dragItems.forEach((dragItem, i) => {
|
|
1615
|
+
dragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;
|
|
1616
|
+
});
|
|
1617
|
+
});
|
|
1618
|
+
});
|
|
1619
|
+
});
|
|
1620
|
+
}
|
|
1621
|
+
shouldShoveDown(index) {
|
|
1622
|
+
return this.dragSourceIndex > index && this.currentDragPosition <= index;
|
|
1623
|
+
}
|
|
1624
|
+
shouldShoveUp(index) {
|
|
1625
|
+
return this.dragSourceIndex < index && this.currentDragPosition >= index;
|
|
1536
1626
|
}
|
|
1537
1627
|
scrollPage(scrollAmount) {
|
|
1538
1628
|
if (!isValueSet(this.scrollInterval)) {
|
|
@@ -1551,14 +1641,14 @@ class SortableItemsComponent extends ValueAccessorBase {
|
|
|
1551
1641
|
clearInterval(this.scrollInterval);
|
|
1552
1642
|
this.scrollInterval = null;
|
|
1553
1643
|
}
|
|
1554
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableItemsComponent, deps:
|
|
1555
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableItemsComponent, selector: "klp-form-sortable-items", inputs: { sortableItemSize: "sortableItemSize"
|
|
1644
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableItemsComponent, deps: [{ token: FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1645
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableItemsComponent, selector: "klp-form-sortable-items", inputs: { sortableItemSize: "sortableItemSize" }, providers: [
|
|
1556
1646
|
{
|
|
1557
1647
|
provide: NG_VALUE_ACCESSOR,
|
|
1558
1648
|
useExisting: SortableItemsComponent,
|
|
1559
1649
|
multi: true,
|
|
1560
1650
|
},
|
|
1561
|
-
], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'
|
|
1651
|
+
], queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "dragItems", predicate: ["dragItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[draggable]=\"!disabled\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm',\n\t\t \t}\"\n\t\t\t#dragItem\n\t>\n\t\t<div class=\"visual\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t\t</div>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\tclass=\"itemsContainer\"\n\t\t[ngClass]=\"{dragInProgress: dragSourceIndex >= 0}\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n", styles: [":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;padding:0;margin-bottom:0}.dragInProgress .visual{pointer-events:none;transition:transform .1s linear}.sortableItem{list-style:none;cursor:grab}.sortableItem .visual{border-top:1px solid #e6ecf5}.sortableItem .visual:hover{background:#f8f9fa}.largeSortableItem .visual{padding:15px}.smallSortableItem .visual{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
1562
1652
|
}
|
|
1563
1653
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableItemsComponent, decorators: [{
|
|
1564
1654
|
type: Component,
|
|
@@ -1568,14 +1658,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
1568
1658
|
useExisting: SortableItemsComponent,
|
|
1569
1659
|
multi: true,
|
|
1570
1660
|
},
|
|
1571
|
-
], template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm'
|
|
1572
|
-
}],
|
|
1661
|
+
], template: "<ng-template #listItem>\n\t<li *ngFor=\"let item of innerValue; index as index\"\n\t\t\tclass=\"sortableItem\"\n\t\t\t[draggable]=\"!disabled\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm',\n\t\t \t}\"\n\t\t\t#dragItem\n\t>\n\t\t<div class=\"visual\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n\t\t</div>\n\t</li>\n</ng-template>\n\n<ol *ngIf='!disabled'\n\t\tclass=\"itemsContainer\"\n\t\t[ngClass]=\"{dragInProgress: dragSourceIndex >= 0}\"\n>\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n\n<ol *ngIf='disabled' class=\"itemsContainer disabled-mouse-cursor\">\n\t<ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n</ol>\n", styles: [":host{display:block}.itemsContainer{border:1px solid #e6ecf5;border-radius:5px;padding:0;margin-bottom:0}.dragInProgress .visual{pointer-events:none;transition:transform .1s linear}.sortableItem{list-style:none;cursor:grab}.sortableItem .visual{border-top:1px solid #e6ecf5}.sortableItem .visual:hover{background:#f8f9fa}.largeSortableItem .visual{padding:15px}.smallSortableItem .visual{padding:0 10px}.disabled-mouse-cursor li{cursor:no-drop}\n"] }]
|
|
1662
|
+
}], ctorParameters: () => [{ type: FormElementComponent, decorators: [{
|
|
1663
|
+
type: Host
|
|
1664
|
+
}, {
|
|
1665
|
+
type: Optional
|
|
1666
|
+
}] }, { type: i2.ControlContainer, decorators: [{
|
|
1667
|
+
type: Host
|
|
1668
|
+
}, {
|
|
1669
|
+
type: Optional
|
|
1670
|
+
}] }, { type: i0.NgZone }], propDecorators: { template: [{
|
|
1573
1671
|
type: ContentChild,
|
|
1574
1672
|
args: [TemplateRef]
|
|
1575
1673
|
}], sortableItemSize: [{
|
|
1576
1674
|
type: Input
|
|
1577
|
-
}],
|
|
1578
|
-
type:
|
|
1675
|
+
}], dragItems: [{
|
|
1676
|
+
type: ViewChildren,
|
|
1677
|
+
args: ['dragItem']
|
|
1579
1678
|
}] } });
|
|
1580
1679
|
|
|
1581
1680
|
class TextInputComponent extends ValueAccessorBase {
|
|
@@ -2383,6 +2482,7 @@ class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
|
2383
2482
|
setTimeout(() => {
|
|
2384
2483
|
if (arrayIsSetAndFilled(value)) {
|
|
2385
2484
|
this.items = value.flatMap(e => [...e, '']);
|
|
2485
|
+
console.log(this.items);
|
|
2386
2486
|
}
|
|
2387
2487
|
else {
|
|
2388
2488
|
this.items = [];
|
|
@@ -2391,6 +2491,8 @@ class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
|
2391
2491
|
});
|
|
2392
2492
|
}
|
|
2393
2493
|
onItemsRearranged(value) {
|
|
2494
|
+
console.log('gers');
|
|
2495
|
+
console.log(value);
|
|
2394
2496
|
const result = splitArrayByCondition(value, e => e === '').filter(arrayIsSetAndFilled);
|
|
2395
2497
|
this.setInnerValueAndNotify(result);
|
|
2396
2498
|
this.reloader = false;
|
|
@@ -2408,11 +2510,11 @@ class SortableGroupedItemsComponent extends ValueAccessorBase {
|
|
|
2408
2510
|
});
|
|
2409
2511
|
}
|
|
2410
2512
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableGroupedItemsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2411
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableGroupedItemsComponent, selector: "klp-form-sortable-grouped-items", providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<ng-container
|
|
2513
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: SortableGroupedItemsComponent, selector: "klp-form-sortable-grouped-items", providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<ng-container>\n\t<klp-form-sortable-items\n\t\t[(ngModel)]=\"items\"\n\t\t(ngModelChange)=\"onItemsRearranged($event)\"\n\t>\n\t\t<ng-template let-item=\"item\">\n\t\t\t<div>{{item}}</div>\n\t\t</ng-template>\n\t</klp-form-sortable-items>\n</ng-container>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SortableItemsComponent, selector: "klp-form-sortable-items", inputs: ["sortableItemSize"] }] }); }
|
|
2412
2514
|
}
|
|
2413
2515
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortableGroupedItemsComponent, decorators: [{
|
|
2414
2516
|
type: Component,
|
|
2415
|
-
args: [{ selector: 'klp-form-sortable-grouped-items', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], template: "<ng-container
|
|
2517
|
+
args: [{ selector: 'klp-form-sortable-grouped-items', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }], template: "<ng-container>\n\t<klp-form-sortable-items\n\t\t[(ngModel)]=\"items\"\n\t\t(ngModelChange)=\"onItemsRearranged($event)\"\n\t>\n\t\t<ng-template let-item=\"item\">\n\t\t\t<div>{{item}}</div>\n\t\t</ng-template>\n\t</klp-form-sortable-items>\n</ng-container>\n", styles: [":host{display:block}\n"] }]
|
|
2416
2518
|
}] });
|
|
2417
2519
|
|
|
2418
2520
|
const invalidTimeKey = '--invalid_time--';
|