UNPKG

@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
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,