@seniorsistemas/angular-components 17.9.1 → 17.9.2

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.
Files changed (25) hide show
  1. package/bundles/seniorsistemas-angular-components.umd.js +50 -14
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +1 -1
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/kanban/components/kanban-column/kanban-column.component.d.ts +2 -0
  6. package/components/kanban/components/kanban-item/kanban-item.component.d.ts +7 -4
  7. package/components/kanban/kanban.component.d.ts +7 -5
  8. package/components/kanban/models/index.d.ts +1 -1
  9. package/components/kanban/models/kanban-data.d.ts +9 -2
  10. package/esm2015/components/kanban/components/kanban-column/kanban-column.component.js +14 -2
  11. package/esm2015/components/kanban/components/kanban-item/kanban-item.component.js +20 -6
  12. package/esm2015/components/kanban/kanban.component.js +26 -18
  13. package/esm2015/components/kanban/models/index.js +1 -1
  14. package/esm2015/components/kanban/models/kanban-data.js +1 -1
  15. package/esm5/components/kanban/components/kanban-column/kanban-column.component.js +16 -3
  16. package/esm5/components/kanban/components/kanban-item/kanban-item.component.js +22 -7
  17. package/esm5/components/kanban/kanban.component.js +26 -18
  18. package/esm5/components/kanban/models/index.js +1 -1
  19. package/esm5/components/kanban/models/kanban-data.js +1 -1
  20. package/fesm2015/seniorsistemas-angular-components.js +48 -14
  21. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  22. package/fesm5/seniorsistemas-angular-components.js +50 -14
  23. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  24. package/package.json +1 -1
  25. package/seniorsistemas-angular-components.metadata.json +1 -1
