@seniorsistemas/angular-components 17.2.20 → 17.3.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/bundles/seniorsistemas-angular-components.umd.js +444 -5
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/kanban/components/kanban-column/kanban-column.component.d.ts +16 -0
- package/components/kanban/components/kanban-item/kanban-item.component.d.ts +13 -0
- package/components/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +3 -0
- package/components/kanban/index.d.ts +4 -0
- package/components/kanban/kanban-event.service.d.ts +12 -0
- package/components/kanban/kanban.component.d.ts +41 -0
- package/components/kanban/kanban.module.d.ts +2 -0
- package/components/kanban/models/index.d.ts +2 -0
- package/components/kanban/models/kanban-data.d.ts +20 -0
- package/components/kanban/models/kanban-template-types.d.ts +7 -0
- package/components/kanban/template.directive.d.ts +6 -0
- package/components/slide-panel/slide-panel.component.d.ts +1 -0
- package/esm2015/components/kanban/components/kanban-column/kanban-column.component.js +82 -0
- package/esm2015/components/kanban/components/kanban-item/kanban-item.component.js +44 -0
- package/esm2015/components/kanban/components/kanban-item-dragging/kanban-item-dragging.component.js +19 -0
- package/esm2015/components/kanban/index.js +5 -0
- package/esm2015/components/kanban/kanban-event.service.js +27 -0
- package/esm2015/components/kanban/kanban.component.js +209 -0
- package/esm2015/components/kanban/kanban.module.js +45 -0
- package/esm2015/components/kanban/models/index.js +2 -0
- package/esm2015/components/kanban/models/kanban-data.js +1 -0
- package/esm2015/components/kanban/models/kanban-template-types.js +9 -0
- package/esm2015/components/kanban/template.directive.js +20 -0
- package/esm2015/components/progressbar/components/progressbar-determinate/progressbar-determinate.component.js +1 -1
- package/esm2015/components/slide-panel/slide-panel.component.js +8 -1
- package/esm2015/locale/fallback.js +3 -1
- package/esm2015/public-api.js +2 -1
- package/esm2015/seniorsistemas-angular-components.js +5 -1
- package/esm5/components/kanban/components/kanban-column/kanban-column.component.js +84 -0
- package/esm5/components/kanban/components/kanban-item/kanban-item.component.js +45 -0
- package/esm5/components/kanban/components/kanban-item-dragging/kanban-item-dragging.component.js +20 -0
- package/esm5/components/kanban/index.js +5 -0
- package/esm5/components/kanban/kanban-event.service.js +28 -0
- package/esm5/components/kanban/kanban.component.js +213 -0
- package/esm5/components/kanban/kanban.module.js +48 -0
- package/esm5/components/kanban/models/index.js +2 -0
- package/esm5/components/kanban/models/kanban-data.js +1 -0
- package/esm5/components/kanban/models/kanban-template-types.js +9 -0
- package/esm5/components/kanban/template.directive.js +21 -0
- package/esm5/components/progressbar/components/progressbar-determinate/progressbar-determinate.component.js +1 -1
- package/esm5/components/slide-panel/slide-panel.component.js +8 -1
- package/esm5/locale/fallback.js +3 -1
- package/esm5/public-api.js +2 -1
- package/esm5/seniorsistemas-angular-components.js +5 -1
- package/fesm2015/seniorsistemas-angular-components.js +422 -2
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +435 -2
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/seniorsistemas-angular-components.d.ts +4 -0
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { OnDestroy, OnInit, TemplateRef } from "@angular/core";
|
|
2
|
+
import { KanbanColumn } from "../../models";
|
|
3
|
+
import { KanbanEventService } from "../../kanban-event.service";
|
|
4
|
+
import { FormControl } from "@angular/forms";
|
|
5
|
+
export declare class KanbanColumnComponent implements OnInit, OnDestroy {
|
|
6
|
+
private readonly kanbanEventService;
|
|
7
|
+
data: KanbanColumn;
|
|
8
|
+
headerTemplate: TemplateRef<any>;
|
|
9
|
+
selectionControl: FormControl;
|
|
10
|
+
private _unsubscribe$;
|
|
11
|
+
constructor(kanbanEventService: KanbanEventService);
|
|
12
|
+
ngOnInit(): void;
|
|
13
|
+
ngOnDestroy(): void;
|
|
14
|
+
private _subscriveEvents;
|
|
15
|
+
private _validateInputs;
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { KanbanItem } from '../../models';
|
|
3
|
+
import { KanbanEventService } from '../../kanban-event.service';
|
|
4
|
+
export declare class KanbanItemComponent {
|
|
5
|
+
private readonly _kanbanEventService;
|
|
6
|
+
item: KanbanItem;
|
|
7
|
+
selected: boolean;
|
|
8
|
+
headerTemplate: TemplateRef<any>;
|
|
9
|
+
bodyTemplate: TemplateRef<any>;
|
|
10
|
+
footerTemplate: TemplateRef<any>;
|
|
11
|
+
constructor(_kanbanEventService: KanbanEventService);
|
|
12
|
+
onSelectedChange(value: any): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { KanbanColumn, KanbanItem } from "./models";
|
|
3
|
+
export declare class KanbanEventService {
|
|
4
|
+
selectAllColumnItemsEvent: EventEmitter<KanbanColumn>;
|
|
5
|
+
unselectAllColumnItemsEvent: EventEmitter<KanbanColumn>;
|
|
6
|
+
selectItemEvent: EventEmitter<KanbanItem>;
|
|
7
|
+
unselectItemEvent: EventEmitter<KanbanItem>;
|
|
8
|
+
emitSelectAllColumnItemsEvent(column: KanbanColumn): void;
|
|
9
|
+
emitUnselectAllColumnItemsEvent(column: KanbanColumn): void;
|
|
10
|
+
emitSelectItemEvent(item: KanbanItem): void;
|
|
11
|
+
emitUnselectItemEvent(item: KanbanItem): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AfterContentInit, EventEmitter, OnDestroy, OnInit, QueryList, TemplateRef } from '@angular/core';
|
|
2
|
+
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
3
|
+
import { KanbanColumn, KanbanData, KanbanItem, KanbanItemMovedData } from './models';
|
|
4
|
+
import { TemplateDirective } from './template.directive';
|
|
5
|
+
import { KanbanEventService } from './kanban-event.service';
|
|
6
|
+
export declare class KanbanComponent implements OnInit, AfterContentInit, OnDestroy {
|
|
7
|
+
private readonly kanbanEventService;
|
|
8
|
+
data: KanbanData;
|
|
9
|
+
itemsMoved: EventEmitter<KanbanItemMovedData>;
|
|
10
|
+
dataUpdated: EventEmitter<KanbanData>;
|
|
11
|
+
itemsSelected: EventEmitter<KanbanItem[]>;
|
|
12
|
+
selectedColumn: KanbanColumn;
|
|
13
|
+
selectedItems: Set<KanbanItem>;
|
|
14
|
+
draggingItems: Set<KanbanItem>;
|
|
15
|
+
columnHeaderTemplate: TemplateRef<any>;
|
|
16
|
+
columnEmptyMessageTemplate: TemplateRef<any>;
|
|
17
|
+
itemHeaderTemplate: TemplateRef<any>;
|
|
18
|
+
itemBodyTemplate: TemplateRef<any>;
|
|
19
|
+
itemFooterTemplate: TemplateRef<any>;
|
|
20
|
+
private _unsubscribe$;
|
|
21
|
+
templates: QueryList<TemplateDirective>;
|
|
22
|
+
constructor(kanbanEventService: KanbanEventService);
|
|
23
|
+
ngOnInit(): void;
|
|
24
|
+
ngAfterContentInit(): void;
|
|
25
|
+
ngOnDestroy(): void;
|
|
26
|
+
drop(event: CdkDragDrop<KanbanItem[]>): void;
|
|
27
|
+
selectItem(event: MouseEvent, item: KanbanItem, column: KanbanColumn): void;
|
|
28
|
+
dragStarted(): void;
|
|
29
|
+
dragReleased(): void;
|
|
30
|
+
getLinkedColumns(currentColumn: KanbanColumn): string[];
|
|
31
|
+
getColumnHeaderTemplate(): TemplateRef<any>;
|
|
32
|
+
getColumnEmptyMessageTemplate(): TemplateRef<any>;
|
|
33
|
+
getItemHeaderTemplate(): TemplateRef<any>;
|
|
34
|
+
getItemBodyTemplate(): TemplateRef<any>;
|
|
35
|
+
getItemFooterTemplate(): TemplateRef<any>;
|
|
36
|
+
private _getCustomTemplate;
|
|
37
|
+
private _subscribeEvents;
|
|
38
|
+
private _normalizeData;
|
|
39
|
+
private _validateInputs;
|
|
40
|
+
private _getTemplates;
|
|
41
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TieredMenuItemData } from "../../tiered-menu/models/tiered-menu-item-data";
|
|
2
|
+
export interface KanbanData {
|
|
3
|
+
columns: KanbanColumn[];
|
|
4
|
+
}
|
|
5
|
+
export interface KanbanColumn {
|
|
6
|
+
id?: string;
|
|
7
|
+
title: string;
|
|
8
|
+
items: KanbanItem[];
|
|
9
|
+
options?: TieredMenuItemData[];
|
|
10
|
+
}
|
|
11
|
+
export interface KanbanItem {
|
|
12
|
+
options?: TieredMenuItemData[];
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
data: any;
|
|
15
|
+
}
|
|
16
|
+
export interface KanbanItemMovedData {
|
|
17
|
+
items: KanbanItem[];
|
|
18
|
+
previousColumn: KanbanColumn;
|
|
19
|
+
targetColumn: KanbanColumn;
|
|
20
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Input } from "@angular/core";
|
|
3
|
+
import { Subject } from "rxjs";
|
|
4
|
+
import { takeUntil } from "rxjs/operators";
|
|
5
|
+
import { KanbanEventService } from "../../kanban-event.service";
|
|
6
|
+
import { FormControl } from "@angular/forms";
|
|
7
|
+
let KanbanColumnComponent = class KanbanColumnComponent {
|
|
8
|
+
constructor(kanbanEventService) {
|
|
9
|
+
this.kanbanEventService = kanbanEventService;
|
|
10
|
+
this.selectionControl = new FormControl(false);
|
|
11
|
+
this._unsubscribe$ = new Subject();
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this._validateInputs();
|
|
15
|
+
this._subscriveEvents();
|
|
16
|
+
}
|
|
17
|
+
ngOnDestroy() {
|
|
18
|
+
this._unsubscribe$.next();
|
|
19
|
+
this._unsubscribe$.complete();
|
|
20
|
+
}
|
|
21
|
+
_subscriveEvents() {
|
|
22
|
+
this.selectionControl.valueChanges
|
|
23
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
24
|
+
.subscribe((value) => {
|
|
25
|
+
if (value) {
|
|
26
|
+
this.kanbanEventService.emitSelectAllColumnItemsEvent(this.data);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.kanbanEventService.emitUnselectAllColumnItemsEvent(this.data);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
this.kanbanEventService.unselectItemEvent
|
|
33
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
34
|
+
.subscribe((_) => {
|
|
35
|
+
this.selectionControl.setValue(false, { emitEvent: false });
|
|
36
|
+
});
|
|
37
|
+
this.kanbanEventService.selectItemEvent
|
|
38
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
39
|
+
.subscribe((item) => {
|
|
40
|
+
if (!this.data.items.includes(item)) {
|
|
41
|
+
this.selectionControl.setValue(false, { emitEvent: false });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
this.kanbanEventService.selectAllColumnItemsEvent
|
|
45
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
46
|
+
.subscribe((column) => {
|
|
47
|
+
if (this.data !== column) {
|
|
48
|
+
this.selectionControl.setValue(false, { emitEvent: false });
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
this.kanbanEventService.unselectAllColumnItemsEvent
|
|
52
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
53
|
+
.subscribe((column) => {
|
|
54
|
+
if (this.data !== column) {
|
|
55
|
+
this.selectionControl.setValue(false, { emitEvent: false });
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
_validateInputs() {
|
|
60
|
+
if (!this.data) {
|
|
61
|
+
throw new Error("data parameter is required");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
KanbanColumnComponent.ctorParameters = () => [
|
|
66
|
+
{ type: KanbanEventService }
|
|
67
|
+
];
|
|
68
|
+
__decorate([
|
|
69
|
+
Input()
|
|
70
|
+
], KanbanColumnComponent.prototype, "data", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
Input()
|
|
73
|
+
], KanbanColumnComponent.prototype, "headerTemplate", void 0);
|
|
74
|
+
KanbanColumnComponent = __decorate([
|
|
75
|
+
Component({
|
|
76
|
+
selector: "s-kanban-column",
|
|
77
|
+
template: "<div class=\"kanban-column\">\n <div class=\"kanban-column__header\">\n <div class=\"content\">\n <form>\n <input\n type=\"checkbox\"\n name=\"checkbox\"\n [formControl]=\"selectionControl\">\n </form>\n\n <ng-container *ngIf=\"!headerTemplate; then defaultHeaderTemplate else customHeaderTemplate\"></ng-container>\n \n <ng-template #defaultHeaderTemplate>\n <div class=\"header\">\n <span class=\"title\">{{ data.title }} ({{ data.items.length }})</span>\n </div>\n </ng-template>\n \n <ng-template #customHeaderTemplate>\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: data }\"></ng-container>\n </ng-template>\n </div>\n <s-button\n *ngIf=\"data.options\"\n priority=\"default\"\n [disabled]=\"false\"\n [auxiliary]=\"true\"\n size=\"small\"\n [model]=\"data.options\">\n </s-button>\n </div>\n <div class=\"kanban-column__body\">\n <ng-content></ng-content>\n </div>\n</div>",
|
|
78
|
+
styles: [".kanban-column{-ms-flex-align:center;align-items:center;background-color:#fbfafc;border:1px solid #dedce5;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:100%;min-height:120px;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%}.kanban-column .kanban-column__header{-ms-flex-align:center;align-items:center;border-bottom:1px solid #dedce5;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:16px 16px 8px;width:100%}.kanban-column .kanban-column__header .content{display:-ms-flexbox;display:flex;gap:16px}.kanban-column .kanban-column__header .content .teste{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-family:\"Open Sans\" sans-serif}.kanban-column .kanban-column__header .content .teste .title{font-size:14px;font-weight:800}.kanban-column .kanban-column__header .content .teste .description{font-size:12px}.kanban-column .kanban-column__body{display:-ms-flexbox;display:flex;height:100%;-ms-flex-pack:center;justify-content:center;width:100%}"]
|
|
79
|
+
})
|
|
80
|
+
], KanbanColumnComponent);
|
|
81
|
+
export { KanbanColumnComponent };
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vY29tcG9uZW50cy9rYW5iYW4tY29sdW1uL2thbmJhbi1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBa0MsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzdDLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBVzlCLFlBQ3FCLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBTHBELHFCQUFnQixHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUl4QyxDQUFDO0lBRUUsUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO2FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQzFCLElBQUksS0FBSyxFQUFFO2dCQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEU7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0RTtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQjthQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZTthQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxJQUFnQixFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUMvRDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QjthQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxNQUFvQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUMvRDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQjthQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxNQUFvQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUMvRDtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDakQ7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUE1RDRDLGtCQUFrQjs7QUFWM0Q7SUFEQyxLQUFLLEVBQUU7bURBQ2tCO0FBRzFCO0lBREMsS0FBSyxFQUFFOzZEQUNnQztBQUwvQixxQkFBcUI7SUFMakMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixpdkNBQTZDOztLQUVoRCxDQUFDO0dBQ1cscUJBQXFCLENBd0VqQztTQXhFWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBLYW5iYW5Db2x1bW4sIEthbmJhbkl0ZW0gfSBmcm9tIFwiLi4vLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBLYW5iYW5FdmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4va2FuYmFuLWV2ZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMta2FuYmFuLWNvbHVtblwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4va2FuYmFuLWNvbHVtbi5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9rYW5iYW4tY29sdW1uLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBLYW5iYW5Db2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0YTogS2FuYmFuQ29sdW1uO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XG5cbiAgICBwcml2YXRlIF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkga2FuYmFuRXZlbnRTZXJ2aWNlOiBLYW5iYW5FdmVudFNlcnZpY2UsXG4gICAgKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXZlRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpdmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnQodGhpcy5kYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0VW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50KHRoaXMuZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UudW5zZWxlY3RJdGVtRXZlbnRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2Uuc2VsZWN0SXRlbUV2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IEthbmJhbkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5pdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoZmFsc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSAhPT0gY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnVuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEgIT09IGNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoZmFsc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { KanbanEventService } from '../../kanban-event.service';
|
|
4
|
+
let KanbanItemComponent = class KanbanItemComponent {
|
|
5
|
+
constructor(_kanbanEventService) {
|
|
6
|
+
this._kanbanEventService = _kanbanEventService;
|
|
7
|
+
this.selected = false;
|
|
8
|
+
}
|
|
9
|
+
onSelectedChange(value) {
|
|
10
|
+
if (value) {
|
|
11
|
+
this._kanbanEventService.emitSelectItemEvent(this.item);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this._kanbanEventService.emitUnselectItemEvent(this.item);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
KanbanItemComponent.ctorParameters = () => [
|
|
19
|
+
{ type: KanbanEventService }
|
|
20
|
+
];
|
|
21
|
+
__decorate([
|
|
22
|
+
Input()
|
|
23
|
+
], KanbanItemComponent.prototype, "item", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
Input()
|
|
26
|
+
], KanbanItemComponent.prototype, "selected", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
Input()
|
|
29
|
+
], KanbanItemComponent.prototype, "headerTemplate", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
Input()
|
|
32
|
+
], KanbanItemComponent.prototype, "bodyTemplate", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
Input()
|
|
35
|
+
], KanbanItemComponent.prototype, "footerTemplate", void 0);
|
|
36
|
+
KanbanItemComponent = __decorate([
|
|
37
|
+
Component({
|
|
38
|
+
selector: 's-kanban-item',
|
|
39
|
+
template: "<p-tieredMenu\n #optionsMenu\n [popup]=\"true\"\n appendTo=\"body\"\n [baseZIndex]=\"9999\"\n [model]=\"item.options\">\n</p-tieredMenu>\n\n<div\n class=\"kanban-item\"\n [ngClass]=\"{\n 'kanban-item--selected': selected && !item.disabled,\n 'kanban-item--disabled': item.disabled\n }\">\n <div class=\"kanban-item__header\">\n <div class=\"content\">\n <form>\n <input\n *ngIf=\"!item.disabled\"\n type=\"checkbox\"\n name=\"checkbox\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"onSelectedChange($event)\"\n (click)=\"$event.stopPropagation()\">\n </form>\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n <button\n *ngIf=\"item.options && !item.disabled\"\n class=\"options-button\"\n (click)=\"optionsMenu.toggle($event); $event.stopPropagation();\">\n <i class=\"fas fa-ellipsis-v\"></i>\n </button>\n </div>\n <div class=\"kanban-item__body\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n <div *ngIf=\"footerTemplate\" class=\"kanban-item__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: item }\"></ng-container> \n </div>\n</div>",
|
|
40
|
+
styles: [".kanban-item{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px 0 rgba(0,0,0,.25);cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:16px;min-width:260px;padding:16px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.kanban-item .kanban-item__header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.kanban-item .kanban-item__header .content{display:-ms-flexbox;display:flex;gap:16px}.kanban-item .kanban-item__header .options-button{background-color:transparent;border:none;cursor:pointer;margin-right:-8px;padding:0 8px}.kanban-item .kanban-item__body{margin:16px 0}.kanban-item .kanban-item__footer{border-top:1px solid #dedce5;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.kanban-item .kanban-item__footer .date-info{-ms-flex-align:center;align-items:center;color:#6e7280;display:-ms-flexbox;display:flex;font-family:\"Open Sans\" sans-serif;font-size:12px;gap:4px;line-height:150%}.kanban-item--selected{border:1px solid #428bca}.kanban-item--disabled{opacity:50%}"]
|
|
41
|
+
})
|
|
42
|
+
], KanbanItemComponent);
|
|
43
|
+
export { KanbanItemComponent };
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMva2FuYmFuL2NvbXBvbmVudHMva2FuYmFuLWl0ZW0va2FuYmFuLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUc5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU9oRSxJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtJQWdCOUIsWUFDbUIsbUJBQXVDO1FBQXZDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFabkQsYUFBUSxHQUFHLEtBQUssQ0FBQztJQWFwQixDQUFDO0lBRUUsZ0JBQWdCLENBQUMsS0FBVTtRQUNoQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekQ7YUFBTTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7WUFWeUMsa0JBQWtCOztBQWYxRDtJQURDLEtBQUssRUFBRTtpREFDZ0I7QUFHeEI7SUFEQyxLQUFLLEVBQUU7cURBQ2dCO0FBR3hCO0lBREMsS0FBSyxFQUFFOzJEQUNnQztBQUd4QztJQURDLEtBQUssRUFBRTt5REFDOEI7QUFHdEM7SUFEQyxLQUFLLEVBQUU7MkRBQ2dDO0FBZDdCLG1CQUFtQjtJQUwvQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6Qiw4K0NBQTJDOztLQUU1QyxDQUFDO0dBQ1csbUJBQW1CLENBMkIvQjtTQTNCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBLYW5iYW5JdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEthbmJhbkV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2thbmJhbi1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy1rYW5iYW4taXRlbScsXG4gIHRlbXBsYXRlVXJsOiBcIi4va2FuYmFuLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2thbmJhbi1pdGVtLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBLYW5iYW5JdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW06IEthbmJhbkl0ZW07XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBib2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2thbmJhbkV2ZW50U2VydmljZTogS2FuYmFuRXZlbnRTZXJ2aWNlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2thbmJhbkV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbUV2ZW50KHRoaXMuaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2thbmJhbkV2ZW50U2VydmljZS5lbWl0VW5zZWxlY3RJdGVtRXZlbnQodGhpcy5pdGVtKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm2015/components/kanban/components/kanban-item-dragging/kanban-item-dragging.component.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Input } from "@angular/core";
|
|
3
|
+
let KanbanItemDraggingComponent = class KanbanItemDraggingComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.quantityItems = 0;
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
__decorate([
|
|
9
|
+
Input()
|
|
10
|
+
], KanbanItemDraggingComponent.prototype, "quantityItems", void 0);
|
|
11
|
+
KanbanItemDraggingComponent = __decorate([
|
|
12
|
+
Component({
|
|
13
|
+
selector: "s-kanban-item-dragging",
|
|
14
|
+
template: "<div\n *ngIf=\"quantityItems\"\n class=\"kanban-item-dragging\">\n</div>\n\n<div\n class=\"kanban-item-dragging\"\n [ngClass]=\"{ 'kanban-item-dragging--over': quantityItems }\">\n <div class=\"content\">\n <input type=\"checkbox\" checked />\n <s-badge\n [text]=\"'platform.angular_components.count_items_selected' | translate:{ count: quantityItems }\"\n color=\"blue\">\n </s-badge>\n </div>\n</div>",
|
|
15
|
+
styles: [".kanban-item-dragging{background-color:#fff;border:1px solid #428bca;border-radius:4px;box-shadow:0 1px 5px 0 rgba(0,0,0,.25);height:52px;padding:16px;width:260px}.kanban-item-dragging .content{display:-ms-flexbox;display:flex;gap:16px}.kanban-item-dragging--over{left:12px;position:relative;top:-64px}"]
|
|
16
|
+
})
|
|
17
|
+
], KanbanItemDraggingComponent);
|
|
18
|
+
export { KanbanItemDraggingComponent };
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWl0ZW0tZHJhZ2dpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMva2FuYmFuL2NvbXBvbmVudHMva2FuYmFuLWl0ZW0tZHJhZ2dpbmcva2FuYmFuLWl0ZW0tZHJhZ2dpbmcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9qRCxJQUFhLDJCQUEyQixHQUF4QyxNQUFhLDJCQUEyQjtJQUF4QztRQUVXLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FBQSxDQUFBO0FBREc7SUFEQyxLQUFLLEVBQUU7a0VBQ2lCO0FBRmhCLDJCQUEyQjtJQUx2QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsd0JBQXdCO1FBQ2xDLDJkQUFvRDs7S0FFdkQsQ0FBQztHQUNXLDJCQUEyQixDQUd2QztTQUhZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLWthbmJhbi1pdGVtLWRyYWdnaW5nXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9rYW5iYW4taXRlbS1kcmFnZ2luZy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9rYW5iYW4taXRlbS1kcmFnZ2luZy5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgS2FuYmFuSXRlbURyYWdnaW5nQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBxdWFudGl0eUl0ZW1zID0gMDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { KanbanComponent } from "./kanban.component";
|
|
2
|
+
export { KanbanModule } from "./kanban.module";
|
|
3
|
+
export { KanbanTemplateTypes } from "./models";
|
|
4
|
+
export { TemplateDirective } from "./template.directive";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQTZELG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgS2FuYmFuQ29tcG9uZW50IH0gZnJvbSBcIi4va2FuYmFuLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgS2FuYmFuTW9kdWxlIH0gZnJvbSBcIi4va2FuYmFuLm1vZHVsZVwiO1xuXG5leHBvcnQgeyBLYW5iYW5EYXRhLCBLYW5iYW5Db2x1bW4sIEthbmJhbkl0ZW0sIEthbmJhbkl0ZW1Nb3ZlZERhdGEsIEthbmJhblRlbXBsYXRlVHlwZXMgfSBmcm9tIFwiLi9tb2RlbHNcIjtcblxuZXhwb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tIFwiLi90ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
3
|
+
let KanbanEventService = class KanbanEventService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.selectAllColumnItemsEvent = new EventEmitter();
|
|
6
|
+
this.unselectAllColumnItemsEvent = new EventEmitter();
|
|
7
|
+
this.selectItemEvent = new EventEmitter();
|
|
8
|
+
this.unselectItemEvent = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
emitSelectAllColumnItemsEvent(column) {
|
|
11
|
+
this.selectAllColumnItemsEvent.emit(column);
|
|
12
|
+
}
|
|
13
|
+
emitUnselectAllColumnItemsEvent(column) {
|
|
14
|
+
this.unselectAllColumnItemsEvent.emit(column);
|
|
15
|
+
}
|
|
16
|
+
emitSelectItemEvent(item) {
|
|
17
|
+
this.selectItemEvent.emit(item);
|
|
18
|
+
}
|
|
19
|
+
emitUnselectItemEvent(item) {
|
|
20
|
+
this.unselectItemEvent.emit(item);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
KanbanEventService = __decorate([
|
|
24
|
+
Injectable()
|
|
25
|
+
], KanbanEventService);
|
|
26
|
+
export { KanbanEventService };
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWV2ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4va2FuYmFuLWV2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3pELElBQWEsa0JBQWtCLEdBQS9CLE1BQWEsa0JBQWtCO0lBQS9CO1FBQ1csOEJBQXlCLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDN0QsZ0NBQTJCLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ2pELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFpQjlELENBQUM7SUFmVSw2QkFBNkIsQ0FBQyxNQUFvQjtRQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSwrQkFBK0IsQ0FBQyxNQUFvQjtRQUN2RCxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxJQUFnQjtRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBZ0I7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0osQ0FBQTtBQXJCWSxrQkFBa0I7SUFEOUIsVUFBVSxFQUFFO0dBQ0Esa0JBQWtCLENBcUI5QjtTQXJCWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBLYW5iYW5Db2x1bW4sIEthbmJhbkl0ZW0gfSBmcm9tIFwiLi9tb2RlbHNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEthbmJhbkV2ZW50U2VydmljZSB7XG4gICAgcHVibGljIHNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkNvbHVtbj4oKTtcbiAgICBwdWJsaWMgdW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5Db2x1bW4+KCk7XG4gICAgcHVibGljIHNlbGVjdEl0ZW1FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8S2FuYmFuSXRlbT4oKTtcbiAgICBwdWJsaWMgdW5zZWxlY3RJdGVtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW0+KCk7XG5cbiAgICBwdWJsaWMgZW1pdFNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnQoY29sdW1uOiBLYW5iYW5Db2x1bW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50LmVtaXQoY29sdW1uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdFVuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudChjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudC5lbWl0KGNvbHVtbik7XG4gICAgfVxuXG4gICAgcHVibGljIGVtaXRTZWxlY3RJdGVtRXZlbnQoaXRlbTogS2FuYmFuSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEl0ZW1FdmVudC5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0VW5zZWxlY3RJdGVtRXZlbnQoaXRlbTogS2FuYmFuSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbUV2ZW50LmVtaXQoaXRlbSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
|
4
|
+
import { KanbanTemplateTypes } from "./models/kanban-template-types";
|
|
5
|
+
import { TemplateDirective } from './template.directive';
|
|
6
|
+
import { KanbanEventService } from './kanban-event.service';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
import { takeUntil } from 'rxjs/operators';
|
|
9
|
+
let KanbanComponent = class KanbanComponent {
|
|
10
|
+
constructor(kanbanEventService) {
|
|
11
|
+
this.kanbanEventService = kanbanEventService;
|
|
12
|
+
this.itemsMoved = new EventEmitter();
|
|
13
|
+
this.dataUpdated = new EventEmitter();
|
|
14
|
+
this.itemsSelected = new EventEmitter();
|
|
15
|
+
this.selectedItems = new Set();
|
|
16
|
+
this.draggingItems = new Set();
|
|
17
|
+
this._unsubscribe$ = new Subject();
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
this._subscribeEvents();
|
|
21
|
+
this._normalizeData();
|
|
22
|
+
this._validateInputs();
|
|
23
|
+
}
|
|
24
|
+
ngAfterContentInit() {
|
|
25
|
+
this._getTemplates();
|
|
26
|
+
}
|
|
27
|
+
ngOnDestroy() {
|
|
28
|
+
this._unsubscribe$.next();
|
|
29
|
+
this._unsubscribe$.complete();
|
|
30
|
+
}
|
|
31
|
+
drop(event) {
|
|
32
|
+
var _a;
|
|
33
|
+
const previousColumn = this.data.columns.find((column) => column.id === event.previousContainer.id);
|
|
34
|
+
const targetColumn = this.data.columns.find((column) => column.id === event.container.id);
|
|
35
|
+
if (!previousColumn || !targetColumn) {
|
|
36
|
+
throw new Error("Unable to obtain information about columns when performing drag and drop");
|
|
37
|
+
}
|
|
38
|
+
if (event.previousContainer === event.container) {
|
|
39
|
+
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
43
|
+
}
|
|
44
|
+
this.selectedItems.forEach((item) => {
|
|
45
|
+
const previousIndex = event.previousContainer.data.indexOf(item);
|
|
46
|
+
if (previousIndex !== -1 && item !== event.item.data) {
|
|
47
|
+
if (event.previousContainer === event.container) {
|
|
48
|
+
moveItemInArray(event.container.data, previousIndex, event.currentIndex);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
transferArrayItem(event.previousContainer.data, event.container.data, previousIndex, event.currentIndex);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
this.selectedItems.add(event.item.data);
|
|
56
|
+
this.itemsMoved.emit({
|
|
57
|
+
items: [...this.selectedItems],
|
|
58
|
+
previousColumn,
|
|
59
|
+
targetColumn,
|
|
60
|
+
});
|
|
61
|
+
if ((_a = this.dataUpdated.observers) === null || _a === void 0 ? void 0 : _a.length) {
|
|
62
|
+
this.dataUpdated.emit(Object.assign({}, this.data));
|
|
63
|
+
}
|
|
64
|
+
this.data.columns.forEach((column) => {
|
|
65
|
+
this.kanbanEventService.emitUnselectAllColumnItemsEvent(column);
|
|
66
|
+
});
|
|
67
|
+
this.selectedItems.clear();
|
|
68
|
+
}
|
|
69
|
+
selectItem(event, item, column) {
|
|
70
|
+
if (event.ctrlKey) {
|
|
71
|
+
if (this.selectedItems.delete(item)) {
|
|
72
|
+
this.kanbanEventService.emitUnselectItemEvent(item);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
if (this.selectedColumn && !this.selectedColumn.items.includes(item)) {
|
|
76
|
+
this.selectedItems.clear();
|
|
77
|
+
}
|
|
78
|
+
this.selectedItems.add(item);
|
|
79
|
+
this.selectedColumn = column;
|
|
80
|
+
this.kanbanEventService.emitSelectItemEvent(item);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.selectedItems.clear();
|
|
85
|
+
this.selectedItems.add(item);
|
|
86
|
+
this.selectedColumn = column;
|
|
87
|
+
this.kanbanEventService.emitSelectItemEvent(item);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
dragStarted() {
|
|
91
|
+
this.selectedItems.forEach((item) => {
|
|
92
|
+
this.draggingItems.add(item);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
dragReleased() {
|
|
96
|
+
this.draggingItems.clear();
|
|
97
|
+
}
|
|
98
|
+
getLinkedColumns(currentColumn) {
|
|
99
|
+
return this.data.columns
|
|
100
|
+
.filter((column) => column != currentColumn)
|
|
101
|
+
.map((column) => column.id);
|
|
102
|
+
}
|
|
103
|
+
getColumnHeaderTemplate() {
|
|
104
|
+
return this._getCustomTemplate(KanbanTemplateTypes.ColumnHeader);
|
|
105
|
+
}
|
|
106
|
+
getColumnEmptyMessageTemplate() {
|
|
107
|
+
return this._getCustomTemplate(KanbanTemplateTypes.ColumnEmptyMessage);
|
|
108
|
+
}
|
|
109
|
+
getItemHeaderTemplate() {
|
|
110
|
+
return this._getCustomTemplate(KanbanTemplateTypes.ItemHeader);
|
|
111
|
+
}
|
|
112
|
+
getItemBodyTemplate() {
|
|
113
|
+
return this._getCustomTemplate(KanbanTemplateTypes.ItemBody);
|
|
114
|
+
}
|
|
115
|
+
getItemFooterTemplate() {
|
|
116
|
+
return this._getCustomTemplate(KanbanTemplateTypes.ItemFooter);
|
|
117
|
+
}
|
|
118
|
+
_getCustomTemplate(type) {
|
|
119
|
+
var _a;
|
|
120
|
+
return (_a = this.templates.find((template) => template.type === type)) === null || _a === void 0 ? void 0 : _a.template;
|
|
121
|
+
}
|
|
122
|
+
_subscribeEvents() {
|
|
123
|
+
this.kanbanEventService.selectAllColumnItemsEvent
|
|
124
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
125
|
+
.subscribe((column) => {
|
|
126
|
+
column.items
|
|
127
|
+
.filter((item) => !item.disabled)
|
|
128
|
+
.forEach((item) => {
|
|
129
|
+
this.selectedItems.add(item);
|
|
130
|
+
});
|
|
131
|
+
this.selectedColumn = column;
|
|
132
|
+
this.itemsSelected.emit([...this.selectedItems]);
|
|
133
|
+
});
|
|
134
|
+
this.kanbanEventService.unselectAllColumnItemsEvent
|
|
135
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
136
|
+
.subscribe((_) => {
|
|
137
|
+
this.selectedItems.clear();
|
|
138
|
+
});
|
|
139
|
+
this.kanbanEventService.selectItemEvent
|
|
140
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
141
|
+
.subscribe((item) => {
|
|
142
|
+
if (this.selectedColumn && !this.selectedColumn.items.includes(item)) {
|
|
143
|
+
this.selectedItems.clear();
|
|
144
|
+
}
|
|
145
|
+
this.selectedItems.add(item);
|
|
146
|
+
this.itemsSelected.emit([...this.selectedItems]);
|
|
147
|
+
// Finding the item column and setting selectedColumn.
|
|
148
|
+
this.data.columns.forEach((column) => {
|
|
149
|
+
column.items.forEach((currentItem) => {
|
|
150
|
+
if (currentItem === item) {
|
|
151
|
+
this.selectedColumn = column;
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
this.kanbanEventService.unselectItemEvent
|
|
158
|
+
.pipe(takeUntil(this._unsubscribe$))
|
|
159
|
+
.subscribe((item) => {
|
|
160
|
+
this.selectedItems.delete(item);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
_normalizeData() {
|
|
164
|
+
this.data.columns.forEach((column) => {
|
|
165
|
+
column.id = column.id || `id-${Math.random().toString(36).substring(2, 9)}-${Date.now().toString(36)}`;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
_validateInputs() {
|
|
169
|
+
const columns = this.data.columns;
|
|
170
|
+
const columnIds = this.data.columns.map((column) => column.id);
|
|
171
|
+
if (new Set(columnIds).size !== columns.length) {
|
|
172
|
+
throw new Error("Repeated IDs are not accepted.");
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
_getTemplates() {
|
|
176
|
+
this.columnHeaderTemplate = this.getColumnHeaderTemplate();
|
|
177
|
+
this.columnEmptyMessageTemplate = this.getColumnEmptyMessageTemplate();
|
|
178
|
+
this.itemHeaderTemplate = this.getItemHeaderTemplate();
|
|
179
|
+
this.itemBodyTemplate = this.getItemBodyTemplate();
|
|
180
|
+
this.itemFooterTemplate = this.getItemFooterTemplate();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
KanbanComponent.ctorParameters = () => [
|
|
184
|
+
{ type: KanbanEventService }
|
|
185
|
+
];
|
|
186
|
+
__decorate([
|
|
187
|
+
Input()
|
|
188
|
+
], KanbanComponent.prototype, "data", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
Output()
|
|
191
|
+
], KanbanComponent.prototype, "itemsMoved", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
Output()
|
|
194
|
+
], KanbanComponent.prototype, "dataUpdated", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
Output()
|
|
197
|
+
], KanbanComponent.prototype, "itemsSelected", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
ContentChildren(TemplateDirective)
|
|
200
|
+
], KanbanComponent.prototype, "templates", void 0);
|
|
201
|
+
KanbanComponent = __decorate([
|
|
202
|
+
Component({
|
|
203
|
+
selector: 's-kanban',
|
|
204
|
+
template: "<div class=\"kanban\">\n <s-kanban-column\n *ngFor=\"let column of data.columns\"\n [data]=\"column\"\n [headerTemplate]=\"columnHeaderTemplate\">\n <div\n [id]=\"column.id\"\n style=\"height: 100%; width: 100%;\"\n cdkDropList\n #dynamicList=\"cdkDropList\"\n [cdkDropListData]=\"column.items\"\n [cdkDropListConnectedTo]=\"getLinkedColumns(column)\"\n (cdkDropListDropped)=\"drop($event)\">\n\n <ng-container *ngIf=\"!columnEmptyMessageTemplate; then defaultEmptyMessageTemplate else customEmptyMessageTemplate\"></ng-container>\n\n <ng-template #defaultEmptyMessageTemplate>\n <div *ngIf=\"!column.items.length\" class=\"empty-message\">\n <p class=\"text\">\n <span class=\"fas fa-clock\"></span> \n <span>{{ \"platform.angular_components.count_items_in_target\" | translate:{ count: column.items.length, target: column.title } }}</span>\n </p>\n </div>\n </ng-template>\n\n <ng-template #customEmptyMessageTemplate>\n <ng-container *ngTemplateOutlet=\"columnEmptyMessageTemplate; context: { $implicit: column }\"></ng-container>\n </ng-template>\n\n <div\n *ngFor=\"let item of column.items\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"item.disabled\"\n (cdkDragStarted)=\"dragStarted()\"\n (cdkDragReleased)=\"dragReleased()\"\n (click)=\"selectItem($event, item, column)\">\n \n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n\n <ng-container *cdkDragPreview>\n <ng-container *ngIf=\"selectedItems.size > 1; then itemDraggingTemplate else itemTemplate\"></ng-container>\n </ng-container>\n\n <ng-template #itemTemplate>\n <s-kanban-item\n [item]=\"item\"\n [selected]=\"selectedItems.has(item)\"\n [headerTemplate]=\"itemHeaderTemplate\"\n [bodyTemplate]=\"itemBodyTemplate\"\n [footerTemplate]=\"itemFooterTemplate\">\n </s-kanban-item>\n </ng-template>\n\n <ng-template #itemDraggingTemplate>\n <s-kanban-item-dragging [quantityItems]=\"selectedItems.size\"></s-kanban-item-dragging>\n </ng-template>\n\n <div *cdkDragPlaceholder>\n <div class=\"placeholder\">\n <div class=\"placeholder-line\"></div>\n </div>\n </div>\n </div>\n </div>\n </s-kanban-column>\n</div>\n\n",
|
|
205
|
+
styles: [".kanban{display:-ms-flexbox;display:flex;gap:16px;width:100%}.kanban .empty-message{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin:16px}.kanban .empty-message .text{overflow:hidden;text-align:center;text-overflow:ellipsis;width:100%;white-space:nowrap}@media screen and (max-width:600px){.kanban{-ms-flex-direction:column;flex-direction:column}}s-kanban-column{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;min-width:292px}.placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.placeholder .placeholder-line{background-color:#a5a5b2;height:1px;margin:6px 0;width:50%}"]
|
|
206
|
+
})
|
|
207
|
+
], KanbanComponent);
|
|
208
|
+
export { KanbanComponent };
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2thbmJhbi9rYW5iYW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQTZDLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUM5SyxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPM0MsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQTJCeEIsWUFDcUIsa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUF2QnBELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUdyRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFHN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUdqRCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFjLENBQUM7UUFDdEMsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBYyxDQUFDO1FBUXJDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU14QyxDQUFDO0lBRUUsUUFBUTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElB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bnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBLYW5iYW5Db2x1bW4sIEthbmJhbkRhdGEsIEthbmJhbkl0ZW0sIEthbmJhbkl0ZW1Nb3ZlZERhdGEgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBLYW5iYW5UZW1wbGF0ZVR5cGVzIH0gZnJvbSBcIi4vbW9kZWxzL2thbmJhbi10ZW1wbGF0ZS10eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLYW5iYW5FdmVudFNlcnZpY2UgfSBmcm9tICcuL2thbmJhbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWthbmJhbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4va2FuYmFuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRhOiBLYW5iYW5EYXRhO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1zTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1Nb3ZlZERhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGF0YVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkRhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXRlbXNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8S2FuYmFuSXRlbVtdPigpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG4gICAgcHVibGljIGRyYWdnaW5nSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG5cbiAgICBwdWJsaWMgY29sdW1uSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGl0ZW1Cb2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGl0ZW1Gb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBrYW5iYW5FdmVudFNlcnZpY2U6IEthbmJhbkV2ZW50U2VydmljZSxcbiAgICApIHsgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplRGF0YSgpO1xuICAgICAgICB0aGlzLl92YWxpZGF0ZUlucHV0cygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5fZ2V0VGVtcGxhdGVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8S2FuYmFuSXRlbVtdPik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2aW91c0NvbHVtbiA9IHRoaXMuZGF0YS5jb2x1bW5zLmZpbmQoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sdW1uID0gdGhpcy5kYXRhLmNvbHVtbnMuZmluZCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCA9PT0gZXZlbnQuY29udGFpbmVyLmlkKTtcblxuICAgICAgICBpZiAoIXByZXZpb3VzQ29sdW1uIHx8ICF0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgY29sdW1ucyB3aGVuIHBlcmZvcm1pbmcgZHJhZyBhbmQgZHJvcFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSAtMSAmJiBpdGVtICE9PSBldmVudC5pdGVtLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChldmVudC5pdGVtLmRhdGEpO1xuXG4gICAgICAgIHRoaXMuaXRlbXNNb3ZlZC5lbWl0KHtcbiAgICAgICAgICAgIGl0ZW1zOiBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSxcbiAgICAgICAgICAgIHByZXZpb3VzQ29sdW1uLFxuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5kYXRhVXBkYXRlZC5vYnNlcnZlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhVXBkYXRlZC5lbWl0KHsgLi4udGhpcy5kYXRhIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRVbnNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnQoY29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RJdGVtKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBLYW5iYW5JdGVtLCBjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5kZWxldGUoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0VW5zZWxlY3RJdGVtRXZlbnQoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1uICYmICF0aGlzLnNlbGVjdGVkQ29sdW1uLml0ZW1zLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRTZWxlY3RJdGVtRXZlbnQoaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZHJhZ1N0YXJ0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJhZ1JlbGVhc2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyYWdnaW5nSXRlbXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGlua2VkQ29sdW1ucyhjdXJyZW50Q29sdW1uOiBLYW5iYW5Db2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5jb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uICE9IGN1cnJlbnRDb2x1bW4pXG4gICAgICAgICAgICAubWFwKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkhlYWRlcilcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uRW1wdHlNZXNzYWdlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkVtcHR5TWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1IZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVRlbXBsYXRlKEthbmJhblRlbXBsYXRlVHlwZXMuSXRlbUhlYWRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1Cb2R5VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkl0ZW1Cb2R5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5JdGVtRm9vdGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRDdXN0b21UZW1wbGF0ZSh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlOiBUZW1wbGF0ZURpcmVjdGl2ZSkgPT4gdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk/LnRlbXBsYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3N1YnNjcmliZUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2Uuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtOiBLYW5iYW5JdGVtKSA9PiAhaXRlbS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGl0ZW06IEthbmJhbkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UudW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW4gJiYgIXRoaXMuc2VsZWN0ZWRDb2x1bW4uaXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuXG4gICAgICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgaXRlbSBjb2x1bW4gYW5kIHNldHRpbmcgc2VsZWN0ZWRDb2x1bW4uXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLml0ZW1zLmZvckVhY2goKGN1cnJlbnRJdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS51bnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uaWQgPSBjb2x1bW4uaWQgfHwgYGlkLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfWA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCk7XG5cbiAgICAgICAgaWYgKG5ldyBTZXQoY29sdW1uSWRzKS5zaXplICE9PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVwZWF0ZWQgSURzIGFyZSBub3QgYWNjZXB0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkhlYWRlclRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1IZWFkZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUhlYWRlclRlbXBsYXRlKCk7XG4gICAgICAgIHRoaXMuaXRlbUJvZHlUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUJvZHlUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1Gb290ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk7XG4gICAgfVxufVxuIl19
|