barsa-kanban 2.3.98 → 2.3.99
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.
|
@@ -192,8 +192,8 @@ class KanbanViewComponent extends ReportViewBaseComponent {
|
|
|
192
192
|
}
|
|
193
193
|
ngOnInit() {
|
|
194
194
|
super.ngOnInit();
|
|
195
|
-
const columnsReport = this.viewSetting.ColumnsReport
|
|
196
|
-
this._portalService.
|
|
195
|
+
const columnsReport = this.viewSetting.ColumnsReport;
|
|
196
|
+
this._portalService.ReportExecuteById(columnsReport?.Id).subscribe((report) => {
|
|
197
197
|
this.kanbanColumns = report.MoDataList;
|
|
198
198
|
this._changeDetect();
|
|
199
199
|
});
|
|
@@ -426,11 +426,11 @@ class KanbanViewComponent extends ReportViewBaseComponent {
|
|
|
426
426
|
return columns;
|
|
427
427
|
}
|
|
428
428
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: KanbanViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
429
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: KanbanViewComponent, isStandalone: false, selector: "bk-kanban-view", inputs: { kanbanColumns: "kanbanColumns", groupbyProperty: "groupbyProperty" }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-layout-panel>\r\n <fd-layout-panel-body [bleed]=\"true\">\r\n @if (isCheckList) {\r\n <table fd-table>\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n >{{ 'All' | bbbTranslate }}</fd-checkbox\r\n >\r\n </th>\r\n </tr>\r\n </thead>\r\n </table>\r\n }\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<fd-layout-grid\r\n class=\"columns\"\r\n fillEmptySpace\r\n [setMinHeight]=\"true\"\r\n [disable]=\"true\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"kanbanColumns\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [id]=\"'$Root'\"\r\n (cdkDropListDropped)=\"onDrop($event, true)\"\r\n>\r\n @for (column of kanbanColumns; track column; let columnIndex = $index) {\r\n <div\r\n [fdLayoutGridCol]=\"12\"\r\n [colMd]=\"4\"\r\n [colLg]=\"3\"\r\n [colXl]=\"2\"\r\n class=\"column\"\r\n [id]=\"column.Id\"\r\n [attr.state]=\"column.$Caption\"\r\n cdkDrag\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnCard;\r\n context: {\r\n column: column,\r\n columnIndex: columnIndex\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n</fd-layout-grid>\r\n\r\n<!--noData-->\r\n\r\n<!--column card-->\r\n<ng-template #columnCard let-column=\"column\" let-columnIndex=\"columnIndex\">\r\n <fd-card cardType=\"quickView\" class=\"docs-flex-item-margin\" ellipsify>\r\n <fd-card-header>\r\n <fd-card-main-header [style.background]=\"column.Color\" [class.hasColumnColor]=\"column.Color\">\r\n <h2 fd-card-title>{{ column.$Caption }}</h2>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content\r\n cdkDropList\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [cdkDropListData]=\"moDataList\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnMoList;\r\n context: { $implicit: groupedMoList()[column.$Caption], column: column }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-card-content>\r\n <!-- <fd-card-footer class=\"column-footer\">\r\n @if (newCard[groupbyProperty] === column.$Caption) {\r\n <div class=\"new-card\">\r\n <fd-card>\r\n <div fd-form-item>\r\n <textarea\r\n fd-form-control\r\n [autofocus]=\"true\"\r\n [(ngModel)]=\"newCard.$Caption\"\r\n (keydown.enter)=\"onAddNewCard($event)\"\r\n (focusout)=\"onNewCardInputFocusout()\"\r\n [placeholder]=\"'Title' | bbbTranslate\"\r\n ></textarea>\r\n </div>\r\n </fd-card>\r\n <div class=\"new-card-actions\">\r\n <button\r\n fd-button\r\n (click)=\"onAddNewCard($event)\"\r\n fdType=\"emphasized\"\r\n class=\"add-card-btn\"\r\n [label]=\"'\u0627\u0641\u0632\u0648\u062F\u0646'\"\r\n ></button>\r\n <fd-icon (mousedown)=\"onCancelNewCard($event)\" glyph=\"decline\"></fd-icon>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"add-new-card\" (click)=\"onInitNewCard(column.$Caption)\">\r\n <span>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n \u06A9\u0627\u0631\u062A \u062C\u062F\u06CC\u062F\r\n </span>\r\n </div>\r\n }\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</ng-template>\r\n\r\n<ng-template #columnMoList let-moList let-column=\"column\">\r\n @if(moList && moList.length>0){ @for (mo of moList; track mo; let index = $index) {\r\n <bk-kanban-card\r\n [mo]=\"mo\"\r\n [allColumns]=\"columns\"\r\n [viewSetting]=\"viewSetting\"\r\n [formSetting]=\"formSetting\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [allAvailableAssignees]=\"allAvailableAssignees\"\r\n [index]=\"index\"\r\n [attr.id]=\"mo.Id\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [attr.state]=\"column.$Caption\"\r\n [attr.index]=\"index\"\r\n [class.selected]=\"mo.$IsChecked\"\r\n (cdkDragMoved)=\"onDragMove($event, mo, index, column)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n (dblclick)=\"onRowClick({mo, index})\"\r\n cdkDrag\r\n >\r\n </bk-kanban-card>\r\n } }@else{\r\n\r\n <h3 fd-title>{{ 'NoData' | bbbTranslate }}</h3>\r\n }\r\n</ng-template>\r\n", styles: ["fd-card-main-header.hasColumnColor{display:block}fd-card-main-header.hasColumnColor ::ng-deep .fd-card__header-main{background-color:transparent}figure{padding:0!important}figure ::ng-deep svg{margin:0}::-webkit-scrollbar{height:7px;width:7px}::-webkit-scrollbar-track{box-shadow:inset 0 0 2px #d0cece;border-radius:10px}::-webkit-scrollbar-thumb{background:#c8cacb;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#adb0b2}.columns{height:inherit;width:100%;column-gap:15px;flex-wrap:nowrap!important}.column{height:100%}.column.cdk-drag-placeholder{opacity:0}.column>fd-card{overflow-y:hidden;height:100%}.column>fd-card fd-card-content{flex:1;overflow-y:auto;padding:1rem .5rem;margin:0;display:flex;flex-direction:column;row-gap:1rem}.column>fd-card .column-footer{padding:1rem 1rem 1rem 1.5rem;position:sticky}.column>fd-card .column-footer .new-card{display:flex;flex-direction:column;justify-content:center;row-gap:1rem}.column>fd-card .column-footer .new-card fd-card{padding:0 1rem;background:var(--sapBackgroundColor, #f7f7f7)!important}.column>fd-card .column-footer .new-card textarea{background:var(--sapBackgroundColor, #f7f7f7)!important;border:none}.column>fd-card .column-footer .new-card span{height:auto!important}.column>fd-card .column-footer .new-card .new-card-actions{display:flex;align-items:center;column-gap:10px}.column>fd-card .column-footer .new-card .new-card-actions fd-icon{font-size:1rem}.column>fd-card .column-footer .add-new-card{padding:0 1rem}.column>fd-card .column-footer .add-new-card span{display:flex;column-gap:4px}.newColumn{background-color:var(--sapList_Background, #fff)!important;border-radius:var(--sapElement_BorderCornerRadius, .25rem);align-self:flex-start;height:100px;opacity:.5;display:flex;align-items:center;justify-content:center;border:1px dashed;position:relative;cursor:pointer}.newColumn span{position:absolute}.newColumn .new-column-popover{width:100%}.newColumn .new-column-popover fd-popover-control{width:100%;height:1px}.new-column-popover-body input{border:none}.row{display:flex;align-items:center}.drop-inside{border:1px solid #00f}.drop-inside ::ng-deep .fd-list__item{background-color:#dce9f6!important}.drop-before{border-top:2px solid #00f}.drop-before ::ng-deep .fd-list__item{background-color:#dce9f6!important}.drop-after{border-bottom:2px solid #00f}.drop-after ::ng-deep .fd-list__item{background-color:#dce9f6!important}.columns.cdk-drop-list-dragging .column:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4$1.EllipsifyDirective, selector: "[ellipsify]", inputs: ["limitLine"] }, { kind: "directive", type: i4$1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i2$1.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i2$1.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i2$1.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i2$1.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i2$1.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "component", type: i4$3.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i5$1.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$1.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i6$1.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage", "id", "transparent"] }, { kind: "component", type: i6$1.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i7.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i8.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: KanbanCardComponent, selector: "bk-kanban-card", inputs: ["index", "mo", "viewSetting", "allAvailableAssignees"] }, { kind: "pipe", type: i4$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
429
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: KanbanViewComponent, isStandalone: false, selector: "bk-kanban-view", inputs: { kanbanColumns: "kanbanColumns", groupbyProperty: "groupbyProperty" }, viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-layout-panel>\r\n <fd-layout-panel-body [bleed]=\"true\">\r\n @if (isCheckList) {\r\n <table fd-table>\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n >{{ 'All' | bbbTranslate }}</fd-checkbox\r\n >\r\n </th>\r\n </tr>\r\n </thead>\r\n </table>\r\n }\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<fd-layout-grid\r\n class=\"columns\"\r\n fillEmptySpace\r\n [setMinHeight]=\"true\"\r\n [disable]=\"true\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"kanbanColumns\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [id]=\"'$Root'\"\r\n (cdkDropListDropped)=\"onDrop($event, true)\"\r\n>\r\n @for (column of kanbanColumns; track column; let columnIndex = $index) {\r\n <div\r\n [fdLayoutGridCol]=\"12\"\r\n [colMd]=\"4\"\r\n [colLg]=\"3\"\r\n [colXl]=\"2\"\r\n class=\"column\"\r\n [id]=\"column.Id\"\r\n [attr.state]=\"column.$Caption\"\r\n cdkDrag\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnCard;\r\n context: {\r\n column: column,\r\n columnIndex: columnIndex\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n</fd-layout-grid>\r\n\r\n<!--noData-->\r\n\r\n<!--column card-->\r\n<ng-template #columnCard let-column=\"column\" let-columnIndex=\"columnIndex\">\r\n <fd-card cardType=\"quickView\" class=\"docs-flex-item-margin\" ellipsify>\r\n <fd-card-header>\r\n <fd-card-main-header [style.background]=\"column.Color\" [class.hasColumnColor]=\"column.Color\">\r\n <h2 fd-card-title>{{ column.$Caption }}</h2>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content\r\n cdkDropList\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [cdkDropListData]=\"moDataList\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnMoList;\r\n context: { $implicit: groupedMoList()[column.$Caption], column: column }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-card-content>\r\n <!-- <fd-card-footer class=\"column-footer\">\r\n @if (newCard[groupbyProperty] === column.$Caption) {\r\n <div class=\"new-card\">\r\n <fd-card>\r\n <div fd-form-item>\r\n <textarea\r\n fd-form-control\r\n [autofocus]=\"true\"\r\n [(ngModel)]=\"newCard.$Caption\"\r\n (keydown.enter)=\"onAddNewCard($event)\"\r\n (focusout)=\"onNewCardInputFocusout()\"\r\n [placeholder]=\"'Title' | bbbTranslate\"\r\n ></textarea>\r\n </div>\r\n </fd-card>\r\n <div class=\"new-card-actions\">\r\n <button\r\n fd-button\r\n (click)=\"onAddNewCard($event)\"\r\n fdType=\"emphasized\"\r\n class=\"add-card-btn\"\r\n [label]=\"'\u0627\u0641\u0632\u0648\u062F\u0646'\"\r\n ></button>\r\n <fd-icon (mousedown)=\"onCancelNewCard($event)\" glyph=\"decline\"></fd-icon>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"add-new-card\" (click)=\"onInitNewCard(column.$Caption)\">\r\n <span>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n \u06A9\u0627\u0631\u062A \u062C\u062F\u06CC\u062F\r\n </span>\r\n </div>\r\n }\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</ng-template>\r\n\r\n<ng-template #columnMoList let-moList let-column=\"column\">\r\n @if(moList && moList.length>0){ @for (mo of moList; track mo; let index = $index) {\r\n <bk-kanban-card\r\n [mo]=\"mo\"\r\n [allColumns]=\"columns\"\r\n [viewSetting]=\"viewSetting\"\r\n [formSetting]=\"formSetting\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [allAvailableAssignees]=\"allAvailableAssignees\"\r\n [index]=\"index\"\r\n [attr.id]=\"mo.Id\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [attr.state]=\"column.$Caption\"\r\n [attr.index]=\"index\"\r\n [class.selected]=\"mo.$IsChecked\"\r\n (cdkDragMoved)=\"onDragMove($event, mo, index, column)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n (dblclick)=\"onRowClick({mo, index})\"\r\n cdkDrag\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [cdkDragDisabled]=\"true\"\r\n >\r\n </bk-kanban-card>\r\n } }@else{\r\n <h3 fd-title>{{ 'NoData' | bbbTranslate }}</h3>\r\n }\r\n</ng-template>\r\n", styles: ["fd-card-main-header.hasColumnColor{display:block}fd-card-main-header.hasColumnColor ::ng-deep .fd-card__header-main{background-color:transparent}figure{padding:0!important}figure ::ng-deep svg{margin:0}::-webkit-scrollbar{height:7px;width:7px}::-webkit-scrollbar-track{box-shadow:inset 0 0 2px #d0cece;border-radius:10px}::-webkit-scrollbar-thumb{background:#c8cacb;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#adb0b2}.columns{height:inherit;width:100%;column-gap:15px;flex-wrap:nowrap!important}.column{height:100%}.column.cdk-drag-placeholder{opacity:0}.column>fd-card{overflow-y:hidden;height:100%}.column>fd-card fd-card-content{flex:1;overflow-y:auto;padding:1rem .5rem;margin:0;display:flex;flex-direction:column;row-gap:1rem}.column>fd-card .column-footer{padding:1rem 1rem 1rem 1.5rem;position:sticky}.column>fd-card .column-footer .new-card{display:flex;flex-direction:column;justify-content:center;row-gap:1rem}.column>fd-card .column-footer .new-card fd-card{padding:0 1rem;background:var(--sapBackgroundColor, #f7f7f7)!important}.column>fd-card .column-footer .new-card textarea{background:var(--sapBackgroundColor, #f7f7f7)!important;border:none}.column>fd-card .column-footer .new-card span{height:auto!important}.column>fd-card .column-footer .new-card .new-card-actions{display:flex;align-items:center;column-gap:10px}.column>fd-card .column-footer .new-card .new-card-actions fd-icon{font-size:1rem}.column>fd-card .column-footer .add-new-card{padding:0 1rem}.column>fd-card .column-footer .add-new-card span{display:flex;column-gap:4px}.newColumn{background-color:var(--sapList_Background, #fff)!important;border-radius:var(--sapElement_BorderCornerRadius, .25rem);align-self:flex-start;height:100px;opacity:.5;display:flex;align-items:center;justify-content:center;border:1px dashed;position:relative;cursor:pointer}.newColumn span{position:absolute}.newColumn .new-column-popover{width:100%}.newColumn .new-column-popover fd-popover-control{width:100%;height:1px}.new-column-popover-body input{border:none}.row{display:flex;align-items:center}.drop-inside{border:1px solid #00f}.drop-inside ::ng-deep .fd-list__item{background-color:#dce9f6!important}.drop-before{border-top:2px solid #00f}.drop-before ::ng-deep .fd-list__item{background-color:#dce9f6!important}.drop-after{border-bottom:2px solid #00f}.drop-after ::ng-deep .fd-list__item{background-color:#dce9f6!important}.columns.cdk-drop-list-dragging .column:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4$1.EllipsifyDirective, selector: "[ellipsify]", inputs: ["limitLine"] }, { kind: "directive", type: i4$1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i2$1.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i2$1.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i2$1.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i2$1.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i2$1.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "component", type: i4$3.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i5$1.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i5$1.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "component", type: i6$1.LayoutPanelComponent, selector: "fd-layout-panel", inputs: ["backgroundImage", "id", "transparent"] }, { kind: "component", type: i6$1.LayoutPanelBodyComponent, selector: "fd-layout-panel-body", inputs: ["bleed"] }, { kind: "component", type: i7.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i8.TableComponent, selector: "table[fd-table]", inputs: ["noBorderX", "noBorderY", "noOuterBorder", "topBorder", "popIn", "responsive", "keys", "allCellsFocusable"], exportAs: ["fd-table"] }, { kind: "directive", type: i8.TableHeaderDirective, selector: "[fdTableHeader], [fd-table-header]", inputs: ["noBorderX", "noBorderY", "nonInteractive"] }, { kind: "directive", type: i8.TableRowDirective, selector: "[fdTableRow], [fd-table-row]", inputs: ["activable", "highlightActive", "hoverable", "focusable", "main", "secondary", "active"] }, { kind: "directive", type: i8.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "nonInteractive", "key"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: KanbanCardComponent, selector: "bk-kanban-card", inputs: ["index", "mo", "viewSetting", "allAvailableAssignees"] }, { kind: "pipe", type: i4$1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
430
430
|
}
|
|
431
431
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: KanbanViewComponent, decorators: [{
|
|
432
432
|
type: Component,
|
|
433
|
-
args: [{ selector: 'bk-kanban-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-layout-panel>\r\n <fd-layout-panel-body [bleed]=\"true\">\r\n @if (isCheckList) {\r\n <table fd-table>\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n >{{ 'All' | bbbTranslate }}</fd-checkbox\r\n >\r\n </th>\r\n </tr>\r\n </thead>\r\n </table>\r\n }\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<fd-layout-grid\r\n class=\"columns\"\r\n fillEmptySpace\r\n [setMinHeight]=\"true\"\r\n [disable]=\"true\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"kanbanColumns\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [id]=\"'$Root'\"\r\n (cdkDropListDropped)=\"onDrop($event, true)\"\r\n>\r\n @for (column of kanbanColumns; track column; let columnIndex = $index) {\r\n <div\r\n [fdLayoutGridCol]=\"12\"\r\n [colMd]=\"4\"\r\n [colLg]=\"3\"\r\n [colXl]=\"2\"\r\n class=\"column\"\r\n [id]=\"column.Id\"\r\n [attr.state]=\"column.$Caption\"\r\n cdkDrag\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnCard;\r\n context: {\r\n column: column,\r\n columnIndex: columnIndex\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n</fd-layout-grid>\r\n\r\n<!--noData-->\r\n\r\n<!--column card-->\r\n<ng-template #columnCard let-column=\"column\" let-columnIndex=\"columnIndex\">\r\n <fd-card cardType=\"quickView\" class=\"docs-flex-item-margin\" ellipsify>\r\n <fd-card-header>\r\n <fd-card-main-header [style.background]=\"column.Color\" [class.hasColumnColor]=\"column.Color\">\r\n <h2 fd-card-title>{{ column.$Caption }}</h2>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content\r\n cdkDropList\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [cdkDropListData]=\"moDataList\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnMoList;\r\n context: { $implicit: groupedMoList()[column.$Caption], column: column }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-card-content>\r\n <!-- <fd-card-footer class=\"column-footer\">\r\n @if (newCard[groupbyProperty] === column.$Caption) {\r\n <div class=\"new-card\">\r\n <fd-card>\r\n <div fd-form-item>\r\n <textarea\r\n fd-form-control\r\n [autofocus]=\"true\"\r\n [(ngModel)]=\"newCard.$Caption\"\r\n (keydown.enter)=\"onAddNewCard($event)\"\r\n (focusout)=\"onNewCardInputFocusout()\"\r\n [placeholder]=\"'Title' | bbbTranslate\"\r\n ></textarea>\r\n </div>\r\n </fd-card>\r\n <div class=\"new-card-actions\">\r\n <button\r\n fd-button\r\n (click)=\"onAddNewCard($event)\"\r\n fdType=\"emphasized\"\r\n class=\"add-card-btn\"\r\n [label]=\"'\u0627\u0641\u0632\u0648\u062F\u0646'\"\r\n ></button>\r\n <fd-icon (mousedown)=\"onCancelNewCard($event)\" glyph=\"decline\"></fd-icon>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"add-new-card\" (click)=\"onInitNewCard(column.$Caption)\">\r\n <span>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n \u06A9\u0627\u0631\u062A \u062C\u062F\u06CC\u062F\r\n </span>\r\n </div>\r\n }\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</ng-template>\r\n\r\n<ng-template #columnMoList let-moList let-column=\"column\">\r\n @if(moList && moList.length>0){ @for (mo of moList; track mo; let index = $index) {\r\n <bk-kanban-card\r\n [mo]=\"mo\"\r\n [allColumns]=\"columns\"\r\n [viewSetting]=\"viewSetting\"\r\n [formSetting]=\"formSetting\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [allAvailableAssignees]=\"allAvailableAssignees\"\r\n [index]=\"index\"\r\n [attr.id]=\"mo.Id\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [attr.state]=\"column.$Caption\"\r\n [attr.index]=\"index\"\r\n [class.selected]=\"mo.$IsChecked\"\r\n (cdkDragMoved)=\"onDragMove($event, mo, index, column)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n (dblclick)=\"onRowClick({mo, index})\"\r\n cdkDrag\r\n >\r\n </bk-kanban-card>\r\n } }@else{\r\n
|
|
433
|
+
args: [{ selector: 'bk-kanban-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-layout-panel>\r\n <fd-layout-panel-body [bleed]=\"true\">\r\n @if (isCheckList) {\r\n <table fd-table>\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n >{{ 'All' | bbbTranslate }}</fd-checkbox\r\n >\r\n </th>\r\n </tr>\r\n </thead>\r\n </table>\r\n }\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<fd-layout-grid\r\n class=\"columns\"\r\n fillEmptySpace\r\n [setMinHeight]=\"true\"\r\n [disable]=\"true\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"kanbanColumns\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [id]=\"'$Root'\"\r\n (cdkDropListDropped)=\"onDrop($event, true)\"\r\n>\r\n @for (column of kanbanColumns; track column; let columnIndex = $index) {\r\n <div\r\n [fdLayoutGridCol]=\"12\"\r\n [colMd]=\"4\"\r\n [colLg]=\"3\"\r\n [colXl]=\"2\"\r\n class=\"column\"\r\n [id]=\"column.Id\"\r\n [attr.state]=\"column.$Caption\"\r\n cdkDrag\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnCard;\r\n context: {\r\n column: column,\r\n columnIndex: columnIndex\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n</fd-layout-grid>\r\n\r\n<!--noData-->\r\n\r\n<!--column card-->\r\n<ng-template #columnCard let-column=\"column\" let-columnIndex=\"columnIndex\">\r\n <fd-card cardType=\"quickView\" class=\"docs-flex-item-margin\" ellipsify>\r\n <fd-card-header>\r\n <fd-card-main-header [style.background]=\"column.Color\" [class.hasColumnColor]=\"column.Color\">\r\n <h2 fd-card-title>{{ column.$Caption }}</h2>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content\r\n cdkDropList\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [cdkDropListData]=\"moDataList\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnMoList;\r\n context: { $implicit: groupedMoList()[column.$Caption], column: column }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-card-content>\r\n <!-- <fd-card-footer class=\"column-footer\">\r\n @if (newCard[groupbyProperty] === column.$Caption) {\r\n <div class=\"new-card\">\r\n <fd-card>\r\n <div fd-form-item>\r\n <textarea\r\n fd-form-control\r\n [autofocus]=\"true\"\r\n [(ngModel)]=\"newCard.$Caption\"\r\n (keydown.enter)=\"onAddNewCard($event)\"\r\n (focusout)=\"onNewCardInputFocusout()\"\r\n [placeholder]=\"'Title' | bbbTranslate\"\r\n ></textarea>\r\n </div>\r\n </fd-card>\r\n <div class=\"new-card-actions\">\r\n <button\r\n fd-button\r\n (click)=\"onAddNewCard($event)\"\r\n fdType=\"emphasized\"\r\n class=\"add-card-btn\"\r\n [label]=\"'\u0627\u0641\u0632\u0648\u062F\u0646'\"\r\n ></button>\r\n <fd-icon (mousedown)=\"onCancelNewCard($event)\" glyph=\"decline\"></fd-icon>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"add-new-card\" (click)=\"onInitNewCard(column.$Caption)\">\r\n <span>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n \u06A9\u0627\u0631\u062A \u062C\u062F\u06CC\u062F\r\n </span>\r\n </div>\r\n }\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</ng-template>\r\n\r\n<ng-template #columnMoList let-moList let-column=\"column\">\r\n @if(moList && moList.length>0){ @for (mo of moList; track mo; let index = $index) {\r\n <bk-kanban-card\r\n [mo]=\"mo\"\r\n [allColumns]=\"columns\"\r\n [viewSetting]=\"viewSetting\"\r\n [formSetting]=\"formSetting\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [allAvailableAssignees]=\"allAvailableAssignees\"\r\n [index]=\"index\"\r\n [attr.id]=\"mo.Id\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [attr.state]=\"column.$Caption\"\r\n [attr.index]=\"index\"\r\n [class.selected]=\"mo.$IsChecked\"\r\n (cdkDragMoved)=\"onDragMove($event, mo, index, column)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n (dblclick)=\"onRowClick({mo, index})\"\r\n cdkDrag\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [cdkDragDisabled]=\"true\"\r\n >\r\n </bk-kanban-card>\r\n } }@else{\r\n <h3 fd-title>{{ 'NoData' | bbbTranslate }}</h3>\r\n }\r\n</ng-template>\r\n", styles: ["fd-card-main-header.hasColumnColor{display:block}fd-card-main-header.hasColumnColor ::ng-deep .fd-card__header-main{background-color:transparent}figure{padding:0!important}figure ::ng-deep svg{margin:0}::-webkit-scrollbar{height:7px;width:7px}::-webkit-scrollbar-track{box-shadow:inset 0 0 2px #d0cece;border-radius:10px}::-webkit-scrollbar-thumb{background:#c8cacb;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#adb0b2}.columns{height:inherit;width:100%;column-gap:15px;flex-wrap:nowrap!important}.column{height:100%}.column.cdk-drag-placeholder{opacity:0}.column>fd-card{overflow-y:hidden;height:100%}.column>fd-card fd-card-content{flex:1;overflow-y:auto;padding:1rem .5rem;margin:0;display:flex;flex-direction:column;row-gap:1rem}.column>fd-card .column-footer{padding:1rem 1rem 1rem 1.5rem;position:sticky}.column>fd-card .column-footer .new-card{display:flex;flex-direction:column;justify-content:center;row-gap:1rem}.column>fd-card .column-footer .new-card fd-card{padding:0 1rem;background:var(--sapBackgroundColor, #f7f7f7)!important}.column>fd-card .column-footer .new-card textarea{background:var(--sapBackgroundColor, #f7f7f7)!important;border:none}.column>fd-card .column-footer .new-card span{height:auto!important}.column>fd-card .column-footer .new-card .new-card-actions{display:flex;align-items:center;column-gap:10px}.column>fd-card .column-footer .new-card .new-card-actions fd-icon{font-size:1rem}.column>fd-card .column-footer .add-new-card{padding:0 1rem}.column>fd-card .column-footer .add-new-card span{display:flex;column-gap:4px}.newColumn{background-color:var(--sapList_Background, #fff)!important;border-radius:var(--sapElement_BorderCornerRadius, .25rem);align-self:flex-start;height:100px;opacity:.5;display:flex;align-items:center;justify-content:center;border:1px dashed;position:relative;cursor:pointer}.newColumn span{position:absolute}.newColumn .new-column-popover{width:100%}.newColumn .new-column-popover fd-popover-control{width:100%;height:1px}.new-column-popover-body input{border:none}.row{display:flex;align-items:center}.drop-inside{border:1px solid #00f}.drop-inside ::ng-deep .fd-list__item{background-color:#dce9f6!important}.drop-before{border-top:2px solid #00f}.drop-before ::ng-deep .fd-list__item{background-color:#dce9f6!important}.drop-after{border-bottom:2px solid #00f}.drop-after ::ng-deep .fd-list__item{background-color:#dce9f6!important}.columns.cdk-drop-list-dragging .column:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
434
434
|
}], propDecorators: { inputEl: [{
|
|
435
435
|
type: ViewChild,
|
|
436
436
|
args: ['inputEl', { read: ElementRef }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barsa-kanban.mjs","sources":["../../../projects/barsa-kanban/src/lib/kanban-base/kanban-base.component.ts","../../../projects/barsa-kanban/src/lib/kanban-base/kanban-base.component.html","../../../projects/barsa-kanban/src/lib/kanban-tags/kanban-tags.component.ts","../../../projects/barsa-kanban/src/lib/kanban-tags/kanban-tags.component.html","../../../projects/barsa-kanban/src/lib/kanban-card/kanban-card.component.ts","../../../projects/barsa-kanban/src/lib/kanban-card/kanban-card.component.html","../../../projects/barsa-kanban/src/lib/avatar-group/barsa-avatar-group.component.ts","../../../projects/barsa-kanban/src/lib/avatar-group/barsa-avatar-group.component.html","../../../projects/barsa-kanban/src/lib/kanban-view/kanban-view.component.ts","../../../projects/barsa-kanban/src/lib/kanban-view/kanban-view.component.html","../../../projects/barsa-kanban/src/lib/barsa-kanban.module.ts","../../../projects/barsa-kanban/src/barsa-kanban.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { BaseComponent } from 'barsa-novin-ray-core';\r\nimport { PopoverComponent } from '@fundamental-ngx/core';\r\n\r\n@Component({\r\n selector: 'bk-kanban-base',\r\n templateUrl: './kanban-base.component.html',\r\n styleUrls: ['./kanban-base.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanBaseComponent extends BaseComponent {\r\n openPopover(e, popover: PopoverComponent): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n popover.toggle();\r\n }\r\n\r\n closePopover(popover: PopoverComponent): void {\r\n popover.close();\r\n }\r\n}\r\n","<p>kanban-base works!</p>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { KanbanBaseComponent } from '../kanban-base/kanban-base.component';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\nimport { MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n\r\n@Component({\r\n selector: 'bk-kanban-tags',\r\n templateUrl: './kanban-tags.component.html',\r\n styleUrls: ['./kanban-tags.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanTagsComponent extends KanbanBaseComponent {\r\n @Input() tags: MetaobjectDataModel[];\r\n @Input() viewSetting: KanbanViewSetting;\r\n colorList = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];\r\n currentTagLabel = '';\r\n selectedColor = '';\r\n\r\n colorClick(color: string): void {\r\n this.selectedColor = color;\r\n }\r\n\r\n addTag(): void {\r\n const newTag: MetaobjectDataModel = { Id: '', $Caption: '' };\r\n newTag[this.viewSetting.TagColor] = this.selectedColor;\r\n newTag[this.viewSetting.TagName] = this.currentTagLabel;\r\n this.tags.push(newTag);\r\n this.currentTagLabel = '';\r\n this.selectedColor = '';\r\n }\r\n\r\n deleteTag(index: number): void {\r\n this.tags.splice(index, 1);\r\n }\r\n}\r\n","<div class=\"row tags-container\">\r\n @for (tag of tags; track tag; let i = $index) {\r\n <fd-popover placement=\"bottom\" [closeOnOutsideClick]=\"true\">\r\n <fd-popover-control>\r\n <div class=\"tag\">\r\n <fd-info-label\r\n [label]=\"tag[viewSetting.TagName]\"\r\n [color]=\"tag[viewSetting.TagColor]\"\r\n [title]=\"tag[viewSetting.TagName]\"\r\n ></fd-info-label>\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <div class=\"tag-delete\">\r\n <button fd-button (click)=\"deleteTag(i)\" [label]=\"'Delete' | bbbTranslate\" glyph=\"decline\"></button>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n }\r\n\r\n <fd-popover\r\n #tagPopover\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"false\"\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom\"\r\n [focusAutoCapture]=\"true\"\r\n >\r\n <fd-popover-control>\r\n <div>\r\n <button\r\n fd-button\r\n (click)=\"openPopover($event, tagPopover)\"\r\n fdType=\"transparent\"\r\n glyph=\"sys-add\"\r\n ></button>\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <div class=\"new-tag\" (keydown.enter)=\"addTag()\">\r\n <div fd-form-item class=\"row\">\r\n <input fd-form-control type=\"text\" [(ngModel)]=\"currentTagLabel\" id=\"input-1\" placeholder=\" نام\" />\r\n </div>\r\n <div class=\"colors-colection row\">\r\n @for (color of colorList; track color) {\r\n <div\r\n (click)=\"colorClick(color)\"\r\n [ngClass]=\"'fd-info-label--accent-color-' + color\"\r\n [class.selected-color]=\"selectedColor === color\"\r\n class=\"color\"\r\n ></div>\r\n }\r\n </div>\r\n <div class=\"ok-cancel-btns row\">\r\n <button fd-button [label]=\"'Ok' | bbbTranslate\" [fdType]=\"'emphasized'\" (click)=\"addTag()\"></button>\r\n <button\r\n fd-button\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"closePopover(tagPopover)\"\r\n ></button>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseViewItemPropsComponent, FormPanelService, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\n\r\n@Component({\r\n selector: 'bk-kanban-card',\r\n templateUrl: './kanban-card.component.html',\r\n styleUrls: ['./kanban-card.component.scss'],\r\n providers: [FormPanelService],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanCardComponent extends BaseViewItemPropsComponent implements OnInit {\r\n @Input() index: number;\r\n @Input() mo: MetaobjectDataModel;\r\n @Input() viewSetting: KanbanViewSetting;\r\n @Input() allAvailableAssignees: MetaobjectDataModel[];\r\n\r\n moTasksCount = 4;\r\n moFinishedTasksCount = 2;\r\n moTaskPercentage;\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.moTaskPercentage = Math.floor((this.moFinishedTasksCount / this.moTasksCount) * 100);\r\n }\r\n}\r\n","<div #trEl [applyConditionalFormats]=\"conditionalFormats\" [styleIndex]=\"styleIndex\" [hostEl]=\"trEl\">\r\n <fd-card [interactive]=\"true\" role=\"listitem\" (click)=\"onRowCheck()\" [class.selected]=\"isChecked\">\r\n <fd-card-header>\r\n <fd-card-main-header>\r\n @if(viewSetting.PictureField){\r\n <fd-avatar\r\n [glyph]=\"'travel-expense'\"\r\n [image]=\"\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n ></fd-avatar>\r\n }\r\n <h2\r\n fd-card-title\r\n #hEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.TitleField)?.Name\"\r\n [mo]=\"mo\"\r\n >\r\n {{ viewSetting.TitleField | rval: mo:allColumns:true }}\r\n </h2>\r\n @if(viewSetting.SubtitleField){\r\n <h3\r\n fd-card-subtitle\r\n #hElSubtitle\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hElSubtitle\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.SubtitleField)?.Name\"\r\n >\r\n {{ viewSetting.SubtitleField | rval: mo:allColumns:true }}\r\n </h3>\r\n } @if(viewSetting.CounterField){\r\n <span\r\n fd-card-counter\r\n #hElCounter\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hElCounter\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.CounterField)?.Name\"\r\n [mo]=\"mo\"\r\n >{{ viewSetting.CounterField | rval: mo:allColumns:true }}\r\n </span>\r\n }\r\n <!-- <button\r\n fd-button\r\n fd-card-header-action\r\n fdType=\"transparent\"\r\n glyph=\"overflow\"\r\n ariaLabel=\"More\"\r\n title=\"More\"\r\n ></button> -->\r\n </fd-card-main-header>\r\n @if(viewSetting.HeaderRowOneField || viewSetting.HeaderRowTwoField || viewSetting.HeaderRowRightField ){\r\n <fd-card-extended-header [align]=\"'bottom'\">\r\n <div fd-card-header-column>\r\n @if(viewSetting.HeaderRowOneField){\r\n <div fd-card-header-row>\r\n <span\r\n #hElHeaderRowOneField\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hElHeaderRowOneField\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.HeaderRowOneField)?.Name\"\r\n >\r\n {{ viewSetting.HeaderRowOneField | rval: mo:allColumns:true }}\r\n </span>\r\n </div>\r\n } @if(viewSetting.HeaderRowTwoField){\r\n <div fd-card-header-row>\r\n <span\r\n #elHeaderRowTwoField\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"elHeaderRowTwoField\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.HeaderRowTwoField)?.Name\"\r\n >\r\n {{ viewSetting.HeaderRowTwoField | rval: mo:allColumns:true }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div fd-card-header-column [align]=\"'right'\">\r\n @if(viewSetting.HeaderRowRightField){\r\n <div fd-card-header-row>\r\n <span\r\n #elHeaderRowRightField\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"elHeaderRowRightField\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.HeaderRowRightField)?.Name\"\r\n >{{ viewSetting.HeaderRowRightField | rval: mo:allColumns:true }}</span\r\n >\r\n </div>\r\n }\r\n </div>\r\n </fd-card-extended-header>\r\n }\r\n </fd-card-header>\r\n <!-- <fd-card-footer>\r\n <button *fdCardFooterActionItem fd-button fdType=\"positive\">Approve</button>\r\n <button *fdCardFooterActionItem fd-button fdType=\"negative\">Reject</button>\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</div>\r\n<ng-template #columnTemplate let-column let-mo=\"mo\" let-index=\"index\" let-layout94=\"layout94\" let-ischecked=\"ischecked\"\r\n >@if (column) {\r\n <div\r\n #divEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"divEl\"\r\n [dbName]=\"column.Name\"\r\n >\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [isChecked]=\"isChecked\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\r\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\r\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\r\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\r\n [formLayoutShowLabel]=\"true\"\r\n ></bsu-column-renderer>\r\n </div>\r\n }\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\r\n\r\nimport { ENTER, ESCAPE, SPACE, TAB } from '@angular/cdk/keycodes';\r\nimport { KeyUtil, Size } from '@fundamental-ngx/core/utils';\r\nimport { AvatarGroupComponent, PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core';\r\nimport { KanbanBaseComponent } from '../kanban-base/kanban-base.component';\r\nimport { MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\n\r\n@Component({\r\n selector: 'bk-avatar-group',\r\n templateUrl: './barsa-avatar-group.component.html',\r\n styleUrls: ['./barsa-avatar-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class BarsaAvatarGroupComponent extends KanbanBaseComponent {\r\n @ViewChild('overflowPopoverBody')\r\n popoverBodyComponent: PopoverBodyComponent;\r\n @ViewChild(AvatarGroupComponent, { static: true, read: AvatarGroupComponent }) avatarGroupCom: AvatarGroupComponent;\r\n @Input() existedItems: MetaobjectDataModel[];\r\n @Input() availableItems: MetaobjectDataModel[];\r\n @Input() viewSetting: KanbanViewSetting;\r\n @Input() visibleFields: string[] = [];\r\n @Input() addItem: boolean;\r\n @Input() size: Size = 'l';\r\n\r\n personDetails: any = null;\r\n overflowPopoverStage: 'main' | 'detail' = 'main';\r\n overflowItemsCount;\r\n get isDetailStage(): boolean {\r\n return this.overflowPopoverStage === 'detail';\r\n }\r\n\r\n isOpenChanged(isOpened: boolean): void {\r\n if (isOpened) {\r\n this.openOverflowMain();\r\n }\r\n }\r\n\r\n newItem(newItem): void {\r\n const exist = this.existedItems.find((item) => item.Id === newItem.Id);\r\n if (!exist) {\r\n this.existedItems.push(newItem);\r\n }\r\n }\r\n\r\n deleteAvatar(idx: number): void {\r\n this.existedItems.splice(idx, 1);\r\n }\r\n\r\n openOverflowMain(): void {\r\n this.personDetails = null;\r\n this.overflowPopoverStage = 'main';\r\n\r\n setTimeout(() => this.popoverBodyComponent?._focusFirstTabbableElement(), 0);\r\n }\r\n\r\n handleControlClick(_event: MouseEvent, popover: PopoverComponent): void {\r\n popover.open();\r\n }\r\n\r\n handleControlKeydown(event: KeyboardEvent, popover: PopoverComponent): void {\r\n if (!KeyUtil.isKeyCode(event, [ESCAPE, TAB, SPACE, ENTER])) {\r\n return;\r\n }\r\n\r\n if (KeyUtil.isKeyCode(event, [ESCAPE, TAB])) {\r\n popover.close();\r\n }\r\n\r\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\r\n popover.open();\r\n }\r\n }\r\n}\r\n","<fd-avatar-group #avatarGroupCom type=\"group\" [size]=\"size\">\r\n <fd-popover\r\n [noArrow]=\"false\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [triggers]=\"[]\"\r\n [closeOnOutsideClick]=\"true\"\r\n [closeOnEscapeKey]=\"true\"\r\n (isOpenChange)=\"isOpenChanged($event)\"\r\n placement=\"bottom\"\r\n [maxWidth]=\"312\"\r\n #overflowPopover\r\n >\r\n <fd-popover-control\r\n fd-avatar-group-popover-control\r\n [attr.aria-label]=\"\r\n 'Has popup type dialog Conjoined avatars, ' +\r\n ' avatars displayed, ' +\r\n 1 +\r\n ' avatars hidden, activate for complete list'\r\n \"\r\n (click)=\"handleControlClick($event, overflowPopover)\"\r\n (keydown)=\"handleControlKeydown($event, overflowPopover)\"\r\n >\r\n @for (person of existedItems; track person) {\r\n <div fd-avatar-group-item>\r\n @if (!person[viewSetting.AssigneeImage]) {\r\n <fd-avatar\r\n [label]=\"person[viewSetting.AssigneeName]\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n role=\"img\"\r\n [circle]=\"true\"\r\n [border]=\"true\"\r\n [size]=\"size\"\r\n ></fd-avatar>\r\n } @if (person[viewSetting.AssigneeImage]; as avatar) {\r\n <fd-avatar\r\n role=\"img\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n [circle]=\"true\"\r\n [border]=\"true\"\r\n [size]=\"size\"\r\n [image]=\"(avatar.FileId | picFieldSrc: 'ID':person.Id) || ''\"\r\n >\r\n </fd-avatar>\r\n }\r\n </div>\r\n }\r\n <button fd-button fd-avatar-group-overflow-button tabindex=\"-1\" [compact]=\"false\" [size]=\"size\">\r\n <bdi fd-avatar-group-overflow-button-text> 1 </bdi>\r\n </button>\r\n </fd-popover-control>\r\n <fd-popover-body #overflowPopoverBody aria-labelledby=\"avatar-group-1-popover-header\" role=\"tooltip\">\r\n <div class=\"fd-popover__wrapper\">\r\n <div fd-popover-body-header>\r\n <div fd-bar barDesign=\"header\">\r\n <div fd-bar-left>\r\n @if (isDetailStage) {\r\n <fd-button-bar\r\n (click)=\"openOverflowMain()\"\r\n glyph=\"navigation-left-arrow\"\r\n fdType=\"transparent\"\r\n aria-label=\"Back\"\r\n title=\"Back\"\r\n ></fd-button-bar>\r\n }\r\n <fd-bar-element id=\"avatar-group-1-popover-header\">\r\n {{ isDetailStage ? 'Business Card' : 'Team Members (' + existedItems?.length + ')' }}\r\n </fd-bar-element>\r\n @if (isDetailStage) {\r\n <fd-bar-element> </fd-bar-element>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n fd-avatar-group-overflow-body\r\n [noPadding]=\"isDetailStage\"\r\n [noHorizontalScroll]=\"isDetailStage\"\r\n [noVerticalScroll]=\"false\"\r\n >\r\n @if (overflowPopoverStage === 'main') { @for (person of existedItems; track person; let idx =\r\n $index) {\r\n <div fd-avatar-group-overflow-item>\r\n <fd-popover [triggers]=\"['click']\">\r\n <fd-popover-control>\r\n @if (!person[viewSetting.AssigneeImage]) {\r\n <fd-avatar\r\n fd-avatar-group-focusable-avatar\r\n [circle]=\"true\"\r\n size=\"s\"\r\n [label]=\"person[viewSetting.AssigneeName]\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n role=\"img\"\r\n ></fd-avatar>\r\n } @if (person[viewSetting.AssigneeImage]; as avatar) {\r\n <fd-avatar\r\n fd-avatar-group-focusable-avatar\r\n role=\"img\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n [circle]=\"true\"\r\n size=\"s\"\r\n [image]=\"(avatar.FileId | picFieldSrc: 'ID':person.Id) || ''\"\r\n ></fd-avatar>\r\n }\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <div class=\"avatar-actions\">\r\n <button\r\n fd-button\r\n (click)=\"deleteAvatar(idx)\"\r\n [label]=\"'Delete' | bbbTranslate\"\r\n glyph=\"decline\"\r\n ></button>\r\n <button fd-button [label]=\"'Show' | bbbTranslate\" glyph=\"detail-view\"></button>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n } }\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</fd-avatar-group>\r\n\r\n@if (addItem) {\r\n<fd-popover\r\n #peoplePopover\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"false\"\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom\"\r\n [focusAutoCapture]=\"true\"\r\n>\r\n <fd-popover-control>\r\n <div>\r\n <button\r\n fd-button\r\n (click)=\"openPopover($event, peoplePopover)\"\r\n fdType=\"transparent\"\r\n glyph=\"sys-add\"\r\n ></button>\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (item of availableItems; track item) {\r\n <li fd-list-item (click)=\"newItem(item)\">\r\n @if (visibleFields.length > 0) { @for (field of visibleFields; track field) {\r\n {{ item[field] }}\r\n } } @else {\r\n {{ item }}\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n</fd-popover>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnInit,\r\n SimpleChanges,\r\n ViewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\n\r\nimport { MetaobjectDataModel, MultipleGroupByPipe, ReportViewBaseComponent, SortDirection } from 'barsa-novin-ray-core';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\nimport { DropInfo } from '../Models/drop-info';\r\n\r\n@Component({\r\n selector: 'bk-kanban-view',\r\n templateUrl: './kanban-view.component.html',\r\n styleUrls: ['./kanban-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanViewComponent extends ReportViewBaseComponent<KanbanViewSetting> implements OnInit {\r\n @ViewChild('inputEl', { read: ElementRef }) inputEl: ElementRef<any>;\r\n @Input() kanbanColumns: MetaobjectDataModel[];\r\n @Input() groupbyProperty = 'State';\r\n dropActionTodo: DropInfo;\r\n allAvailableAssignees: MetaobjectDataModel[];\r\n isNewColumnMode = false;\r\n newCard: any = { Id: null, $Caption: null };\r\n newColumn: any = { Id: null, $Caption: null };\r\n _multipleGroup = inject(MultipleGroupByPipe);\r\n groupedMoList = signal({});\r\n sceneConfig = {\r\n scene: { url: 'assets/images/sapIllus-Scene-NoMail.svg', id: 'sapIllus-Scene-NoMail-1' },\r\n dialog: { url: 'assets/images/sapIllus-Dialog-NoMail.svg', id: 'sapIllus-Dialog-NoMail' }\r\n };\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n const columnsReport = this.viewSetting.ColumnsReport.$Caption;\r\n this._portalService.ReportExecute(columnsReport).subscribe((report) => {\r\n this.kanbanColumns = report.MoDataList;\r\n this._changeDetect();\r\n });\r\n // this.formSetting.View.ControlInfo.forEach((c) => (c.InlineEditMode = true));\r\n const assigneesReport = this.viewSetting.AssigneesReport?.$Caption;\r\n if (assigneesReport) {\r\n this._portalService.ReportExecute(assigneesReport).subscribe((report) => {\r\n this.allAvailableAssignees = report.MoDataList;\r\n this._changeDetect();\r\n });\r\n }\r\n this.viewSetting = {\r\n ...this.viewSetting,\r\n ...this._findColumn(this.allColumns, [\r\n this.viewSetting.Cover,\r\n this.viewSetting.State,\r\n this.viewSetting.Caption\r\n ])\r\n };\r\n this._prepareGroupMoList(this.moDataList);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { moDataList } = changes;\r\n if (moDataList && !moDataList.firstChange) {\r\n this._prepareGroupMoList(moDataList.currentValue);\r\n }\r\n }\r\n _prepareGroupMoList(molist: MetaobjectDataModel[]): void {\r\n const column = this._findColumnByDbName.transform(this.allColumns, this.viewSetting.State);\r\n const name = column?.Name || this.viewSetting.State;\r\n const dict = {};\r\n const s: any[] = this._multipleGroup.transform(molist, [\r\n {\r\n IsGrouped: true,\r\n Name: name,\r\n SortDirection: SortDirection.ASC\r\n }\r\n ]);\r\n s.forEach((c) => {\r\n if (c.$Group) {\r\n dict[c.$Group] = c.$Children;\r\n }\r\n });\r\n this.groupedMoList.set(dict);\r\n }\r\n\r\n onAddNewColumn(): void {\r\n this.kanbanColumns.push(this.newColumn);\r\n this._cdr.detectChanges();\r\n this._resetNewColumn();\r\n this._scrollInputIntoView();\r\n }\r\n\r\n onActiveNewColumnMode(): void {\r\n this._changeNewColumnMode(true);\r\n }\r\n\r\n onCancelNewColumn(): void {\r\n this._changeNewColumnMode(false);\r\n this._resetNewColumn();\r\n }\r\n\r\n onInitNewCard(groupby: string): void {\r\n this._resetNewCard();\r\n this.newCard[this.groupbyProperty] = groupby;\r\n }\r\n\r\n onAddNewCard(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this._addNewCard();\r\n }\r\n\r\n onNewCardInputFocusout(): void {\r\n if (this.newCard.$Caption) {\r\n this._addNewCard();\r\n } else {\r\n this._cancelNewCard();\r\n }\r\n }\r\n\r\n onCancelNewCard(e: MouseEvent): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this._cancelNewCard();\r\n }\r\n\r\n onDrop(event, isColumn?: boolean): void {\r\n let previousIndex;\r\n let currentIndex;\r\n const array = event.container.data;\r\n\r\n if (isColumn) {\r\n previousIndex = event.previousIndex;\r\n currentIndex = event.currentIndex;\r\n } else {\r\n const draggedItemId = this.dropActionTodo.draggedId;\r\n if (!draggedItemId) {\r\n return;\r\n }\r\n const draggedItem = this._getMoById(draggedItemId);\r\n const targetState = this.dropActionTodo.targetState;\r\n previousIndex = array.indexOf(draggedItem);\r\n currentIndex = this.dropActionTodo.targetIndex;\r\n draggedItem.State = targetState;\r\n this._stopDragging();\r\n }\r\n\r\n moveItemInArray(array, previousIndex, currentIndex);\r\n }\r\n\r\n onDragMove(event, draggedMo, draggedIndex: number, targetState: MetaobjectDataModel): void {\r\n const elementFromPoint = document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y);\r\n\r\n if (targetState) {\r\n }\r\n if (!elementFromPoint) {\r\n this._stopDragging();\r\n return;\r\n }\r\n const targetNodeElement = elementFromPoint.closest('[state]');\r\n if (!targetNodeElement) {\r\n this._stopDragging();\r\n return;\r\n }\r\n this.dropActionTodo = {\r\n draggedId: draggedMo.Id,\r\n targetId: targetNodeElement.getAttribute('id'),\r\n targetState: null,\r\n targetIndex: Number(targetNodeElement.getAttribute('index'))\r\n };\r\n const targetRect = targetNodeElement.getBoundingClientRect();\r\n const oneThird = targetRect.height / 3;\r\n\r\n const isCardTarget = !targetNodeElement.classList.contains('column');\r\n\r\n const isBefore = event.pointerPosition.y - targetRect.top < oneThird && isCardTarget;\r\n\r\n const isAfter = event.pointerPosition.y - targetRect.top > 2 * oneThird && isCardTarget;\r\n\r\n const isInside = !isCardTarget;\r\n\r\n const targetIndex = this.dropActionTodo.targetIndex ?? -1;\r\n const targetMo = this.moDataList[targetIndex];\r\n\r\n if (isCardTarget) {\r\n this.dropActionTodo.targetState = targetMo[this.viewSetting.State];\r\n } else {\r\n const state = targetNodeElement.getAttribute('state');\r\n const moid = targetNodeElement.getAttribute('id');\r\n state !== null &&\r\n moid !== null &&\r\n (this.dropActionTodo.targetState = {\r\n $Caption: state,\r\n Id: moid,\r\n $TypeDefId: draggedMo[this.viewSetting.State]?.$TypeDefId\r\n });\r\n }\r\n if (isBefore) {\r\n this.dropActionTodo.action = 'before';\r\n this.dropActionTodo.targetIndex = draggedIndex > targetIndex ? targetIndex : targetIndex - 1;\r\n } else if (isAfter) {\r\n this.dropActionTodo.action = 'after';\r\n this.dropActionTodo.targetIndex = draggedIndex < targetIndex ? targetIndex : targetIndex + 1;\r\n } else if (isInside) {\r\n this.dropActionTodo.action = 'inside';\r\n this.dropActionTodo.targetIndex = 0;\r\n }\r\n // console.log(this.dropActionTodo.targetState);\r\n this._showDragInfo();\r\n }\r\n private _changeDetect(): void {\r\n this._cdr.detectChanges();\r\n }\r\n\r\n private _stopDragging(): void {\r\n this._clearDragInfo();\r\n this._resetDropActionTodo();\r\n }\r\n\r\n private _changeNewColumnMode(mode: boolean): void {\r\n this.isNewColumnMode = mode;\r\n }\r\n\r\n private _resetDropActionTodo(): void {\r\n this.dropActionTodo = {\r\n targetId: null,\r\n draggedId: null,\r\n targetState: null,\r\n targetIndex: null,\r\n action: null\r\n };\r\n }\r\n\r\n private _scrollInputIntoView(): void {\r\n const inputEl: HTMLInputElement = this.inputEl.nativeElement;\r\n inputEl.focus();\r\n inputEl.scrollIntoView({ inline: 'end' });\r\n }\r\n\r\n private _resetNewColumn(): void {\r\n this.newColumn = { Id: '', $Caption: '' };\r\n }\r\n\r\n private _clearDragInfo(dropped = false): void {\r\n if (dropped) {\r\n this._resetDropActionTodo();\r\n }\r\n const elDom = this._el.nativeElement;\r\n elDom\r\n .querySelectorAll('.drop-before')\r\n .forEach((element) => this._renderer2.removeClass(element, 'drop-before'));\r\n elDom.querySelectorAll('.drop-after').forEach((element) => this._renderer2.removeClass(element, 'drop-after'));\r\n elDom\r\n .querySelectorAll('.drop-inside')\r\n .forEach((element) => this._renderer2.removeClass(element, 'drop-inside'));\r\n }\r\n\r\n private _showDragInfo(): void {\r\n this._clearDragInfo();\r\n if (this.dropActionTodo.targetId) {\r\n const targetNodeElement = this._el.nativeElement.querySelector('#' + this.dropActionTodo.targetId);\r\n if (!targetNodeElement) {\r\n this._resetDropActionTodo();\r\n return;\r\n }\r\n this._renderer2.addClass(targetNodeElement, 'drop-' + this.dropActionTodo?.action);\r\n }\r\n }\r\n\r\n private _addNewCard(): void {\r\n this.moDataList.push(this.newCard);\r\n const currentGroupby = this.newCard[this.groupbyProperty];\r\n this.onInitNewCard(currentGroupby);\r\n }\r\n\r\n private _resetNewCard(): void {\r\n this.newCard = { Id: null, $Caption: null };\r\n }\r\n\r\n private _cancelNewCard(): void {\r\n this._resetNewCard();\r\n }\r\n\r\n private _getMoById(id: string): MetaobjectDataModel {\r\n return this.moDataList.find((c) => c.Id === id);\r\n }\r\n\r\n private _findColumn(_allColumns, columnsName: string[]): object {\r\n const columns = {};\r\n columnsName.forEach((name) => {\r\n columns[name + 'Column'] = this._findColumnByDbName.transform(this.allColumns, name);\r\n });\r\n return columns;\r\n }\r\n}\r\n","<fd-layout-panel>\r\n <fd-layout-panel-body [bleed]=\"true\">\r\n @if (isCheckList) {\r\n <table fd-table>\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n >{{ 'All' | bbbTranslate }}</fd-checkbox\r\n >\r\n </th>\r\n </tr>\r\n </thead>\r\n </table>\r\n }\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<fd-layout-grid\r\n class=\"columns\"\r\n fillEmptySpace\r\n [setMinHeight]=\"true\"\r\n [disable]=\"true\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"kanbanColumns\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [id]=\"'$Root'\"\r\n (cdkDropListDropped)=\"onDrop($event, true)\"\r\n>\r\n @for (column of kanbanColumns; track column; let columnIndex = $index) {\r\n <div\r\n [fdLayoutGridCol]=\"12\"\r\n [colMd]=\"4\"\r\n [colLg]=\"3\"\r\n [colXl]=\"2\"\r\n class=\"column\"\r\n [id]=\"column.Id\"\r\n [attr.state]=\"column.$Caption\"\r\n cdkDrag\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnCard;\r\n context: {\r\n column: column,\r\n columnIndex: columnIndex\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n</fd-layout-grid>\r\n\r\n<!--noData-->\r\n\r\n<!--column card-->\r\n<ng-template #columnCard let-column=\"column\" let-columnIndex=\"columnIndex\">\r\n <fd-card cardType=\"quickView\" class=\"docs-flex-item-margin\" ellipsify>\r\n <fd-card-header>\r\n <fd-card-main-header [style.background]=\"column.Color\" [class.hasColumnColor]=\"column.Color\">\r\n <h2 fd-card-title>{{ column.$Caption }}</h2>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content\r\n cdkDropList\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [cdkDropListData]=\"moDataList\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnMoList;\r\n context: { $implicit: groupedMoList()[column.$Caption], column: column }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-card-content>\r\n <!-- <fd-card-footer class=\"column-footer\">\r\n @if (newCard[groupbyProperty] === column.$Caption) {\r\n <div class=\"new-card\">\r\n <fd-card>\r\n <div fd-form-item>\r\n <textarea\r\n fd-form-control\r\n [autofocus]=\"true\"\r\n [(ngModel)]=\"newCard.$Caption\"\r\n (keydown.enter)=\"onAddNewCard($event)\"\r\n (focusout)=\"onNewCardInputFocusout()\"\r\n [placeholder]=\"'Title' | bbbTranslate\"\r\n ></textarea>\r\n </div>\r\n </fd-card>\r\n <div class=\"new-card-actions\">\r\n <button\r\n fd-button\r\n (click)=\"onAddNewCard($event)\"\r\n fdType=\"emphasized\"\r\n class=\"add-card-btn\"\r\n [label]=\"'افزودن'\"\r\n ></button>\r\n <fd-icon (mousedown)=\"onCancelNewCard($event)\" glyph=\"decline\"></fd-icon>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"add-new-card\" (click)=\"onInitNewCard(column.$Caption)\">\r\n <span>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n کارت جدید\r\n </span>\r\n </div>\r\n }\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</ng-template>\r\n\r\n<ng-template #columnMoList let-moList let-column=\"column\">\r\n @if(moList && moList.length>0){ @for (mo of moList; track mo; let index = $index) {\r\n <bk-kanban-card\r\n [mo]=\"mo\"\r\n [allColumns]=\"columns\"\r\n [viewSetting]=\"viewSetting\"\r\n [formSetting]=\"formSetting\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [allAvailableAssignees]=\"allAvailableAssignees\"\r\n [index]=\"index\"\r\n [attr.id]=\"mo.Id\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [attr.state]=\"column.$Caption\"\r\n [attr.index]=\"index\"\r\n [class.selected]=\"mo.$IsChecked\"\r\n (cdkDragMoved)=\"onDragMove($event, mo, index, column)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n (dblclick)=\"onRowClick({mo, index})\"\r\n cdkDrag\r\n >\r\n </bk-kanban-card>\r\n } }@else{\r\n\r\n <h3 fd-title>{{ 'NoData' | bbbTranslate }}</h3>\r\n }\r\n</ng-template>\r\n","import { ComponentFactoryResolver, NgModule, NO_ERRORS_SCHEMA, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BarsaNovinRayCoreModule, BaseModule, DynamicComponentService } from 'barsa-novin-ray-core';\r\nimport { KanbanViewComponent } from './kanban-view/kanban-view.component';\r\nimport { FundamentalNgxCoreModule } from '@fundamental-ngx/core';\r\nimport { BarsaAvatarGroupComponent } from './avatar-group/barsa-avatar-group.component';\r\n\r\nimport { BarsaEchartsModule } from 'barsa-echarts';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { KanbanCardComponent } from './kanban-card/kanban-card.component';\r\nimport { KanbanTagsComponent } from './kanban-tags/kanban-tags.component';\r\nimport { KanbanBaseComponent } from './kanban-base/kanban-base.component';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { BarsaSapUiModule } from 'barsa-sap-ui';\r\nimport { PlatformMenuModule } from '@fundamental-ngx/platform';\r\n\r\nconst components = [\r\n KanbanViewComponent,\r\n BarsaAvatarGroupComponent,\r\n KanbanCardComponent,\r\n KanbanTagsComponent,\r\n KanbanBaseComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: [...components],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n exports: [...components],\r\n imports: [\r\n CommonModule,\r\n BarsaNovinRayCoreModule,\r\n FundamentalNgxCoreModule,\r\n PlatformMenuModule,\r\n BarsaEchartsModule,\r\n BarsaSapUiModule,\r\n FormsModule,\r\n DragDropModule\r\n ],\r\n providers: [provideHttpClient(withInterceptorsFromDi())]\r\n})\r\nexport class BarsaKanbanModule extends BaseModule {\r\n protected dcm: DynamicComponentService;\r\n protected componentFactoryResolver: ComponentFactoryResolver;\r\n\r\n protected dynamicComponents = [...components];\r\n\r\n /** Inserted by Angular inject() migration for backwards compatibility */\r\n \r\n\r\n constructor() {\r\n const dcm = inject(DynamicComponentService);\r\n const componentFactoryResolver = inject(ComponentFactoryResolver);\r\n\r\n super(dcm, componentFactoryResolver, 'BarsaKanbanModule');\r\n \r\n this.dcm = dcm;\r\n this.componentFactoryResolver = componentFactoryResolver;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i1","i2","i3","i4","i6","i5","i9","i11.KanbanCardComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"barsa-kanban.mjs","sources":["../../../projects/barsa-kanban/src/lib/kanban-base/kanban-base.component.ts","../../../projects/barsa-kanban/src/lib/kanban-base/kanban-base.component.html","../../../projects/barsa-kanban/src/lib/kanban-tags/kanban-tags.component.ts","../../../projects/barsa-kanban/src/lib/kanban-tags/kanban-tags.component.html","../../../projects/barsa-kanban/src/lib/kanban-card/kanban-card.component.ts","../../../projects/barsa-kanban/src/lib/kanban-card/kanban-card.component.html","../../../projects/barsa-kanban/src/lib/avatar-group/barsa-avatar-group.component.ts","../../../projects/barsa-kanban/src/lib/avatar-group/barsa-avatar-group.component.html","../../../projects/barsa-kanban/src/lib/kanban-view/kanban-view.component.ts","../../../projects/barsa-kanban/src/lib/kanban-view/kanban-view.component.html","../../../projects/barsa-kanban/src/lib/barsa-kanban.module.ts","../../../projects/barsa-kanban/src/barsa-kanban.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { BaseComponent } from 'barsa-novin-ray-core';\r\nimport { PopoverComponent } from '@fundamental-ngx/core';\r\n\r\n@Component({\r\n selector: 'bk-kanban-base',\r\n templateUrl: './kanban-base.component.html',\r\n styleUrls: ['./kanban-base.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanBaseComponent extends BaseComponent {\r\n openPopover(e, popover: PopoverComponent): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n popover.toggle();\r\n }\r\n\r\n closePopover(popover: PopoverComponent): void {\r\n popover.close();\r\n }\r\n}\r\n","<p>kanban-base works!</p>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { KanbanBaseComponent } from '../kanban-base/kanban-base.component';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\nimport { MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n\r\n@Component({\r\n selector: 'bk-kanban-tags',\r\n templateUrl: './kanban-tags.component.html',\r\n styleUrls: ['./kanban-tags.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanTagsComponent extends KanbanBaseComponent {\r\n @Input() tags: MetaobjectDataModel[];\r\n @Input() viewSetting: KanbanViewSetting;\r\n colorList = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];\r\n currentTagLabel = '';\r\n selectedColor = '';\r\n\r\n colorClick(color: string): void {\r\n this.selectedColor = color;\r\n }\r\n\r\n addTag(): void {\r\n const newTag: MetaobjectDataModel = { Id: '', $Caption: '' };\r\n newTag[this.viewSetting.TagColor] = this.selectedColor;\r\n newTag[this.viewSetting.TagName] = this.currentTagLabel;\r\n this.tags.push(newTag);\r\n this.currentTagLabel = '';\r\n this.selectedColor = '';\r\n }\r\n\r\n deleteTag(index: number): void {\r\n this.tags.splice(index, 1);\r\n }\r\n}\r\n","<div class=\"row tags-container\">\r\n @for (tag of tags; track tag; let i = $index) {\r\n <fd-popover placement=\"bottom\" [closeOnOutsideClick]=\"true\">\r\n <fd-popover-control>\r\n <div class=\"tag\">\r\n <fd-info-label\r\n [label]=\"tag[viewSetting.TagName]\"\r\n [color]=\"tag[viewSetting.TagColor]\"\r\n [title]=\"tag[viewSetting.TagName]\"\r\n ></fd-info-label>\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <div class=\"tag-delete\">\r\n <button fd-button (click)=\"deleteTag(i)\" [label]=\"'Delete' | bbbTranslate\" glyph=\"decline\"></button>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n }\r\n\r\n <fd-popover\r\n #tagPopover\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"false\"\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom\"\r\n [focusAutoCapture]=\"true\"\r\n >\r\n <fd-popover-control>\r\n <div>\r\n <button\r\n fd-button\r\n (click)=\"openPopover($event, tagPopover)\"\r\n fdType=\"transparent\"\r\n glyph=\"sys-add\"\r\n ></button>\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <div class=\"new-tag\" (keydown.enter)=\"addTag()\">\r\n <div fd-form-item class=\"row\">\r\n <input fd-form-control type=\"text\" [(ngModel)]=\"currentTagLabel\" id=\"input-1\" placeholder=\" نام\" />\r\n </div>\r\n <div class=\"colors-colection row\">\r\n @for (color of colorList; track color) {\r\n <div\r\n (click)=\"colorClick(color)\"\r\n [ngClass]=\"'fd-info-label--accent-color-' + color\"\r\n [class.selected-color]=\"selectedColor === color\"\r\n class=\"color\"\r\n ></div>\r\n }\r\n </div>\r\n <div class=\"ok-cancel-btns row\">\r\n <button fd-button [label]=\"'Ok' | bbbTranslate\" [fdType]=\"'emphasized'\" (click)=\"addTag()\"></button>\r\n <button\r\n fd-button\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"closePopover(tagPopover)\"\r\n ></button>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseViewItemPropsComponent, FormPanelService, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\n\r\n@Component({\r\n selector: 'bk-kanban-card',\r\n templateUrl: './kanban-card.component.html',\r\n styleUrls: ['./kanban-card.component.scss'],\r\n providers: [FormPanelService],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanCardComponent extends BaseViewItemPropsComponent implements OnInit {\r\n @Input() index: number;\r\n @Input() mo: MetaobjectDataModel;\r\n @Input() viewSetting: KanbanViewSetting;\r\n @Input() allAvailableAssignees: MetaobjectDataModel[];\r\n\r\n moTasksCount = 4;\r\n moFinishedTasksCount = 2;\r\n moTaskPercentage;\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.moTaskPercentage = Math.floor((this.moFinishedTasksCount / this.moTasksCount) * 100);\r\n }\r\n}\r\n","<div #trEl [applyConditionalFormats]=\"conditionalFormats\" [styleIndex]=\"styleIndex\" [hostEl]=\"trEl\">\r\n <fd-card [interactive]=\"true\" role=\"listitem\" (click)=\"onRowCheck()\" [class.selected]=\"isChecked\">\r\n <fd-card-header>\r\n <fd-card-main-header>\r\n @if(viewSetting.PictureField){\r\n <fd-avatar\r\n [glyph]=\"'travel-expense'\"\r\n [image]=\"\"\r\n size=\"s\"\r\n ariaLabel=\"avatar image\"\r\n title=\"avatar image\"\r\n ></fd-avatar>\r\n }\r\n <h2\r\n fd-card-title\r\n #hEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hEl\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.TitleField)?.Name\"\r\n [mo]=\"mo\"\r\n >\r\n {{ viewSetting.TitleField | rval: mo:allColumns:true }}\r\n </h2>\r\n @if(viewSetting.SubtitleField){\r\n <h3\r\n fd-card-subtitle\r\n #hElSubtitle\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hElSubtitle\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.SubtitleField)?.Name\"\r\n >\r\n {{ viewSetting.SubtitleField | rval: mo:allColumns:true }}\r\n </h3>\r\n } @if(viewSetting.CounterField){\r\n <span\r\n fd-card-counter\r\n #hElCounter\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hElCounter\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.CounterField)?.Name\"\r\n [mo]=\"mo\"\r\n >{{ viewSetting.CounterField | rval: mo:allColumns:true }}\r\n </span>\r\n }\r\n <!-- <button\r\n fd-button\r\n fd-card-header-action\r\n fdType=\"transparent\"\r\n glyph=\"overflow\"\r\n ariaLabel=\"More\"\r\n title=\"More\"\r\n ></button> -->\r\n </fd-card-main-header>\r\n @if(viewSetting.HeaderRowOneField || viewSetting.HeaderRowTwoField || viewSetting.HeaderRowRightField ){\r\n <fd-card-extended-header [align]=\"'bottom'\">\r\n <div fd-card-header-column>\r\n @if(viewSetting.HeaderRowOneField){\r\n <div fd-card-header-row>\r\n <span\r\n #hElHeaderRowOneField\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"hElHeaderRowOneField\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.HeaderRowOneField)?.Name\"\r\n >\r\n {{ viewSetting.HeaderRowOneField | rval: mo:allColumns:true }}\r\n </span>\r\n </div>\r\n } @if(viewSetting.HeaderRowTwoField){\r\n <div fd-card-header-row>\r\n <span\r\n #elHeaderRowTwoField\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"elHeaderRowTwoField\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.HeaderRowTwoField)?.Name\"\r\n >\r\n {{ viewSetting.HeaderRowTwoField | rval: mo:allColumns:true }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div fd-card-header-column [align]=\"'right'\">\r\n @if(viewSetting.HeaderRowRightField){\r\n <div fd-card-header-row>\r\n <span\r\n #elHeaderRowRightField\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"elHeaderRowRightField\"\r\n [dbName]=\"(allColumns | findColumnByDbName: viewSetting.HeaderRowRightField)?.Name\"\r\n >{{ viewSetting.HeaderRowRightField | rval: mo:allColumns:true }}</span\r\n >\r\n </div>\r\n }\r\n </div>\r\n </fd-card-extended-header>\r\n }\r\n </fd-card-header>\r\n <!-- <fd-card-footer>\r\n <button *fdCardFooterActionItem fd-button fdType=\"positive\">Approve</button>\r\n <button *fdCardFooterActionItem fd-button fdType=\"negative\">Reject</button>\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</div>\r\n<ng-template #columnTemplate let-column let-mo=\"mo\" let-index=\"index\" let-layout94=\"layout94\" let-ischecked=\"ischecked\"\r\n >@if (column) {\r\n <div\r\n #divEl\r\n [applyConditionalFormats]=\"conditionalFormats\"\r\n [styleIndex]=\"styleIndex\"\r\n [hostEl]=\"divEl\"\r\n [dbName]=\"column.Name\"\r\n >\r\n <bsu-column-renderer\r\n [mo]=\"mo\"\r\n [column]=\"column\"\r\n [value]=\"column | columnValue: mo | bbbTranslate\"\r\n [icon]=\"column | columnIcon: mo\"\r\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\r\n [rtl]=\"rtl\"\r\n [isChecked]=\"isChecked\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [index]=\"index\"\r\n [controlUi]=\"column.Caption | controlUi: layout94:column.Name\"\r\n (keyup.control.enter)=\"onEditFormPanelSave($event)\"\r\n (keyup.esc)=\"onEditFormPanelCancel($event)\"\r\n (keydown.Tab)=\"onTabKeyDown($event, index)\"\r\n [formLayoutShowLabel]=\"true\"\r\n ></bsu-column-renderer>\r\n </div>\r\n }\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\r\n\r\nimport { ENTER, ESCAPE, SPACE, TAB } from '@angular/cdk/keycodes';\r\nimport { KeyUtil, Size } from '@fundamental-ngx/core/utils';\r\nimport { AvatarGroupComponent, PopoverBodyComponent, PopoverComponent } from '@fundamental-ngx/core';\r\nimport { KanbanBaseComponent } from '../kanban-base/kanban-base.component';\r\nimport { MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\n\r\n@Component({\r\n selector: 'bk-avatar-group',\r\n templateUrl: './barsa-avatar-group.component.html',\r\n styleUrls: ['./barsa-avatar-group.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class BarsaAvatarGroupComponent extends KanbanBaseComponent {\r\n @ViewChild('overflowPopoverBody')\r\n popoverBodyComponent: PopoverBodyComponent;\r\n @ViewChild(AvatarGroupComponent, { static: true, read: AvatarGroupComponent }) avatarGroupCom: AvatarGroupComponent;\r\n @Input() existedItems: MetaobjectDataModel[];\r\n @Input() availableItems: MetaobjectDataModel[];\r\n @Input() viewSetting: KanbanViewSetting;\r\n @Input() visibleFields: string[] = [];\r\n @Input() addItem: boolean;\r\n @Input() size: Size = 'l';\r\n\r\n personDetails: any = null;\r\n overflowPopoverStage: 'main' | 'detail' = 'main';\r\n overflowItemsCount;\r\n get isDetailStage(): boolean {\r\n return this.overflowPopoverStage === 'detail';\r\n }\r\n\r\n isOpenChanged(isOpened: boolean): void {\r\n if (isOpened) {\r\n this.openOverflowMain();\r\n }\r\n }\r\n\r\n newItem(newItem): void {\r\n const exist = this.existedItems.find((item) => item.Id === newItem.Id);\r\n if (!exist) {\r\n this.existedItems.push(newItem);\r\n }\r\n }\r\n\r\n deleteAvatar(idx: number): void {\r\n this.existedItems.splice(idx, 1);\r\n }\r\n\r\n openOverflowMain(): void {\r\n this.personDetails = null;\r\n this.overflowPopoverStage = 'main';\r\n\r\n setTimeout(() => this.popoverBodyComponent?._focusFirstTabbableElement(), 0);\r\n }\r\n\r\n handleControlClick(_event: MouseEvent, popover: PopoverComponent): void {\r\n popover.open();\r\n }\r\n\r\n handleControlKeydown(event: KeyboardEvent, popover: PopoverComponent): void {\r\n if (!KeyUtil.isKeyCode(event, [ESCAPE, TAB, SPACE, ENTER])) {\r\n return;\r\n }\r\n\r\n if (KeyUtil.isKeyCode(event, [ESCAPE, TAB])) {\r\n popover.close();\r\n }\r\n\r\n if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\r\n popover.open();\r\n }\r\n }\r\n}\r\n","<fd-avatar-group #avatarGroupCom type=\"group\" [size]=\"size\">\r\n <fd-popover\r\n [noArrow]=\"false\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [triggers]=\"[]\"\r\n [closeOnOutsideClick]=\"true\"\r\n [closeOnEscapeKey]=\"true\"\r\n (isOpenChange)=\"isOpenChanged($event)\"\r\n placement=\"bottom\"\r\n [maxWidth]=\"312\"\r\n #overflowPopover\r\n >\r\n <fd-popover-control\r\n fd-avatar-group-popover-control\r\n [attr.aria-label]=\"\r\n 'Has popup type dialog Conjoined avatars, ' +\r\n ' avatars displayed, ' +\r\n 1 +\r\n ' avatars hidden, activate for complete list'\r\n \"\r\n (click)=\"handleControlClick($event, overflowPopover)\"\r\n (keydown)=\"handleControlKeydown($event, overflowPopover)\"\r\n >\r\n @for (person of existedItems; track person) {\r\n <div fd-avatar-group-item>\r\n @if (!person[viewSetting.AssigneeImage]) {\r\n <fd-avatar\r\n [label]=\"person[viewSetting.AssigneeName]\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n role=\"img\"\r\n [circle]=\"true\"\r\n [border]=\"true\"\r\n [size]=\"size\"\r\n ></fd-avatar>\r\n } @if (person[viewSetting.AssigneeImage]; as avatar) {\r\n <fd-avatar\r\n role=\"img\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n [circle]=\"true\"\r\n [border]=\"true\"\r\n [size]=\"size\"\r\n [image]=\"(avatar.FileId | picFieldSrc: 'ID':person.Id) || ''\"\r\n >\r\n </fd-avatar>\r\n }\r\n </div>\r\n }\r\n <button fd-button fd-avatar-group-overflow-button tabindex=\"-1\" [compact]=\"false\" [size]=\"size\">\r\n <bdi fd-avatar-group-overflow-button-text> 1 </bdi>\r\n </button>\r\n </fd-popover-control>\r\n <fd-popover-body #overflowPopoverBody aria-labelledby=\"avatar-group-1-popover-header\" role=\"tooltip\">\r\n <div class=\"fd-popover__wrapper\">\r\n <div fd-popover-body-header>\r\n <div fd-bar barDesign=\"header\">\r\n <div fd-bar-left>\r\n @if (isDetailStage) {\r\n <fd-button-bar\r\n (click)=\"openOverflowMain()\"\r\n glyph=\"navigation-left-arrow\"\r\n fdType=\"transparent\"\r\n aria-label=\"Back\"\r\n title=\"Back\"\r\n ></fd-button-bar>\r\n }\r\n <fd-bar-element id=\"avatar-group-1-popover-header\">\r\n {{ isDetailStage ? 'Business Card' : 'Team Members (' + existedItems?.length + ')' }}\r\n </fd-bar-element>\r\n @if (isDetailStage) {\r\n <fd-bar-element> </fd-bar-element>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n fd-avatar-group-overflow-body\r\n [noPadding]=\"isDetailStage\"\r\n [noHorizontalScroll]=\"isDetailStage\"\r\n [noVerticalScroll]=\"false\"\r\n >\r\n @if (overflowPopoverStage === 'main') { @for (person of existedItems; track person; let idx =\r\n $index) {\r\n <div fd-avatar-group-overflow-item>\r\n <fd-popover [triggers]=\"['click']\">\r\n <fd-popover-control>\r\n @if (!person[viewSetting.AssigneeImage]) {\r\n <fd-avatar\r\n fd-avatar-group-focusable-avatar\r\n [circle]=\"true\"\r\n size=\"s\"\r\n [label]=\"person[viewSetting.AssigneeName]\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n role=\"img\"\r\n ></fd-avatar>\r\n } @if (person[viewSetting.AssigneeImage]; as avatar) {\r\n <fd-avatar\r\n fd-avatar-group-focusable-avatar\r\n role=\"img\"\r\n [title]=\"person[viewSetting.AssigneeName]\"\r\n [ariaLabel]=\"person[viewSetting.AssigneeName] + ' avatar'\"\r\n [circle]=\"true\"\r\n size=\"s\"\r\n [image]=\"(avatar.FileId | picFieldSrc: 'ID':person.Id) || ''\"\r\n ></fd-avatar>\r\n }\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <div class=\"avatar-actions\">\r\n <button\r\n fd-button\r\n (click)=\"deleteAvatar(idx)\"\r\n [label]=\"'Delete' | bbbTranslate\"\r\n glyph=\"decline\"\r\n ></button>\r\n <button fd-button [label]=\"'Show' | bbbTranslate\" glyph=\"detail-view\"></button>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </div>\r\n } }\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n</fd-avatar-group>\r\n\r\n@if (addItem) {\r\n<fd-popover\r\n #peoplePopover\r\n [triggers]=\"[]\"\r\n [focusTrapped]=\"false\"\r\n [closeOnOutsideClick]=\"true\"\r\n [noArrow]=\"false\"\r\n placement=\"bottom\"\r\n [focusAutoCapture]=\"true\"\r\n>\r\n <fd-popover-control>\r\n <div>\r\n <button\r\n fd-button\r\n (click)=\"openPopover($event, peoplePopover)\"\r\n fdType=\"transparent\"\r\n glyph=\"sys-add\"\r\n ></button>\r\n </div>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (item of availableItems; track item) {\r\n <li fd-list-item (click)=\"newItem(item)\">\r\n @if (visibleFields.length > 0) { @for (field of visibleFields; track field) {\r\n {{ item[field] }}\r\n } } @else {\r\n {{ item }}\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n</fd-popover>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnInit,\r\n SimpleChanges,\r\n ViewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\r\n\r\nimport { MetaobjectDataModel, MultipleGroupByPipe, ReportViewBaseComponent, SortDirection } from 'barsa-novin-ray-core';\r\nimport { KanbanViewSetting } from '../Models/kanban-view-setting.interface';\r\nimport { DropInfo } from '../Models/drop-info';\r\n\r\n@Component({\r\n selector: 'bk-kanban-view',\r\n templateUrl: './kanban-view.component.html',\r\n styleUrls: ['./kanban-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class KanbanViewComponent extends ReportViewBaseComponent<KanbanViewSetting> implements OnInit {\r\n @ViewChild('inputEl', { read: ElementRef }) inputEl: ElementRef<any>;\r\n @Input() kanbanColumns: MetaobjectDataModel[];\r\n @Input() groupbyProperty = 'State';\r\n dropActionTodo: DropInfo;\r\n allAvailableAssignees: MetaobjectDataModel[];\r\n isNewColumnMode = false;\r\n newCard: any = { Id: null, $Caption: null };\r\n newColumn: any = { Id: null, $Caption: null };\r\n _multipleGroup = inject(MultipleGroupByPipe);\r\n groupedMoList = signal({});\r\n sceneConfig = {\r\n scene: { url: 'assets/images/sapIllus-Scene-NoMail.svg', id: 'sapIllus-Scene-NoMail-1' },\r\n dialog: { url: 'assets/images/sapIllus-Dialog-NoMail.svg', id: 'sapIllus-Dialog-NoMail' }\r\n };\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n const columnsReport = this.viewSetting.ColumnsReport;\r\n this._portalService.ReportExecuteById(columnsReport?.Id).subscribe((report) => {\r\n this.kanbanColumns = report.MoDataList;\r\n this._changeDetect();\r\n });\r\n // this.formSetting.View.ControlInfo.forEach((c) => (c.InlineEditMode = true));\r\n const assigneesReport = this.viewSetting.AssigneesReport?.$Caption;\r\n if (assigneesReport) {\r\n this._portalService.ReportExecute(assigneesReport).subscribe((report) => {\r\n this.allAvailableAssignees = report.MoDataList;\r\n this._changeDetect();\r\n });\r\n }\r\n this.viewSetting = {\r\n ...this.viewSetting,\r\n ...this._findColumn(this.allColumns, [\r\n this.viewSetting.Cover,\r\n this.viewSetting.State,\r\n this.viewSetting.Caption\r\n ])\r\n };\r\n this._prepareGroupMoList(this.moDataList);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { moDataList } = changes;\r\n if (moDataList && !moDataList.firstChange) {\r\n this._prepareGroupMoList(moDataList.currentValue);\r\n }\r\n }\r\n _prepareGroupMoList(molist: MetaobjectDataModel[]): void {\r\n const column = this._findColumnByDbName.transform(this.allColumns, this.viewSetting.State);\r\n const name = column?.Name || this.viewSetting.State;\r\n const dict = {};\r\n const s: any[] = this._multipleGroup.transform(molist, [\r\n {\r\n IsGrouped: true,\r\n Name: name,\r\n SortDirection: SortDirection.ASC\r\n }\r\n ]);\r\n s.forEach((c) => {\r\n if (c.$Group) {\r\n dict[c.$Group] = c.$Children;\r\n }\r\n });\r\n this.groupedMoList.set(dict);\r\n }\r\n\r\n onAddNewColumn(): void {\r\n this.kanbanColumns.push(this.newColumn);\r\n this._cdr.detectChanges();\r\n this._resetNewColumn();\r\n this._scrollInputIntoView();\r\n }\r\n\r\n onActiveNewColumnMode(): void {\r\n this._changeNewColumnMode(true);\r\n }\r\n\r\n onCancelNewColumn(): void {\r\n this._changeNewColumnMode(false);\r\n this._resetNewColumn();\r\n }\r\n\r\n onInitNewCard(groupby: string): void {\r\n this._resetNewCard();\r\n this.newCard[this.groupbyProperty] = groupby;\r\n }\r\n\r\n onAddNewCard(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this._addNewCard();\r\n }\r\n\r\n onNewCardInputFocusout(): void {\r\n if (this.newCard.$Caption) {\r\n this._addNewCard();\r\n } else {\r\n this._cancelNewCard();\r\n }\r\n }\r\n\r\n onCancelNewCard(e: MouseEvent): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this._cancelNewCard();\r\n }\r\n\r\n onDrop(event, isColumn?: boolean): void {\r\n let previousIndex;\r\n let currentIndex;\r\n const array = event.container.data;\r\n\r\n if (isColumn) {\r\n previousIndex = event.previousIndex;\r\n currentIndex = event.currentIndex;\r\n } else {\r\n const draggedItemId = this.dropActionTodo.draggedId;\r\n if (!draggedItemId) {\r\n return;\r\n }\r\n const draggedItem = this._getMoById(draggedItemId);\r\n const targetState = this.dropActionTodo.targetState;\r\n previousIndex = array.indexOf(draggedItem);\r\n currentIndex = this.dropActionTodo.targetIndex;\r\n draggedItem.State = targetState;\r\n this._stopDragging();\r\n }\r\n\r\n moveItemInArray(array, previousIndex, currentIndex);\r\n }\r\n\r\n onDragMove(event, draggedMo, draggedIndex: number, targetState: MetaobjectDataModel): void {\r\n const elementFromPoint = document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y);\r\n\r\n if (targetState) {\r\n }\r\n if (!elementFromPoint) {\r\n this._stopDragging();\r\n return;\r\n }\r\n const targetNodeElement = elementFromPoint.closest('[state]');\r\n if (!targetNodeElement) {\r\n this._stopDragging();\r\n return;\r\n }\r\n this.dropActionTodo = {\r\n draggedId: draggedMo.Id,\r\n targetId: targetNodeElement.getAttribute('id'),\r\n targetState: null,\r\n targetIndex: Number(targetNodeElement.getAttribute('index'))\r\n };\r\n const targetRect = targetNodeElement.getBoundingClientRect();\r\n const oneThird = targetRect.height / 3;\r\n\r\n const isCardTarget = !targetNodeElement.classList.contains('column');\r\n\r\n const isBefore = event.pointerPosition.y - targetRect.top < oneThird && isCardTarget;\r\n\r\n const isAfter = event.pointerPosition.y - targetRect.top > 2 * oneThird && isCardTarget;\r\n\r\n const isInside = !isCardTarget;\r\n\r\n const targetIndex = this.dropActionTodo.targetIndex ?? -1;\r\n const targetMo = this.moDataList[targetIndex];\r\n\r\n if (isCardTarget) {\r\n this.dropActionTodo.targetState = targetMo[this.viewSetting.State];\r\n } else {\r\n const state = targetNodeElement.getAttribute('state');\r\n const moid = targetNodeElement.getAttribute('id');\r\n state !== null &&\r\n moid !== null &&\r\n (this.dropActionTodo.targetState = {\r\n $Caption: state,\r\n Id: moid,\r\n $TypeDefId: draggedMo[this.viewSetting.State]?.$TypeDefId\r\n });\r\n }\r\n if (isBefore) {\r\n this.dropActionTodo.action = 'before';\r\n this.dropActionTodo.targetIndex = draggedIndex > targetIndex ? targetIndex : targetIndex - 1;\r\n } else if (isAfter) {\r\n this.dropActionTodo.action = 'after';\r\n this.dropActionTodo.targetIndex = draggedIndex < targetIndex ? targetIndex : targetIndex + 1;\r\n } else if (isInside) {\r\n this.dropActionTodo.action = 'inside';\r\n this.dropActionTodo.targetIndex = 0;\r\n }\r\n // console.log(this.dropActionTodo.targetState);\r\n this._showDragInfo();\r\n }\r\n private _changeDetect(): void {\r\n this._cdr.detectChanges();\r\n }\r\n\r\n private _stopDragging(): void {\r\n this._clearDragInfo();\r\n this._resetDropActionTodo();\r\n }\r\n\r\n private _changeNewColumnMode(mode: boolean): void {\r\n this.isNewColumnMode = mode;\r\n }\r\n\r\n private _resetDropActionTodo(): void {\r\n this.dropActionTodo = {\r\n targetId: null,\r\n draggedId: null,\r\n targetState: null,\r\n targetIndex: null,\r\n action: null\r\n };\r\n }\r\n\r\n private _scrollInputIntoView(): void {\r\n const inputEl: HTMLInputElement = this.inputEl.nativeElement;\r\n inputEl.focus();\r\n inputEl.scrollIntoView({ inline: 'end' });\r\n }\r\n\r\n private _resetNewColumn(): void {\r\n this.newColumn = { Id: '', $Caption: '' };\r\n }\r\n\r\n private _clearDragInfo(dropped = false): void {\r\n if (dropped) {\r\n this._resetDropActionTodo();\r\n }\r\n const elDom = this._el.nativeElement;\r\n elDom\r\n .querySelectorAll('.drop-before')\r\n .forEach((element) => this._renderer2.removeClass(element, 'drop-before'));\r\n elDom.querySelectorAll('.drop-after').forEach((element) => this._renderer2.removeClass(element, 'drop-after'));\r\n elDom\r\n .querySelectorAll('.drop-inside')\r\n .forEach((element) => this._renderer2.removeClass(element, 'drop-inside'));\r\n }\r\n\r\n private _showDragInfo(): void {\r\n this._clearDragInfo();\r\n if (this.dropActionTodo.targetId) {\r\n const targetNodeElement = this._el.nativeElement.querySelector('#' + this.dropActionTodo.targetId);\r\n if (!targetNodeElement) {\r\n this._resetDropActionTodo();\r\n return;\r\n }\r\n this._renderer2.addClass(targetNodeElement, 'drop-' + this.dropActionTodo?.action);\r\n }\r\n }\r\n\r\n private _addNewCard(): void {\r\n this.moDataList.push(this.newCard);\r\n const currentGroupby = this.newCard[this.groupbyProperty];\r\n this.onInitNewCard(currentGroupby);\r\n }\r\n\r\n private _resetNewCard(): void {\r\n this.newCard = { Id: null, $Caption: null };\r\n }\r\n\r\n private _cancelNewCard(): void {\r\n this._resetNewCard();\r\n }\r\n\r\n private _getMoById(id: string): MetaobjectDataModel {\r\n return this.moDataList.find((c) => c.Id === id);\r\n }\r\n\r\n private _findColumn(_allColumns, columnsName: string[]): object {\r\n const columns = {};\r\n columnsName.forEach((name) => {\r\n columns[name + 'Column'] = this._findColumnByDbName.transform(this.allColumns, name);\r\n });\r\n return columns;\r\n }\r\n}\r\n","<fd-layout-panel>\r\n <fd-layout-panel-body [bleed]=\"true\">\r\n @if (isCheckList) {\r\n <table fd-table>\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th fd-table-cell>\r\n <fd-checkbox\r\n name=\"allCheckbox\"\r\n [ngModel]=\"allChecked\"\r\n (ngModelChange)=\"onAllCheckbox($event)\"\r\n >{{ 'All' | bbbTranslate }}</fd-checkbox\r\n >\r\n </th>\r\n </tr>\r\n </thead>\r\n </table>\r\n }\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n\r\n<fd-layout-grid\r\n class=\"columns\"\r\n fillEmptySpace\r\n [setMinHeight]=\"true\"\r\n [disable]=\"true\"\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListData]=\"kanbanColumns\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [id]=\"'$Root'\"\r\n (cdkDropListDropped)=\"onDrop($event, true)\"\r\n>\r\n @for (column of kanbanColumns; track column; let columnIndex = $index) {\r\n <div\r\n [fdLayoutGridCol]=\"12\"\r\n [colMd]=\"4\"\r\n [colLg]=\"3\"\r\n [colXl]=\"2\"\r\n class=\"column\"\r\n [id]=\"column.Id\"\r\n [attr.state]=\"column.$Caption\"\r\n cdkDrag\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnCard;\r\n context: {\r\n column: column,\r\n columnIndex: columnIndex\r\n }\r\n \"\r\n ></ng-container>\r\n </div>\r\n }\r\n</fd-layout-grid>\r\n\r\n<!--noData-->\r\n\r\n<!--column card-->\r\n<ng-template #columnCard let-column=\"column\" let-columnIndex=\"columnIndex\">\r\n <fd-card cardType=\"quickView\" class=\"docs-flex-item-margin\" ellipsify>\r\n <fd-card-header>\r\n <fd-card-main-header [style.background]=\"column.Color\" [class.hasColumnColor]=\"column.Color\">\r\n <h2 fd-card-title>{{ column.$Caption }}</h2>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content\r\n cdkDropList\r\n (cdkDropListDropped)=\"onDrop($event)\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [cdkDropListData]=\"moDataList\"\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnMoList;\r\n context: { $implicit: groupedMoList()[column.$Caption], column: column }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-card-content>\r\n <!-- <fd-card-footer class=\"column-footer\">\r\n @if (newCard[groupbyProperty] === column.$Caption) {\r\n <div class=\"new-card\">\r\n <fd-card>\r\n <div fd-form-item>\r\n <textarea\r\n fd-form-control\r\n [autofocus]=\"true\"\r\n [(ngModel)]=\"newCard.$Caption\"\r\n (keydown.enter)=\"onAddNewCard($event)\"\r\n (focusout)=\"onNewCardInputFocusout()\"\r\n [placeholder]=\"'Title' | bbbTranslate\"\r\n ></textarea>\r\n </div>\r\n </fd-card>\r\n <div class=\"new-card-actions\">\r\n <button\r\n fd-button\r\n (click)=\"onAddNewCard($event)\"\r\n fdType=\"emphasized\"\r\n class=\"add-card-btn\"\r\n [label]=\"'افزودن'\"\r\n ></button>\r\n <fd-icon (mousedown)=\"onCancelNewCard($event)\" glyph=\"decline\"></fd-icon>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"add-new-card\" (click)=\"onInitNewCard(column.$Caption)\">\r\n <span>\r\n <fd-icon glyph=\"add\"></fd-icon>\r\n کارت جدید\r\n </span>\r\n </div>\r\n }\r\n </fd-card-footer> -->\r\n </fd-card>\r\n</ng-template>\r\n\r\n<ng-template #columnMoList let-moList let-column=\"column\">\r\n @if(moList && moList.length>0){ @for (mo of moList; track mo; let index = $index) {\r\n <bk-kanban-card\r\n [mo]=\"mo\"\r\n [allColumns]=\"columns\"\r\n [viewSetting]=\"viewSetting\"\r\n [formSetting]=\"formSetting\"\r\n [styleIndex]=\"mo.$StyleIndex\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [allAvailableAssignees]=\"allAvailableAssignees\"\r\n [index]=\"index\"\r\n [attr.id]=\"mo.Id\"\r\n [inlineEditMode]=\"inlineEditMode\"\r\n [isChecked]=\"mo.$IsChecked\"\r\n [attr.state]=\"column.$Caption\"\r\n [attr.index]=\"index\"\r\n [class.selected]=\"mo.$IsChecked\"\r\n (cdkDragMoved)=\"onDragMove($event, mo, index, column)\"\r\n (click)=\"onRowCheck({mo, index})\"\r\n (dblclick)=\"onRowClick({mo, index})\"\r\n cdkDrag\r\n [cdkDropListDisabled]=\"viewSetting.CanReorder\"\r\n [cdkDragDisabled]=\"true\"\r\n >\r\n </bk-kanban-card>\r\n } }@else{\r\n <h3 fd-title>{{ 'NoData' | bbbTranslate }}</h3>\r\n }\r\n</ng-template>\r\n","import { ComponentFactoryResolver, NgModule, NO_ERRORS_SCHEMA, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BarsaNovinRayCoreModule, BaseModule, DynamicComponentService } from 'barsa-novin-ray-core';\r\nimport { KanbanViewComponent } from './kanban-view/kanban-view.component';\r\nimport { FundamentalNgxCoreModule } from '@fundamental-ngx/core';\r\nimport { BarsaAvatarGroupComponent } from './avatar-group/barsa-avatar-group.component';\r\n\r\nimport { BarsaEchartsModule } from 'barsa-echarts';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { KanbanCardComponent } from './kanban-card/kanban-card.component';\r\nimport { KanbanTagsComponent } from './kanban-tags/kanban-tags.component';\r\nimport { KanbanBaseComponent } from './kanban-base/kanban-base.component';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { BarsaSapUiModule } from 'barsa-sap-ui';\r\nimport { PlatformMenuModule } from '@fundamental-ngx/platform';\r\n\r\nconst components = [\r\n KanbanViewComponent,\r\n BarsaAvatarGroupComponent,\r\n KanbanCardComponent,\r\n KanbanTagsComponent,\r\n KanbanBaseComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: [...components],\r\n schemas: [NO_ERRORS_SCHEMA],\r\n exports: [...components],\r\n imports: [\r\n CommonModule,\r\n BarsaNovinRayCoreModule,\r\n FundamentalNgxCoreModule,\r\n PlatformMenuModule,\r\n BarsaEchartsModule,\r\n BarsaSapUiModule,\r\n FormsModule,\r\n DragDropModule\r\n ],\r\n providers: [provideHttpClient(withInterceptorsFromDi())]\r\n})\r\nexport class BarsaKanbanModule extends BaseModule {\r\n protected dcm: DynamicComponentService;\r\n protected componentFactoryResolver: ComponentFactoryResolver;\r\n\r\n protected dynamicComponents = [...components];\r\n\r\n /** Inserted by Angular inject() migration for backwards compatibility */\r\n \r\n\r\n constructor() {\r\n const dcm = inject(DynamicComponentService);\r\n const componentFactoryResolver = inject(ComponentFactoryResolver);\r\n\r\n super(dcm, componentFactoryResolver, 'BarsaKanbanModule');\r\n \r\n this.dcm = dcm;\r\n this.componentFactoryResolver = componentFactoryResolver;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i1","i2","i3","i4","i6","i5","i9","i11.KanbanCardComponent"],"mappings":"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"}
|