@@ -1,11 +1,15 @@
1
- import { __decorate } from "tslib";
2
- import { Component, Input } from '@angular/core';
3
- import { KanbanEventService } from '../../kanban-event.service';
1
+ import { __assign, __decorate } from "tslib";
2
+ import { Component, Input } from "@angular/core";
3
+ import { KanbanEventService } from "../../kanban-event.service";
4
4
  var KanbanItemComponent = /** @class */ (function () {
5
5
  function KanbanItemComponent(_kanbanEventService) {
6
6
  this._kanbanEventService = _kanbanEventService;
7
7
  this.selected = false;
8
+ this.showCheckbox = true;
8
9
  }
10
+ KanbanItemComponent.prototype.ngOnInit = function () {
11
+ this._createTieredOptions();
12
+ };
9
13
  KanbanItemComponent.prototype.onSelectedChange = function (value) {
10
14
  if (value) {
11
15
  this._kanbanEventService.emitSelectItemEvent(this.item);
@@ -14,6 +18,14 @@ var KanbanItemComponent = /** @class */ (function () {
14
18
  this._kanbanEventService.emitUnselectItemEvent(this.item);
15
19
  }
16
20
  };
21
+ KanbanItemComponent.prototype._createTieredOptions = function () {
22
+ var _this = this;
23
+ var options = [];
24
+ this.item.options.forEach(function (option) {
25
+ options.push(__assign(__assign({}, option), { command: function () { option.command(_this.item); } }));
26
+ });
27
+ this.item.options = options;
28
+ };
17
29
  KanbanItemComponent.ctorParameters = function () { return [
18
30
  { type: KanbanEventService }
19
31
  ]; };
@@ -23,6 +35,9 @@ var KanbanItemComponent = /** @class */ (function () {
23
35
  __decorate([
24
36
  Input()
25
37
  ], KanbanItemComponent.prototype, "selected", void 0);
38
+ __decorate([
39
+ Input()
40
+ ], KanbanItemComponent.prototype, "showCheckbox", void 0);
26
41
  __decorate([
27
42
  Input()
28
43
  ], KanbanItemComponent.prototype, "headerTemplate", void 0);
@@ -34,12 +49,12 @@ var KanbanItemComponent = /** @class */ (function () {
34
49
  ], KanbanItemComponent.prototype, "footerTemplate", void 0);
35
50
  KanbanItemComponent = __decorate([
36
51
  Component({
37
- selector: 's-kanban-item',
38
- 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>",
39
- 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%}"]
52
+ selector: "s-kanban-item",
53
+ 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 'kanban-item--frozen': !item.disabled && item.frozen\n }\">\n <div class=\"kanban-item__header\">\n <div class=\"content\">\n <form>\n <input\n *ngIf=\"showCheckbox && !item.disabled && !item.frozen\"\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>",
54
+ 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%}.kanban-item--frozen{box-shadow:none}"]
40
55
  })
41
56
  ], KanbanItemComponent);
42
57
  return KanbanItemComponent;
43
58
  }());
44
59
  export { KanbanItemComponent };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMva2FuYmFuL2NvbXBvbmVudHMva2FuYmFuLWl0ZW0va2FuYmFuLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUc5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU9oRTtJQWdCRSw2QkFDbUIsbUJBQXVDO1FBQXZDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFabkQsYUFBUSxHQUFHLEtBQUssQ0FBQztJQWFwQixDQUFDO0lBRUUsOENBQWdCLEdBQXZCLFVBQXdCLEtBQVU7UUFDaEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pEO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQzs7Z0JBVHVDLGtCQUFrQjs7SUFmMUQ7UUFEQyxLQUFLLEVBQUU7cURBQ2dCO0lBR3hCO1FBREMsS0FBSyxFQUFFO3lEQUNnQjtJQUd4QjtRQURDLEtBQUssRUFBRTsrREFDZ0M7SUFHeEM7UUFEQyxLQUFLLEVBQUU7NkRBQzhCO0lBR3RDO1FBREMsS0FBSyxFQUFFOytEQUNnQztJQWQ3QixtQkFBbUI7UUFML0IsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGVBQWU7WUFDekIsOCtDQUEyQzs7U0FFNUMsQ0FBQztPQUNXLG1CQUFtQixDQTJCL0I7SUFBRCwwQkFBQztDQUFBLEFBM0JELElBMkJDO1NBM0JZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEthbmJhbkl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgS2FuYmFuRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4va2FuYmFuLWV2ZW50LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLWthbmJhbi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6IFwiLi9rYW5iYW4taXRlbS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4va2FuYmFuLWl0ZW0uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkl0ZW1Db21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbTogS2FuYmFuSXRlbTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGJvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfa2FuYmFuRXZlbnRTZXJ2aWNlOiBLYW5iYW5FdmVudFNlcnZpY2UsXG4gICkgeyB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWRDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fa2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRTZWxlY3RJdGVtRXZlbnQodGhpcy5pdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fa2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRVbnNlbGVjdEl0ZW1FdmVudCh0aGlzLml0ZW0pO1xuICAgIH1cbiAgfVxufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMva2FuYmFuL2NvbXBvbmVudHMva2FuYmFuLWl0ZW0va2FuYmFuLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFHdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEU7SUFtQkksNkJBQTZCLG1CQUF1QztRQUF2Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBZDdELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsaUJBQVksR0FBRyxJQUFJLENBQUM7SUFXNEMsQ0FBQztJQUVqRSxzQ0FBUSxHQUFmO1FBQ0ksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLDhDQUFnQixHQUF2QixVQUF3QixLQUFVO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzRDthQUFNO1lBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDtJQUNMLENBQUM7SUFFTyxrREFBb0IsR0FBNUI7UUFBQSxpQkFXQztRQVZHLElBQU0sT0FBTyxHQUF1QixFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQUMsTUFBd0I7WUFDakQsT0FBTyxDQUFDLElBQUksdUJBQ1AsTUFBTSxLQUNULE9BQU8sRUFBRSxjQUFRLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxJQUM1QyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQzs7Z0JBekJpRCxrQkFBa0I7O0lBakJwRTtRQURDLEtBQUssRUFBRTtxREFDZ0I7SUFHeEI7UUFEQyxLQUFLLEVBQUU7eURBQ2dCO0lBR3hCO1FBREMsS0FBSyxFQUFFOzZEQUNtQjtJQUczQjtRQURDLEtBQUssRUFBRTsrREFDZ0M7SUFHeEM7UUFEQyxLQUFLLEVBQUU7NkRBQzhCO0lBR3RDO1FBREMsS0FBSyxFQUFFOytEQUNnQztJQWpCL0IsbUJBQW1CO1FBTC9CLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLDZrREFBMkM7O1NBRTlDLENBQUM7T0FDVyxtQkFBbUIsQ0E2Qy9CO0lBQUQsMEJBQUM7Q0FBQSxBQTdDRCxJQTZDQztTQTdDWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgS2FuYmFuSXRlbSB9IGZyb20gXCIuLi8uLi9tb2RlbHNcIjtcbmltcG9ydCB7IEthbmJhbkV2ZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9rYW5iYW4tZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgS2FuYmFuSXRlbU9wdGlvbiB9IGZyb20gXCIuLi8uLi9tb2RlbHMva2FuYmFuLWRhdGFcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1rYW5iYW4taXRlbVwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4va2FuYmFuLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4va2FuYmFuLWl0ZW0uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW06IEthbmJhbkl0ZW07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0NoZWNrYm94ID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9rYW5iYW5FdmVudFNlcnZpY2U6IEthbmJhbkV2ZW50U2VydmljZSkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlVGllcmVkT3B0aW9ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdGVkQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFNlbGVjdEl0ZW1FdmVudCh0aGlzLml0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fa2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRVbnNlbGVjdEl0ZW1FdmVudCh0aGlzLml0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVGllcmVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogS2FuYmFuSXRlbU9wdGlvbltdID0gW107XG5cbiAgICAgICAgdGhpcy5pdGVtLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBLYW5iYW5JdGVtT3B0aW9uKSA9PiB7XG4gICAgICAgICAgb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IHsgb3B0aW9uLmNvbW1hbmQodGhpcy5pdGVtKSB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLml0ZW0ub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxufVxuIl19
@@ -1,14 +1,16 @@
1
1
  import { __assign, __decorate, __read, __spread } from "tslib";
2
- import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
3
- import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
4
- import { Subject } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
6
- import { TemplateDirective } from '../template/template.directive';
7
- import { KanbanEventService } from './kanban-event.service';
8
- import { KanbanTemplateTypes } from './models/index';
2
+ import { moveItemInArray, transferArrayItem } from "@angular/cdk/drag-drop";
3
+ import { Component, ContentChildren, EventEmitter, Input, Output, } from "@angular/core";
4
+ import { Subject } from "rxjs";
5
+ import { takeUntil } from "rxjs/operators";
6
+ import { TemplateDirective } from "../template/template.directive";
7
+ import { KanbanEventService } from "./kanban-event.service";
8
+ import { KanbanTemplateTypes } from "./models/index";
9
9
  var KanbanComponent = /** @class */ (function () {
10
10
  function KanbanComponent(kanbanEventService) {
11
11
  this.kanbanEventService = kanbanEventService;
12
+ this.showItemCheckboxes = true;
13
+ this.showColumnCheckboxes = true;
12
14
  this.itemsMoved = new EventEmitter();
13
15
  this.dataUpdated = new EventEmitter();
14
16
  this.itemsSelected = new EventEmitter();
@@ -68,6 +70,8 @@ var KanbanComponent = /** @class */ (function () {
68
70
  this.selectedItems.clear();
69
71
  };
70
72
  KanbanComponent.prototype.selectItem = function (event, item, column) {
73
+ if (item.disabled || item.frozen)
74
+ return;
71
75
  if (event.ctrlKey) {
72
76
  if (this.selectedItems.delete(item)) {
73
77
  this.kanbanEventService.emitUnselectItemEvent(item);
@@ -82,6 +86,8 @@ var KanbanComponent = /** @class */ (function () {
82
86
  }
83
87
  }
84
88
  else {
89
+ if (this.selectedItems.delete(item))
90
+ return;
85
91
  this.selectedItems.clear();
86
92
  this.selectedItems.add(item);
87
93
  this.selectedColumn = column;
@@ -98,9 +104,7 @@ var KanbanComponent = /** @class */ (function () {
98
104
  this.draggingItems.clear();
99
105
  };
100
106
  KanbanComponent.prototype.getLinkedColumns = function (currentColumn) {
101
- return this.data.columns
102
- .filter(function (column) { return column != currentColumn; })
103
- .map(function (column) { return column.id; });
107
+ return this.data.columns.filter(function (column) { return column != currentColumn; }).map(function (column) { return column.id; });
104
108
  };
105
109
  KanbanComponent.prototype.getColumnHeaderTemplate = function () {
106
110
  return this._getCustomTemplate(KanbanTemplateTypes.ColumnHeader);
@@ -127,7 +131,7 @@ var KanbanComponent = /** @class */ (function () {
127
131
  .pipe(takeUntil(this._unsubscribe$))
128
132
  .subscribe(function (column) {
129
133
  column.items
130
- .filter(function (item) { return !item.disabled; })
134
+ .filter(function (item) { return !item.disabled && !item.frozen; })
131
135
  .forEach(function (item) {
132
136
  _this.selectedItems.add(item);
133
137
  });
@@ -157,9 +161,7 @@ var KanbanComponent = /** @class */ (function () {
157
161
  });
158
162
  });
159
163
  });
160
- this.kanbanEventService.unselectItemEvent
161
- .pipe(takeUntil(this._unsubscribe$))
162
- .subscribe(function (item) {
164
+ this.kanbanEventService.unselectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(function (item) {
163
165
  _this.selectedItems.delete(item);
164
166
  });
165
167
  };
@@ -188,6 +190,12 @@ var KanbanComponent = /** @class */ (function () {
188
190
  __decorate([
189
191
  Input()
190
192
  ], KanbanComponent.prototype, "data", void 0);
193
+ __decorate([
194
+ Input()
195
+ ], KanbanComponent.prototype, "showItemCheckboxes", void 0);
196
+ __decorate([
197
+ Input()
198
+ ], KanbanComponent.prototype, "showColumnCheckboxes", void 0);
191
199
  __decorate([
192
200
  Output()
193
201
  ], KanbanComponent.prototype, "itemsMoved", void 0);
@@ -202,12 +210,12 @@ var KanbanComponent = /** @class */ (function () {
202
210
  ], KanbanComponent.prototype, "templates", void 0);
203
211
  KanbanComponent = __decorate([
204
212
  Component({
205
- selector: 's-kanban',
206
- 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>&nbsp;\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",
207
- 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%}"]
213
+ selector: "s-kanban",
214
+ template: "<div class=\"kanban\">\n <s-kanban-column\n *ngFor=\"let column of data.columns\"\n [data]=\"column\"\n [showCheckbox]=\"showColumnCheckboxes\"\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>&nbsp;\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 || item.frozen\"\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 [showCheckbox]=\"showItemCheckboxes\"\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",
215
+ styles: [".kanban{display:-ms-flexbox;display:flex;gap:16px;overflow:auto;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%}"]
208
216
  })
209
217
  ], KanbanComponent);
210
218
  return KanbanComponent;
211
219
  }());
212
220
  export { KanbanComponent };
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2thbmJhbi9rYW5iYW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFvQixTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFFckosT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUE2RCxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2hIO0lBMkJJLHlCQUNxQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXZCcEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBR3JELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUc3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBR2pELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFjLENBQUM7UUFRckMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBTXhDLENBQUM7SUFFRSxrQ0FBUSxHQUFmO1FBQ0ksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxD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LEFBNU9ELElBNE9DO1NBNU9ZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLYW5iYW5FdmVudFNlcnZpY2UgfSBmcm9tICcuL2thbmJhbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEthbmJhbkNvbHVtbiwgS2FuYmFuRGF0YSwgS2FuYmFuSXRlbSwgS2FuYmFuSXRlbU1vdmVkRGF0YSwgS2FuYmFuVGVtcGxhdGVUeXBlcyB9IGZyb20gJy4vbW9kZWxzL2luZGV4JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWthbmJhbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4va2FuYmFuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRhOiBLYW5iYW5EYXRhO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1zTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1Nb3ZlZERhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGF0YVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkRhdGE+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXRlbXNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8S2FuYmFuSXRlbVtdPigpO1xuXG4gICAgcHVibGljIHNlbGVjdGVkQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG4gICAgcHVibGljIGRyYWdnaW5nSXRlbXMgPSBuZXcgU2V0PEthbmJhbkl0ZW0+KCk7XG5cbiAgICBwdWJsaWMgY29sdW1uSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGl0ZW1Cb2R5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGl0ZW1Gb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBrYW5iYW5FdmVudFNlcnZpY2U6IEthbmJhbkV2ZW50U2VydmljZSxcbiAgICApIHsgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXplRGF0YSgpO1xuICAgICAgICB0aGlzLl92YWxpZGF0ZUlucHV0cygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5fZ2V0VGVtcGxhdGVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8S2FuYmFuSXRlbVtdPik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2aW91c0NvbHVtbiA9IHRoaXMuZGF0YS5jb2x1bW5zLmZpbmQoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Q29sdW1uID0gdGhpcy5kYXRhLmNvbHVtbnMuZmluZCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCA9PT0gZXZlbnQuY29udGFpbmVyLmlkKTtcblxuICAgICAgICBpZiAoIXByZXZpb3VzQ29sdW1uIHx8ICF0YXJnZXRDb2x1bW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgY29sdW1ucyB3aGVuIHBlcmZvcm1pbmcgZHJhZyBhbmQgZHJvcFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSAtMSAmJiBpdGVtICE9PSBldmVudC5pdGVtLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChldmVudC5pdGVtLmRhdGEpO1xuXG4gICAgICAgIHRoaXMuaXRlbXNNb3ZlZC5lbWl0KHtcbiAgICAgICAgICAgIGl0ZW1zOiBbLi4udGhpcy5zZWxlY3RlZEl0ZW1zXSxcbiAgICAgICAgICAgIHByZXZpb3VzQ29sdW1uLFxuICAgICAgICAgICAgdGFyZ2V0Q29sdW1uLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5kYXRhVXBkYXRlZC5vYnNlcnZlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhVXBkYXRlZC5lbWl0KHsgLi4udGhpcy5kYXRhIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRVbnNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnQoY29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RJdGVtKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBLYW5iYW5JdGVtLCBjb2x1bW46IEthbmJhbkNvbHVtbik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5kZWxldGUoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0VW5zZWxlY3RJdGVtRXZlbnQoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1uICYmICF0aGlzLnNlbGVjdGVkQ29sdW1uLml0ZW1zLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLmVtaXRTZWxlY3RJdGVtRXZlbnQoaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZHJhZ1N0YXJ0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJhZ1JlbGVhc2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyYWdnaW5nSXRlbXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGlua2VkQ29sdW1ucyhjdXJyZW50Q29sdW1uOiBLYW5iYW5Db2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5jb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uICE9IGN1cnJlbnRDb2x1bW4pXG4gICAgICAgICAgICAubWFwKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkhlYWRlcilcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uRW1wdHlNZXNzYWdlVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkVtcHR5TWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1IZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVRlbXBsYXRlKEthbmJhblRlbXBsYXRlVHlwZXMuSXRlbUhlYWRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1Cb2R5VGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkl0ZW1Cb2R5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5JdGVtRm9vdGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRDdXN0b21UZW1wbGF0ZSh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlOiBUZW1wbGF0ZURpcmVjdGl2ZSkgPT4gdGVtcGxhdGUudHlwZSA9PT0gdHlwZSk/LnRlbXBsYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3N1YnNjcmliZUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2Uuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtOiBLYW5iYW5JdGVtKSA9PiAhaXRlbS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGl0ZW06IEthbmJhbkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UudW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW4gJiYgIXRoaXMuc2VsZWN0ZWRDb2x1bW4uaXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuXG4gICAgICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgaXRlbSBjb2x1bW4gYW5kIHNldHRpbmcgc2VsZWN0ZWRDb2x1bW4uXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLml0ZW1zLmZvckVhY2goKGN1cnJlbnRJdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS51bnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmRlbGV0ZShpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uaWQgPSBjb2x1bW4uaWQgfHwgYGlkLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfWA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCk7XG5cbiAgICAgICAgaWYgKG5ldyBTZXQoY29sdW1uSWRzKS5zaXplICE9PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVwZWF0ZWQgSURzIGFyZSBub3QgYWNjZXB0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkhlYWRlclRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1IZWFkZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUhlYWRlclRlbXBsYXRlKCk7XG4gICAgICAgIHRoaXMuaXRlbUJvZHlUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUJvZHlUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1Gb290ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk7XG4gICAgfVxufVxuIl19
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2thbmJhbi9rYW5iYW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUVILFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBR1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUE2RCxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2hIO0lBaUNJLHlCQUE2QixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQTVCNUQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRzFCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUc1QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFHckQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBRzdDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFHakQsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBYyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztRQVFyQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFJMEIsQ0FBQztJQUVoRSxrQ0FBUSxHQUFmO1FBQ0ks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RUFBRTtpRUFDMkI7SUFHbkM7UUFEQyxNQUFNLEVBQUU7dURBQ21EO0lBRzVEO1FBREMsTUFBTSxFQUFFO3dEQUMyQztJQUdwRDtRQURDLE1BQU0sRUFBRTswREFDK0M7SUFjcEI7UUFBbkMsZUFBZSxDQUFDLGlCQUFpQixDQUFDO3NEQUF5QztJQS9CbkUsZUFBZTtRQUwzQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsVUFBVTtZQUNwQixpbEZBQXNDOztTQUV6QyxDQUFDO09BQ1csZUFBZSxDQThOM0I7SUFBRCxzQkFBQztDQUFBLEFBOU5ELElBOE5DO1NBOU5ZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IEthbmJhbkV2ZW50U2VydmljZSB9IGZyb20gXCIuL2thbmJhbi1ldmVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBLYW5iYW5Db2x1bW4sIEthbmJhbkRhdGEsIEthbmJhbkl0ZW0sIEthbmJhbkl0ZW1Nb3ZlZERhdGEsIEthbmJhblRlbXBsYXRlVHlwZXMgfSBmcm9tIFwiLi9tb2RlbHMvaW5kZXhcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1rYW5iYW5cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2thbmJhbi5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9rYW5iYW4uY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEthbmJhbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRhOiBLYW5iYW5EYXRhO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0l0ZW1DaGVja2JveGVzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dDb2x1bW5DaGVja2JveGVzID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpdGVtc01vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5JdGVtTW92ZWREYXRhPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGFVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxLYW5iYW5EYXRhPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1zU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEthbmJhbkl0ZW1bXT4oKTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZENvbHVtbjogS2FuYmFuQ29sdW1uO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gbmV3IFNldDxLYW5iYW5JdGVtPigpO1xuICAgIHB1YmxpYyBkcmFnZ2luZ0l0ZW1zID0gbmV3IFNldDxLYW5iYW5JdGVtPigpO1xuXG4gICAgcHVibGljIGNvbHVtbkhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBjb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwdWJsaWMgaXRlbUhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtQm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBpdGVtRm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIF91bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBrYW5iYW5FdmVudFNlcnZpY2U6IEthbmJhbkV2ZW50U2VydmljZSkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6ZURhdGEoKTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuX2dldFRlbXBsYXRlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEthbmJhbkl0ZW1bXT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW4gPSB0aGlzLmRhdGEuY29sdW1ucy5maW5kKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkID09PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCk7XG4gICAgICAgIGNvbnN0IHRhcmdldENvbHVtbiA9IHRoaXMuZGF0YS5jb2x1bW5zLmZpbmQoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGV2ZW50LmNvbnRhaW5lci5pZCk7XG5cbiAgICAgICAgaWYgKCFwcmV2aW91c0NvbHVtbiB8fCAhdGFyZ2V0Q29sdW1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbnMgd2hlbiBwZXJmb3JtaW5nIGRyYWcgYW5kIGRyb3BcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ICE9PSAtMSAmJiBpdGVtICE9PSBldmVudC5pdGVtLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIHByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIHByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGV2ZW50Lml0ZW0uZGF0YSk7XG5cbiAgICAgICAgdGhpcy5pdGVtc01vdmVkLmVtaXQoe1xuICAgICAgICAgICAgaXRlbXM6IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdLFxuICAgICAgICAgICAgcHJldmlvdXNDb2x1bW4sXG4gICAgICAgICAgICB0YXJnZXRDb2x1bW4sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmRhdGFVcGRhdGVkLm9ic2VydmVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFVcGRhdGVkLmVtaXQoeyAuLi50aGlzLmRhdGEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGEuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFVuc2VsZWN0QWxsQ29sdW1uSXRlbXNFdmVudChjb2x1bW4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEl0ZW0oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEthbmJhbkl0ZW0sIGNvbHVtbjogS2FuYmFuQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkIHx8IGl0ZW0uZnJvemVuKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuZGVsZXRlKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFVuc2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbHVtbiAmJiAhdGhpcy5zZWxlY3RlZENvbHVtbi5pdGVtcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UuZW1pdFNlbGVjdEl0ZW1FdmVudChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMuZGVsZXRlKGl0ZW0pKSByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmFkZChpdGVtKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS5lbWl0U2VsZWN0SXRlbUV2ZW50KGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRyYWdTdGFydGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZ0l0ZW1zLmFkZChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRyYWdSZWxlYXNlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZ0l0ZW1zLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpbmtlZENvbHVtbnMoY3VycmVudENvbHVtbjogS2FuYmFuQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuY29sdW1ucy5maWx0ZXIoKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiBjb2x1bW4gIT0gY3VycmVudENvbHVtbikubWFwKChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gY29sdW1uLmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkNvbHVtbkhlYWRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5Db2x1bW5FbXB0eU1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtSGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21UZW1wbGF0ZShLYW5iYW5UZW1wbGF0ZVR5cGVzLkl0ZW1IZWFkZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtQm9keVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVGVtcGxhdGUoS2FuYmFuVGVtcGxhdGVUeXBlcy5JdGVtQm9keSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1Gb290ZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVRlbXBsYXRlKEthbmJhblRlbXBsYXRlVHlwZXMuSXRlbUZvb3Rlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q3VzdG9tVGVtcGxhdGUodHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcy5maW5kKCh0ZW1wbGF0ZTogVGVtcGxhdGVEaXJlY3RpdmUpID0+IHRlbXBsYXRlLnR5cGUgPT09IHR5cGUpPy50ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEFsbENvbHVtbkl0ZW1zRXZlbnRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgIGNvbHVtbi5pdGVtc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IEthbmJhbkl0ZW0pID0+ICFpdGVtLmRpc2FibGVkICYmICFpdGVtLmZyb3plbilcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoaXRlbTogS2FuYmFuSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuYWRkKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNTZWxlY3RlZC5lbWl0KFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5rYW5iYW5FdmVudFNlcnZpY2UudW5zZWxlY3RBbGxDb2x1bW5JdGVtc0V2ZW50XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2FuYmFuRXZlbnRTZXJ2aWNlLnNlbGVjdEl0ZW1FdmVudFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW4gJiYgIXRoaXMuc2VsZWN0ZWRDb2x1bW4uaXRlbXMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc1NlbGVjdGVkLmVtaXQoWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10pO1xuXG4gICAgICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgaXRlbSBjb2x1bW4gYW5kIHNldHRpbmcgc2VsZWN0ZWRDb2x1bW4uXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLml0ZW1zLmZvckVhY2goKGN1cnJlbnRJdGVtOiBLYW5iYW5JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1uID0gY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmthbmJhbkV2ZW50U2VydmljZS51bnNlbGVjdEl0ZW1FdmVudC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGl0ZW06IEthbmJhbkl0ZW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5kZWxldGUoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogS2FuYmFuQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICBjb2x1bW4uaWQgPSBjb2x1bW4uaWQgfHwgYGlkLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfWA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkcyA9IHRoaXMuZGF0YS5jb2x1bW5zLm1hcCgoY29sdW1uOiBLYW5iYW5Db2x1bW4pID0+IGNvbHVtbi5pZCk7XG5cbiAgICAgICAgaWYgKG5ldyBTZXQoY29sdW1uSWRzKS5zaXplICE9PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVwZWF0ZWQgSURzIGFyZSBub3QgYWNjZXB0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkhlYWRlclRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmNvbHVtbkVtcHR5TWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRDb2x1bW5FbXB0eU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1IZWFkZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUhlYWRlclRlbXBsYXRlKCk7XG4gICAgICAgIHRoaXMuaXRlbUJvZHlUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUJvZHlUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLml0ZW1Gb290ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0SXRlbUZvb3RlclRlbXBsYXRlKCk7XG4gICAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export { KanbanTemplateTypes } from "./kanban-template-types";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgS2FuYmFuRGF0YSwgS2FuYmFuQ29sdW1uLCBLYW5iYW5JdGVtLCBLYW5iYW5JdGVtTW92ZWREYXRhIH0gZnJvbSBcIi4va2FuYmFuLWRhdGFcIjtcbmV4cG9ydCB7IEthbmJhblRlbXBsYXRlVHlwZXMgfSBmcm9tIFwiLi9rYW5iYW4tdGVtcGxhdGUtdHlwZXNcIjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgS2FuYmFuRGF0YSwgS2FuYmFuQ29sdW1uLCBLYW5iYW5JdGVtLCBLYW5iYW5JdGVtTW92ZWREYXRhLCBLYW5iYW5JdGVtT3B0aW9uIH0gZnJvbSBcIi4va2FuYmFuLWRhdGFcIjtcbmV4cG9ydCB7IEthbmJhblRlbXBsYXRlVHlwZXMgfSBmcm9tIFwiLi9rYW5iYW4tdGVtcGxhdGUtdHlwZXNcIjtcbiJdfQ==
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2thbmJhbi1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaWVyZWRNZW51SXRlbURhdGEgfSBmcm9tIFwiLi4vLi4vdGllcmVkLW1lbnUvbW9kZWxzL3RpZXJlZC1tZW51LWl0ZW0tZGF0YVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkRhdGEge1xuICAgIGNvbHVtbnM6IEthbmJhbkNvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdO1xuICAgIG9wdGlvbnM/OiBUaWVyZWRNZW51SXRlbURhdGFbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtIHtcbiAgICBvcHRpb25zPzogVGllcmVkTWVudUl0ZW1EYXRhW107XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtTW92ZWREYXRhIHtcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdLFxuICAgIHByZXZpb3VzQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gICAgdGFyZ2V0Q29sdW1uOiBLYW5iYW5Db2x1bW47XG59XG4iXX0=
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9rYW5iYW4vbW9kZWxzL2thbmJhbi1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaWVyZWRNZW51SXRlbURhdGEgfSBmcm9tIFwiLi4vLi4vdGllcmVkLW1lbnUvbW9kZWxzL3RpZXJlZC1tZW51LWl0ZW0tZGF0YVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkRhdGEge1xuICAgIGNvbHVtbnM6IEthbmJhbkNvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbiB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdO1xuICAgIG9wdGlvbnM/OiBLYW5iYW5Db2x1bW5PcHRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtIHtcbiAgICBvcHRpb25zPzogS2FuYmFuSXRlbU9wdGlvbltdO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBmcm96ZW4/OiBib29sZWFuO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtTW92ZWREYXRhIHtcbiAgICBpdGVtczogS2FuYmFuSXRlbVtdLFxuICAgIHByZXZpb3VzQ29sdW1uOiBLYW5iYW5Db2x1bW47XG4gICAgdGFyZ2V0Q29sdW1uOiBLYW5iYW5Db2x1bW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2FuYmFuQ29sdW1uT3B0aW9uIGV4dGVuZHMgT21pdDxUaWVyZWRNZW51SXRlbURhdGEsICdjb21tYW5kJz4ge1xuICAgIGNvbW1hbmQ6IChjb2x1bW46IEthbmJhbkNvbHVtbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5JdGVtT3B0aW9uIGV4dGVuZHMgT21pdDxUaWVyZWRNZW51SXRlbURhdGEsICdjb21tYW5kJz4ge1xuICAgIGNvbW1hbmQ6IChpdGVtOiBLYW5iYW5JdGVtKSA9PiB2b2lkO1xufVxuIl19
@@ -13547,6 +13547,8 @@ var KanbanTemplateTypes;
13547
13547
  let KanbanComponent = class KanbanComponent {
13548
13548
  constructor(kanbanEventService) {
13549
13549
  this.kanbanEventService = kanbanEventService;
13550
+ this.showItemCheckboxes = true;
13551
+ this.showColumnCheckboxes = true;
13550
13552
  this.itemsMoved = new EventEmitter();
13551
13553
  this.dataUpdated = new EventEmitter();
13552
13554
  this.itemsSelected = new EventEmitter();
@@ -13605,6 +13607,8 @@ let KanbanComponent = class KanbanComponent {
13605
13607
  this.selectedItems.clear();
13606
13608
  }
13607
13609
  selectItem(event, item, column) {
13610
+ if (item.disabled || item.frozen)
13611
+ return;
13608
13612
  if (event.ctrlKey) {
13609
13613
  if (this.selectedItems.delete(item)) {
13610
13614
  this.kanbanEventService.emitUnselectItemEvent(item);
@@ -13619,6 +13623,8 @@ let KanbanComponent = class KanbanComponent {
13619
13623
  }
13620
13624
  }
13621
13625
  else {
13626
+ if (this.selectedItems.delete(item))
13627
+ return;
13622
13628
  this.selectedItems.clear();
13623
13629
  this.selectedItems.add(item);
13624
13630
  this.selectedColumn = column;
@@ -13634,9 +13640,7 @@ let KanbanComponent = class KanbanComponent {
13634
13640
  this.draggingItems.clear();
13635
13641
  }
13636
13642
  getLinkedColumns(currentColumn) {
13637
- return this.data.columns
13638
- .filter((column) => column != currentColumn)
13639
- .map((column) => column.id);
13643
+ return this.data.columns.filter((column) => column != currentColumn).map((column) => column.id);
13640
13644
  }
13641
13645
  getColumnHeaderTemplate() {
13642
13646
  return this._getCustomTemplate(KanbanTemplateTypes.ColumnHeader);
@@ -13662,7 +13666,7 @@ let KanbanComponent = class KanbanComponent {
13662
13666
  .pipe(takeUntil(this._unsubscribe$))
13663
13667
  .subscribe((column) => {
13664
13668
  column.items
13665
- .filter((item) => !item.disabled)
13669
+ .filter((item) => !item.disabled && !item.frozen)
13666
13670
  .forEach((item) => {
13667
13671
  this.selectedItems.add(item);
13668
13672
  });
@@ -13692,9 +13696,7 @@ let KanbanComponent = class KanbanComponent {
13692
13696
  });
13693
13697
  });
13694
13698
  });
13695
- this.kanbanEventService.unselectItemEvent
13696
- .pipe(takeUntil(this._unsubscribe$))
13697
- .subscribe((item) => {
13699
+ this.kanbanEventService.unselectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe((item) => {
13698
13700
  this.selectedItems.delete(item);
13699
13701
  });
13700
13702
  }
@@ -13724,6 +13726,12 @@ KanbanComponent.ctorParameters = () => [
13724
13726
  __decorate([
13725
13727
  Input()
13726
13728
  ], KanbanComponent.prototype, "data", void 0);
13729
+ __decorate([
13730
+ Input()
13731
+ ], KanbanComponent.prototype, "showItemCheckboxes", void 0);
13732
+ __decorate([
13733
+ Input()
13734
+ ], KanbanComponent.prototype, "showColumnCheckboxes", void 0);
13727
13735
  __decorate([
13728
13736
  Output()
13729
13737
  ], KanbanComponent.prototype, "itemsMoved", void 0);
@@ -13738,26 +13746,35 @@ __decorate([
13738
13746
  ], KanbanComponent.prototype, "templates", void 0);
13739
13747
  KanbanComponent = __decorate([
13740
13748
  Component({
13741
- selector: 's-kanban',
13742
- 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>&nbsp;\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",
13743
- 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%}"]
13749
+ selector: "s-kanban",
13750
+ template: "<div class=\"kanban\">\n <s-kanban-column\n *ngFor=\"let column of data.columns\"\n [data]=\"column\"\n [showCheckbox]=\"showColumnCheckboxes\"\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>&nbsp;\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 || item.frozen\"\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 [showCheckbox]=\"showItemCheckboxes\"\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",
13751
+ styles: [".kanban{display:-ms-flexbox;display:flex;gap:16px;overflow:auto;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%}"]
13744
13752
  })
13745
13753
  ], KanbanComponent);
13746
13754
 
13747
13755
  let KanbanColumnComponent = class KanbanColumnComponent {
13748
13756
  constructor(kanbanEventService) {
13749
13757
  this.kanbanEventService = kanbanEventService;
13758
+ this.showCheckbox = true;
13750
13759
  this.selectionControl = new FormControl(false);
13751
13760
  this._unsubscribe$ = new Subject();
13752
13761
  }
13753
13762
  ngOnInit() {
13754
13763
  this._validateInputs();
13755
13764
  this._subscriveEvents();
13765
+ this._createTieredOptions();
13756
13766
  }
13757
13767
  ngOnDestroy() {
13758
13768
  this._unsubscribe$.next();
13759
13769
  this._unsubscribe$.complete();
13760
13770
  }
13771
+ _createTieredOptions() {
13772
+ const options = [];
13773
+ this.data.options.forEach((option) => {
13774
+ options.push(Object.assign(Object.assign({}, option), { command: () => { option.command(this.data); } }));
13775
+ });
13776
+ this.data.options = options;
13777
+ }
13761
13778
  _subscriveEvents() {
13762
13779
  this.selectionControl.valueChanges
13763
13780
  .pipe(takeUntil(this._unsubscribe$))
@@ -13808,13 +13825,16 @@ KanbanColumnComponent.ctorParameters = () => [
13808
13825
  __decorate([
13809
13826
  Input()
13810
13827
  ], KanbanColumnComponent.prototype, "data", void 0);
13828
+ __decorate([
13829
+ Input()
13830
+ ], KanbanColumnComponent.prototype, "showCheckbox", void 0);
13811
13831
  __decorate([
13812
13832
  Input()
13813
13833
  ], KanbanColumnComponent.prototype, "headerTemplate", void 0);
13814
13834
  KanbanColumnComponent = __decorate([
13815
13835
  Component({
13816
13836
  selector: "s-kanban-column",
13817
- 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>",
13837
+ template: "<div class=\"kanban-column\">\n <div class=\"kanban-column__header\">\n <div class=\"content\">\n <form>\n <input\n *ngIf=\"showCheckbox\"\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>",
13818
13838
  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%}"]
13819
13839
  })
13820
13840
  ], KanbanColumnComponent);
@@ -13839,6 +13859,10 @@ let KanbanItemComponent = class KanbanItemComponent {
13839
13859
  constructor(_kanbanEventService) {
13840
13860
  this._kanbanEventService = _kanbanEventService;
13841
13861
  this.selected = false;
13862
+ this.showCheckbox = true;
13863
+ }
13864
+ ngOnInit() {
13865
+ this._createTieredOptions();
13842
13866
  }
13843
13867
  onSelectedChange(value) {
13844
13868
  if (value) {
@@ -13848,6 +13872,13 @@ let KanbanItemComponent = class KanbanItemComponent {
13848
13872
  this._kanbanEventService.emitUnselectItemEvent(this.item);
13849
13873
  }
13850
13874
  }
13875
+ _createTieredOptions() {
13876
+ const options = [];
13877
+ this.item.options.forEach((option) => {
13878
+ options.push(Object.assign(Object.assign({}, option), { command: () => { option.command(this.item); } }));
13879
+ });
13880
+ this.item.options = options;
13881
+ }
13851
13882
  };
13852
13883
  KanbanItemComponent.ctorParameters = () => [
13853
13884
  { type: KanbanEventService }
@@ -13858,6 +13889,9 @@ __decorate([
13858
13889
  __decorate([
13859
13890
  Input()
13860
13891
  ], KanbanItemComponent.prototype, "selected", void 0);
13892
+ __decorate([
13893
+ Input()
13894
+ ], KanbanItemComponent.prototype, "showCheckbox", void 0);
13861
13895
  __decorate([
13862
13896
  Input()
13863
13897
  ], KanbanItemComponent.prototype, "headerTemplate", void 0);
@@ -13869,9 +13903,9 @@ __decorate([
13869
13903
  ], KanbanItemComponent.prototype, "footerTemplate", void 0);
13870
13904
  KanbanItemComponent = __decorate([
13871
13905
  Component({
13872
- selector: 's-kanban-item',
13873
- 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>",
13874
- 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%}"]
13906
+ selector: "s-kanban-item",
13907
+ 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 'kanban-item--frozen': !item.disabled && item.frozen\n }\">\n <div class=\"kanban-item__header\">\n <div class=\"content\">\n <form>\n <input\n *ngIf=\"showCheckbox && !item.disabled && !item.frozen\"\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>",
13908
+ 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%}.kanban-item--frozen{box-shadow:none}"]
13875
13909
  })
13876
13910
  ], KanbanItemComponent);
13877
13911