@rucken/todo-web
Version:
Base components and ui for todo application maked on Angular7+ and based on Rucken template
1,183 lines (1,158 loc) • 75.5 kB
JavaScript
import { CommonModule } from '@angular/common';
import { NgModule, Component, ChangeDetectionStrategy, Input, Inject, ViewChild, EventEmitter, Output, forwardRef } from '@angular/core';
import { translate, LANGUAGES_ITEM_CONFIG_TOKEN, BasePromptFormModalComponent, ModalsService, ErrorsExtractor, UserPermPipe, BaseEntityListComponent, BaseEntityListModalComponent, User, USERS_CONFIG_TOKEN } from '@rucken/core';
import { __extends, __decorate, __metadata, __assign } from 'tslib';
import { TranslateService, TranslateModule } from '@ngx-translate/core';
import { Project, PROJECTS_CONFIG_TOKEN, StatusWithProject, STATUSES_CONFIG_TOKEN, Task, TASKS_CONFIG_TOKEN } from '@rucken/todo-core';
import { DynamicRepository, ProviderActionEnum } from 'ngx-repository';
import { BindIoInner, NgxBindIOModule } from 'ngx-bind-io';
import { PromptFormModalModule, WebModalsModule, EntityGridModule, EntityGridModalModule, UsersGridModalComponent, UsersGridComponent, UsersGridModalModule, UserModalModule, EntityInputModule, EntitySelectModule } from '@rucken/web';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
import { BsModalService } from 'ngx-bootstrap/modal';
import { map } from 'rxjs/operators';
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var RuI18n = {
'Select project': 'Выберите проект',
Select: 'Выбрать',
'Delete status': 'Удалить статус',
'Do you really want to delete status "{{title}}" from project?': 'Вы действительно хотите удалить статус "{{title}}" у проекта?',
'Select status for append to project': 'Выберите статус для добавления в проект',
'Delete user': 'Закрыть доступ',
'Do you really want to delete user "{{fullName}}" from project?': 'Вы действительно хотите закрыть доступ к проекту пользователю "{{fullName}}"?',
'Select user for append to project': 'Выберите пользователя для добавления в проект',
Projects: 'Проекты',
'Select status': 'Выберите статус',
Statuses: 'Статусы',
'Select task': 'Выберите задачу',
Tasks: 'Задачи',
Russian: 'Русский',
English: 'Английский',
Delete: 'Удалить',
Append: 'Добавить',
Save: 'Сохранить',
Create: 'Создать',
Close: 'Закрыть'
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ɵ0 = {
title: translate('Russian'),
code: 'ru',
translations: [RuI18n]
}, ɵ1 = {
title: translate('English'),
code: 'en',
translations: []
};
var RuckenTodoWebModule = /** @class */ (function () {
function RuckenTodoWebModule() {
}
RuckenTodoWebModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
providers: [
{
provide: LANGUAGES_ITEM_CONFIG_TOKEN,
useValue: ɵ0,
multi: true
},
{
provide: LANGUAGES_ITEM_CONFIG_TOKEN,
useValue: ɵ1,
multi: true
}
]
},] }
];
return RuckenTodoWebModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectModalComponent = /** @class */ (function (_super) {
__extends(ProjectModalComponent, _super);
function ProjectModalComponent() {
var _this = _super.call(this) || this;
_this.apiUrl = undefined;
_this.group(Project);
return _this;
}
ProjectModalComponent.decorators = [
{ type: Component, args: [{
selector: 'project-modal',
template: "<form\n [formGroup]=\"form\"\n novalidate>\n <prompt-form-modal [bindIO]>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <form-group\n [bindIO]\n name=\"title\"\n [title]=\"strings.title\"\n focus>\n <input\n formControlName=\"title\"\n [readonly]=\"readonly\">\n </form-group>\n <form-group\n [bindIO]\n name=\"isPublic\"\n [title]=\"false\">\n <label>\n <input\n formControlName=\"isPublic\"\n type=\"checkbox\"\n [readonly]=\"readonly\"\n [disableControl]=\"readonly\">\n {{strings.isPublic | translate}}\n </label>\n </form-group>\n </div>\n <div class=\"col-md-6\">\n <form-group\n [bindIO]\n name=\"description\"\n [title]=\"strings.description\">\n <textarea\n formControlName=\"description\"\n [readonly]=\"readonly\">\n </textarea>\n </form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <h4 *ngIf=\"!readonly\">{{strings.statuses | translate}}</h4>\n <project-statuses-grid\n formControlName=\"statuses\"\n [project]=\"data\"\n [readonly]=\"readonly\"\n [title]=\"strings.statuses\"\n [apiUrl]=\"apiUrl\"></project-statuses-grid>\n </div>\n <div class=\"col-md-6\">\n <h4 *ngIf=\"!readonly\">{{strings.users | translate}}</h4>\n <project-users-grid\n formControlName=\"users\"\n [readonly]=\"readonly\"\n [title]=\"strings.users\"\n [apiUrl]=\"apiUrl\"></project-users-grid>\n </div>\n </div>\n </prompt-form-modal>\n</form>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectModalComponent.ctorParameters = function () { return []; };
ProjectModalComponent.propDecorators = {
apiUrl: [{ type: Input }]
};
ProjectModalComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [])
], ProjectModalComponent);
return ProjectModalComponent;
}(BasePromptFormModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectsGridComponent = /** @class */ (function (_super) {
__extends(ProjectsGridComponent, _super);
function ProjectsGridComponent(modalsService, errorsExtractor, translateService, dynamicRepository, projectsConfig, userPermPipe) {
var _this = _super.call(this, dynamicRepository.fork(Project), modalsService, Project) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.projectsConfig = projectsConfig;
_this.userPermPipe = userPermPipe;
_this.autoload = false;
_this.modalItem = {
component: ProjectModalComponent,
class: 'modal-lg'
};
_this.modalDelete = {
class: 'modal-md'
};
_this.title = translate('Projects');
return _this;
}
/**
* @return {?}
*/
ProjectsGridComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (!this.mockedItems) {
this.useRest(__assign({ apiUrl: this.apiUrl }, this.projectsConfig, { autoload: this.autoload }));
}
if (this.mockedItems) {
this.useMock(__assign({ items: this.mockedItems }, this.projectsConfig, { autoload: this.autoload }));
}
};
/**
* @param {?} item
* @return {?}
*/
ProjectsGridComponent.prototype.onDblClick = /**
* @param {?} item
* @return {?}
*/
function (item) {
if (this.userPermPipe.transform(item)) {
this.onUpdateClick(item);
}
else {
this.onViewClick(item);
}
};
ProjectsGridComponent.decorators = [
{ type: Component, args: [{
selector: 'projects-grid',
template: "<entity-grid\n [bindIO]\n [columns]=\"'change_project'|perm:false:['title','users','isPublic','action']:['title','users']|async\"\n [translatedCells]=\"['isPublic']\"\n [enableCreate]=\"'add_project' | perm:false | async\"\n [enableUpdate]=\"'change_project' | perm:false | async\"\n [enableDelete]=\"'delete_project' | perm:false | async\"\n [gridCellActionContent]=\"gridCellActionContent\"\n #grid>\n</entity-grid>\n<ng-template\n #gridCellActionContent\n let-ctx>\n <button\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"grid.onUpdate(ctx.item)\"\n *ngIf=\"(grid.notReadonlyAndEnableUpdate$ | async) && (ctx.item|userPerm)\">\n <fa-icon [icon]=\"['fas', 'edit']\"></fa-icon>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"grid.onDelete(ctx.item)\"\n *ngIf=\"(grid.notReadonlyAndEnableDelete$ | async) && (ctx.item|userPerm)\">\n <fa-icon [icon]=\"['fas', 'trash']\"></fa-icon>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"grid.onView(ctx.item)\"\n *ngIf=\"!(ctx.item|userPerm)\">\n <fa-icon [icon]=\"['fas', 'eye']\"></fa-icon>\n </button>\n</ng-template>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectsGridComponent.ctorParameters = function () { return [
{ type: ModalsService },
{ type: ErrorsExtractor },
{ type: TranslateService },
{ type: DynamicRepository },
{ type: undefined, decorators: [{ type: Inject, args: [PROJECTS_CONFIG_TOKEN,] }] },
{ type: UserPermPipe }
]; };
ProjectsGridComponent.propDecorators = {
autoload: [{ type: Input }],
modalItem: [{ type: Input }],
modalDelete: [{ type: Input }],
title: [{ type: Input }]
};
ProjectsGridComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository, Object, UserPermPipe])
], ProjectsGridComponent);
return ProjectsGridComponent;
}(BaseEntityListComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectsGridModalComponent = /** @class */ (function (_super) {
__extends(ProjectsGridModalComponent, _super);
function ProjectsGridModalComponent() {
var _this = _super.call(this) || this;
_this.apiUrl = undefined;
return _this;
}
ProjectsGridModalComponent.decorators = [
{ type: Component, args: [{
selector: 'projects-grid-modal',
template: "<entity-grid-modal [bindIO]>\n <projects-grid\n [apiUrl]=\"apiUrl\"\n #grid>\n </projects-grid>\n</entity-grid-modal>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectsGridModalComponent.ctorParameters = function () { return []; };
ProjectsGridModalComponent.propDecorators = {
grid: [{ type: ViewChild, args: ['grid',] }],
apiUrl: [{ type: Input }]
};
ProjectsGridModalComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [])
], ProjectsGridModalComponent);
return ProjectsGridModalComponent;
}(BaseEntityListModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectInputComponent = /** @class */ (function (_super) {
__extends(ProjectInputComponent, _super);
function ProjectInputComponent(modalsService, errorsExtractor, translateService, dynamicRepository, projectsConfig) {
var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, projectsConfig) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.projectsConfig = projectsConfig;
_this.select = new EventEmitter();
_this.modalAppendFromGrid = {
component: ProjectsGridModalComponent,
initialState: {
title: translate('Select project'),
yesTitle: translate('Select')
}
};
return _this;
}
/**
* @return {?}
*/
ProjectInputComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.mockedItems = [];
this.useMock(__assign({ items: this.mockedItems }, this.projectsConfig));
this.mockedItemsChange.subscribe((/**
* @param {?} items
* @return {?}
*/
function (items) { return _this.onSelect(items[0]); }));
};
/**
* @param {?} item
* @return {?}
*/
ProjectInputComponent.prototype.onSelect = /**
* @param {?} item
* @return {?}
*/
function (item) {
this.select.emit(item);
};
ProjectInputComponent.decorators = [
{ type: Component, args: [{
selector: 'project-input',
template: "<entity-input\n [bindIO]\n (select)=\"onAppendFromGridClick($event)\">\n <ng-content></ng-content>\n</entity-input>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectInputComponent.ctorParameters = function () { return [
{ type: ModalsService },
{ type: ErrorsExtractor },
{ type: TranslateService },
{ type: DynamicRepository },
{ type: undefined, decorators: [{ type: Inject, args: [PROJECTS_CONFIG_TOKEN,] }] }
]; };
ProjectInputComponent.propDecorators = {
select: [{ type: Output }],
modalAppendFromGrid: [{ type: Input }]
};
ProjectInputComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository, Object])
], ProjectInputComponent);
return ProjectInputComponent;
}(ProjectsGridComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusModalComponent = /** @class */ (function (_super) {
__extends(StatusModalComponent, _super);
function StatusModalComponent() {
var _this = _super.call(this) || this;
_this.group(StatusWithProject);
return _this;
}
StatusModalComponent.decorators = [
{ type: Component, args: [{
selector: 'status-modal',
template: "<form\n [formGroup]=\"form\"\n novalidate>\n <prompt-form-modal [bindIO]>\n <form-group\n [bindIO]\n name=\"name\"\n [title]=\"strings.name\"\n focus>\n <input\n formControlName=\"name\"\n [readonly]=\"readonly\">\n </form-group>\n <form-group\n [bindIO]\n name=\"title\"\n [title]=\"strings.title\">\n <input\n formControlName=\"title\"\n [readonly]=\"readonly\">\n </form-group>\n </prompt-form-modal>\n</form>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
StatusModalComponent.ctorParameters = function () { return []; };
StatusModalComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [])
], StatusModalComponent);
return StatusModalComponent;
}(BasePromptFormModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusModalModule = /** @class */ (function () {
function StatusModalModule() {
}
StatusModalModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, PromptFormModalModule, NgxBindIOModule],
declarations: [StatusModalComponent],
entryComponents: [StatusModalComponent],
exports: [StatusModalComponent, PromptFormModalModule]
},] }
];
return StatusModalModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusesGridComponent = /** @class */ (function (_super) {
__extends(StatusesGridComponent, _super);
function StatusesGridComponent(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) {
var _this = _super.call(this, dynamicRepository.fork(StatusWithProject), modalsService, StatusWithProject) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.statusesConfig = statusesConfig;
_this.autoload = false;
_this.modalItem = {
component: StatusModalComponent
};
_this.title = translate('Statuses');
_this.project = undefined;
return _this;
}
/**
* @return {?}
*/
StatusesGridComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (!this.mockedItems) {
this.useRest(__assign({ apiUrl: this.apiUrl }, this.statusesConfig, { autoload: this.autoload }));
}
if (this.mockedItems) {
this.useMock(__assign({ items: this.mockedItems }, this.statusesConfig, { autoload: this.autoload }));
}
this.onChangeFilter();
};
/**
* @param {?=} filter
* @return {?}
*/
StatusesGridComponent.prototype.onChangeFilter = /**
* @param {?=} filter
* @return {?}
*/
function (filter) {
filter = filter ? filter : {};
if (this.project) {
filter.project = this.project.id;
}
else {
filter.project = -1;
}
_super.prototype.onChangeFilter.call(this, filter);
};
/**
* @param {?=} item
* @return {?}
*/
StatusesGridComponent.prototype.defaultCreateCreateModal = /**
* @param {?=} item
* @return {?}
*/
function (item) {
item = item || new StatusWithProject();
item.project = this.project;
this.modalCreate = __assign({}, this.modalCreate, { initialState: __assign({}, this.modalCreate.initialState, { data: item }) });
return _super.prototype.defaultCreateCreateModal.call(this, item);
};
/**
* @param {?=} item
* @return {?}
*/
StatusesGridComponent.prototype.defaultCreateUpdateModal = /**
* @param {?=} item
* @return {?}
*/
function (item) {
item.project = this.project;
this.modalUpdate = __assign({}, this.modalUpdate, { initialState: __assign({}, this.modalUpdate.initialState, { data: item }) });
return _super.prototype.defaultCreateUpdateModal.call(this, item);
};
StatusesGridComponent.decorators = [
{ type: Component, args: [{
selector: 'statuses-grid',
template: "<entity-grid\n [bindIO]\n [columns]=\"['title','action']\"\n [enableCreate]=\"'add_status' | perm:false | async\"\n [enableUpdate]=\"'change_status' | perm:false | async\"\n [enableDelete]=\"'delete_status' | perm:false | async\">\n</entity-grid>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
StatusesGridComponent.ctorParameters = function () { return [
{ type: ModalsService },
{ type: ErrorsExtractor },
{ type: TranslateService },
{ type: DynamicRepository },
{ type: undefined, decorators: [{ type: Inject, args: [STATUSES_CONFIG_TOKEN,] }] }
]; };
StatusesGridComponent.propDecorators = {
autoload: [{ type: Input }],
modalItem: [{ type: Input }],
title: [{ type: Input }],
project: [{ type: Input }]
};
StatusesGridComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository, Object])
], StatusesGridComponent);
return StatusesGridComponent;
}(BaseEntityListComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusesGridModule = /** @class */ (function () {
function StatusesGridModule() {
}
StatusesGridModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, WebModalsModule, EntityGridModule, StatusModalModule, NgxBindIOModule],
declarations: [StatusesGridComponent],
exports: [StatusesGridComponent, EntityGridModule, StatusModalModule]
},] }
];
return StatusesGridModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusesGridModalComponent = /** @class */ (function (_super) {
__extends(StatusesGridModalComponent, _super);
function StatusesGridModalComponent() {
var _this = _super.call(this) || this;
_this.apiUrl = undefined;
_this.project = undefined;
return _this;
}
StatusesGridModalComponent.decorators = [
{ type: Component, args: [{
selector: 'statuses-grid-modal',
template: "<entity-grid-modal [bindIO]>\n <statuses-grid\n [apiUrl]=\"apiUrl\"\n [project]=\"project\"\n #grid>\n </statuses-grid>\n</entity-grid-modal>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
StatusesGridModalComponent.ctorParameters = function () { return []; };
StatusesGridModalComponent.propDecorators = {
grid: [{ type: ViewChild, args: ['grid',] }],
apiUrl: [{ type: Input }],
project: [{ type: Input }]
};
StatusesGridModalComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [])
], StatusesGridModalComponent);
return StatusesGridModalComponent;
}(BaseEntityListModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusesGridModalModule = /** @class */ (function () {
function StatusesGridModalModule() {
}
StatusesGridModalModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, EntityGridModalModule, StatusesGridModule, NgxBindIOModule],
declarations: [StatusesGridModalComponent],
entryComponents: [StatusesGridModalComponent],
exports: [StatusesGridModalComponent, EntityGridModalModule, StatusesGridModule]
},] }
];
return StatusesGridModalModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectStatusesGridComponent = /** @class */ (function (_super) {
__extends(ProjectStatusesGridComponent, _super);
function ProjectStatusesGridComponent(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) {
var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.statusesConfig = statusesConfig;
_this.modalDelete = {
initialState: {
title: translate('Delete status'),
message: translate('Do you really want to delete status "{{title}}" from project?')
}
};
_this.modalAppendFromGrid = {
component: StatusesGridModalComponent,
initialState: {
title: translate('Select status for append to project')
}
};
_this.project = undefined;
_this._onChange = (/**
* @param {?} value
* @return {?}
*/
function (value) { });
_this._onTouched = (/**
* @return {?}
*/
function () { });
return _this;
}
ProjectStatusesGridComponent_1 = ProjectStatusesGridComponent;
/**
* @param {?=} overrided
* @return {?}
*/
ProjectStatusesGridComponent.prototype.ngOnInit = /**
* @param {?=} overrided
* @return {?}
*/
function (overrided) {
var _this = this;
if (!overrided) {
return;
}
if (!this.mockedItems) {
this.useRest(__assign({ apiUrl: this.apiUrl + '/project/' + this.project.id, autoload: !!this.project.id }, this.statusesConfig, { globalEventResolver: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
}) }));
}
if (this.mockedItems) {
this.useMock(__assign({ items: this.mockedItems, autoload: true }, this.statusesConfig, { globalEventResolver: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
}) }));
}
if (this.mockedItemsChangeSubscription) {
this.mockedItemsChangeSubscription.unsubscribe();
}
this.mockedItemsChange.subscribe((/**
* @param {?} permissions
* @return {?}
*/
function (permissions) { return _this._onChange(permissions); }));
};
/**
* @return {?}
*/
ProjectStatusesGridComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.mockedItemsChangeSubscription) {
this.mockedItemsChangeSubscription.unsubscribe();
}
};
/**
* @param {?} statuses
* @return {?}
*/
ProjectStatusesGridComponent.prototype.writeValue = /**
* @param {?} statuses
* @return {?}
*/
function (statuses) {
this.mockedItems = statuses || [];
this.ngOnInit(true);
};
/**
* @param {?} fn
* @return {?}
*/
ProjectStatusesGridComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
ProjectStatusesGridComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onTouched = fn;
};
/**
* @param {?} isDisabled
* @return {?}
*/
ProjectStatusesGridComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) { };
var ProjectStatusesGridComponent_1;
ProjectStatusesGridComponent.decorators = [
{ type: Component, args: [{
selector: 'project-statuses-grid',
template: "<entity-grid\n [bindIO]\n [columns]=\"['title', 'action']\"\n (appendFromGrid)=\"onCreateClick()\"\n [enableCreate]=\"'add_status' | perm:false | async\"\n [enableUpdate]=\"'change_status' | perm:false | async\"\n [enableDelete]=\"'delete_status' | perm:false | async\">\n</entity-grid>\n",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return ProjectStatusesGridComponent_1; })),
multi: true
}
],
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectStatusesGridComponent.ctorParameters = function () { return [
{ type: ModalsService },
{ type: ErrorsExtractor },
{ type: TranslateService },
{ type: DynamicRepository },
{ type: undefined, decorators: [{ type: Inject, args: [STATUSES_CONFIG_TOKEN,] }] }
]; };
ProjectStatusesGridComponent.propDecorators = {
modalDelete: [{ type: Input }],
modalAppendFromGrid: [{ type: Input }],
project: [{ type: Input }]
};
ProjectStatusesGridComponent = ProjectStatusesGridComponent_1 = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository, Object])
], ProjectStatusesGridComponent);
return ProjectStatusesGridComponent;
}(StatusesGridComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectStatusesGridModule = /** @class */ (function () {
function ProjectStatusesGridModule() {
}
ProjectStatusesGridModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, EntityGridModule, StatusModalModule, StatusesGridModalModule, NgxBindIOModule],
declarations: [ProjectStatusesGridComponent],
exports: [ProjectStatusesGridComponent, EntityGridModule, StatusModalModule, StatusesGridModalModule]
},] }
];
return ProjectStatusesGridModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectUserModalComponent = /** @class */ (function (_super) {
__extends(ProjectUserModalComponent, _super);
function ProjectUserModalComponent() {
var _this = _super.call(this) || this;
_this.apiUrl = undefined;
_this.group(User);
return _this;
}
ProjectUserModalComponent.decorators = [
{ type: Component, args: [{
selector: 'project-user-modal',
template: "<form\n [formGroup]=\"form\"\n novalidate>\n <prompt-form-modal [bindIO]>\n <form-group\n [bindIO]\n name=\"username\"\n [title]=\"strings.username\"\n focus>\n <input\n formControlName=\"username\"\n [readonly]=\"readonly\">\n </form-group>\n <form-group\n [bindIO]\n name=\"email\"\n [title]=\"strings.email\">\n <input\n formControlName=\"email\"\n [readonly]=\"readonly\">\n </form-group>\n <form-group\n [bindIO]\n name=\"firstName\"\n [title]=\"strings.firstName\">\n <input\n formControlName=\"firstName\"\n [readonly]=\"readonly\">\n </form-group>\n <form-group\n [bindIO]\n name=\"lastName\"\n [title]=\"strings.lastName\">\n <input\n formControlName=\"lastName\"\n [readonly]=\"readonly\">\n </form-group>\n </prompt-form-modal>\n</form>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectUserModalComponent.ctorParameters = function () { return []; };
ProjectUserModalComponent.propDecorators = {
apiUrl: [{ type: Input }]
};
ProjectUserModalComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [])
], ProjectUserModalComponent);
return ProjectUserModalComponent;
}(BasePromptFormModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectUserModalModule = /** @class */ (function () {
function ProjectUserModalModule() {
}
ProjectUserModalModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, PromptFormModalModule, TranslateModule.forChild(), NgxBindIOModule],
declarations: [ProjectUserModalComponent],
entryComponents: [ProjectUserModalComponent],
exports: [ProjectUserModalComponent, PromptFormModalModule]
},] }
];
return ProjectUserModalModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectUsersGridComponent = /** @class */ (function (_super) {
__extends(ProjectUsersGridComponent, _super);
function ProjectUsersGridComponent(modalsService, errorsExtractor, translateService, dynamicRepository, modalService, usersConfig) {
var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, usersConfig) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.modalService = modalService;
_this.usersConfig = usersConfig;
_this.modalItem = {
component: ProjectUserModalComponent,
initialState: {
simpleMode: true
}
};
_this.modalDelete = {
initialState: {
title: translate('Delete user'),
message: translate('Do you really want to delete user "{{fullName}}" from project?')
}
};
_this.modalAppendFromGrid = {
component: UsersGridModalComponent,
initialState: {
title: translate('Select user for append to project'),
simpleMode: true
}
};
_this.project = undefined;
_this._onChange = (/**
* @param {?} value
* @return {?}
*/
function (value) { });
_this._onTouched = (/**
* @return {?}
*/
function () { });
return _this;
}
ProjectUsersGridComponent_1 = ProjectUsersGridComponent;
/**
* @param {?=} overrided
* @return {?}
*/
ProjectUsersGridComponent.prototype.ngOnInit = /**
* @param {?=} overrided
* @return {?}
*/
function (overrided) {
var _this = this;
if (!overrided) {
return;
}
if (!this.mockedItems) {
this.useRest(__assign({ apiUrl: this.apiUrl + '/project/' + this.project.id, autoload: !!this.project.id }, this.usersConfig, { globalEventResolver: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
}) }));
}
if (this.mockedItems) {
this.useMock(__assign({ items: this.mockedItems, autoload: true }, this.usersConfig, { globalEventResolver: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
function (data, action) {
return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
}) }));
}
if (this.mockedItemsChangeSubscription) {
this.mockedItemsChangeSubscription.unsubscribe();
}
this.mockedItemsChange.subscribe((/**
* @param {?} permissions
* @return {?}
*/
function (permissions) { return _this._onChange(permissions); }));
};
/**
* @return {?}
*/
ProjectUsersGridComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.mockedItemsChangeSubscription) {
this.mockedItemsChangeSubscription.unsubscribe();
}
};
/**
* @param {?} users
* @return {?}
*/
ProjectUsersGridComponent.prototype.writeValue = /**
* @param {?} users
* @return {?}
*/
function (users) {
this.mockedItems = users || [];
this.ngOnInit(true);
};
/**
* @param {?} fn
* @return {?}
*/
ProjectUsersGridComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
ProjectUsersGridComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onTouched = fn;
};
/**
* @param {?} isDisabled
* @return {?}
*/
ProjectUsersGridComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) { };
var ProjectUsersGridComponent_1;
ProjectUsersGridComponent.decorators = [
{ type: Component, args: [{
selector: 'project-users-grid',
template: "<entity-grid\n [bindIO]\n [columns]=\"['fullName', 'action']\"\n [enableCreate]=\"'change_project' | perm:false | async\"\n [enableUpdate]=\"false\"\n [enableDelete]=\"'change_project' | perm:false | async\">\n</entity-grid>\n",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return ProjectUsersGridComponent_1; })),
multi: true
}
],
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectUsersGridComponent.ctorParameters = function () { return [
{ type: ModalsService },
{ type: ErrorsExtractor },
{ type: TranslateService },
{ type: DynamicRepository },
{ type: BsModalService },
{ type: undefined, decorators: [{ type: Inject, args: [USERS_CONFIG_TOKEN,] }] }
]; };
ProjectUsersGridComponent.propDecorators = {
modalItem: [{ type: Input }],
modalDelete: [{ type: Input }],
modalAppendFromGrid: [{ type: Input }],
project: [{ type: Input }]
};
ProjectUsersGridComponent = ProjectUsersGridComponent_1 = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository,
BsModalService, Object])
], ProjectUsersGridComponent);
return ProjectUsersGridComponent;
}(UsersGridComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectUsersGridModule = /** @class */ (function () {
function ProjectUsersGridModule() {
}
ProjectUsersGridModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, UsersGridModalModule, UserModalModule, ProjectUserModalModule, NgxBindIOModule],
declarations: [ProjectUsersGridComponent],
exports: [ProjectUsersGridComponent, UsersGridModalModule, UserModalModule, ProjectUserModalModule]
},] }
];
return ProjectUsersGridModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectModalModule = /** @class */ (function () {
function ProjectModalModule() {
}
ProjectModalModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule,
PromptFormModalModule,
ProjectStatusesGridModule,
ProjectUsersGridModule,
TranslateModule.forChild(),
NgxBindIOModule
],
declarations: [ProjectModalComponent],
entryComponents: [ProjectModalComponent],
exports: [ProjectModalComponent, PromptFormModalModule, ProjectStatusesGridModule, ProjectUsersGridModule]
},] }
];
return ProjectModalModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectsGridModule = /** @class */ (function () {
function ProjectsGridModule() {
}
ProjectsGridModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, WebModalsModule, EntityGridModule, ProjectModalModule, FontAwesomeModule, NgxBindIOModule],
declarations: [ProjectsGridComponent],
exports: [ProjectsGridComponent, EntityGridModule, ProjectModalModule]
},] }
];
return ProjectsGridModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectsGridModalModule = /** @class */ (function () {
function ProjectsGridModalModule() {
}
ProjectsGridModalModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, EntityGridModalModule, ProjectsGridModule, NgxBindIOModule],
declarations: [ProjectsGridModalComponent],
entryComponents: [ProjectsGridModalComponent],
exports: [ProjectsGridModalComponent, EntityGridModalModule, ProjectsGridModule]
},] }
];
return ProjectsGridModalModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectInputModule = /** @class */ (function () {
function ProjectInputModule() {
}
ProjectInputModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, EntityInputModule, ProjectsGridModalModule, NgxBindIOModule],
declarations: [ProjectInputComponent],
exports: [ProjectInputComponent, EntityInputModule, ProjectsGridModalModule]
},] }
];
return ProjectInputModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectSelectComponent = /** @class */ (function (_super) {
__extends(ProjectSelectComponent, _super);
function ProjectSelectComponent(modalsService, errorsExtractor, translateService, dynamicRepository, projectsConfig) {
var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, projectsConfig) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.projectsConfig = projectsConfig;
_this.searchField = new FormControl();
_this.nameField = 'title';
return _this;
}
/**
* @return {?}
*/
ProjectSelectComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (!this.mockedItems) {
this.useRest(__assign({ apiUrl: this.apiUrl }, this.projectsConfig, { paginationMeta: { perPage: 1000 } }));
}
if (this.mockedItems) {
this.useMock(__assign({ items: this.mockedItems }, this.projectsConfig));
}
};
/**
* @param {?} value
* @param {?} item
* @return {?}
*/
ProjectSelectComponent.prototype.checkChange = /**
* @param {?} value
* @param {?} item
* @return {?}
*/
function (value, item) {
return item instanceof Project;
};
ProjectSelectComponent.decorators = [
{ type: Component, args: [{
selector: 'project-select',
template: "<entity-select [bindIO]>\n <ng-content></ng-content>\n</entity-select>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectSelectComponent.ctorParameters = function () { return [
{ type: ModalsService },
{ type: ErrorsExtractor },
{ type: TranslateService },
{ type: DynamicRepository },
{ type: undefined, decorators: [{ type: Inject, args: [PROJECTS_CONFIG_TOKEN,] }] }
]; };
ProjectSelectComponent.propDecorators = {
searchField: [{ type: Input }]
};
ProjectSelectComponent = __decorate([
BindIoInner(),
__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository, Object])
], ProjectSelectComponent);
return ProjectSelectComponent;
}(ProjectsGridComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectSelectModule = /** @class */ (function () {
function ProjectSelectModule() {
}
ProjectSelectModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, EntitySelectModule, ProjectsGridModalModule, NgxBindIOModule],
declarations: [ProjectSelectComponent],
exports: [ProjectSelectComponent, EntitySelectModule, ProjectsGridModalModule]
},] }
];
return ProjectSelectModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusInputComponent = /** @class */ (function (_super) {
__extends(StatusInputComponent, _super);
function StatusInputComponent(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) {
var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.statusesConfig = statusesConfig;
_this.modalAppendFromGrid = {
component: StatusesGridModalComponent,
initialState: {
title: translate('Select status'),
yesTitle: translate('Select')
}
};
_this.select = new EventEmitter();
return _this;
}
/**
* @return {?}
*/
StatusInputComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.mockedItems = [];
this.useMock(__assign({ items: this.mockedItems }, this.statusesConfig));
this.mockedItemsChange.subscribe((/**
* @param {?} items
* @return {?}
*/
function (items) { return _this.onSelect(items[0]); }));
};
/**
* @return {?}
*/
StatusInputComponent.prototype.defaultAppendFromGridModal = /**
* @return {?}
*/
function () {
this.modalAppendFromGrid = __assign({}, this.modalAppendFromGrid, { initialState: __assign({}, this.modalAppendFromGrid.initialState,