@rucken/todo-web
Version:
Base components and ui for todo application maked on Angular7+ and based on Rucken template
1,022 lines (995 loc) • 88.6 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@rucken/core'), require('@ngx-translate/core'), require('@rucken/todo-core'), require('ngx-repository'), require('ngx-bind-io'), require('@rucken/web'), require('@fortawesome/angular-fontawesome'), require('@angular/forms'), require('ngx-bootstrap/modal'), require('rxjs/operators'), require('ngx-bootstrap/datepicker'), require('ngx-bootstrap/typeahead')) :
typeof define === 'function' && define.amd ? define('@rucken/todo-web', ['exports', '@angular/common', '@angular/core', '@rucken/core', '@ngx-translate/core', '@rucken/todo-core', 'ngx-repository', 'ngx-bind-io', '@rucken/web', '@fortawesome/angular-fontawesome', '@angular/forms', 'ngx-bootstrap/modal', 'rxjs/operators', 'ngx-bootstrap/datepicker', 'ngx-bootstrap/typeahead'], factory) :
(global = global || self, factory((global.rucken = global.rucken || {}, global.rucken['todo-web'] = {}), global.ng.common, global.ng.core, global.core$1, global.core$2, global.todoCore, global.ngxRepository, global.ngxBindIo, global.web, global.angularFontawesome, global.ng.forms, global.modal, global.rxjs.operators, global.datepicker, global.typeahead));
}(this, function (exports, common, core, core$1, core$2, todoCore, ngxRepository, ngxBindIo, web, angularFontawesome, forms, modal, operators, datepicker, typeahead) { 'use strict';
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}
/**
* @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: core$1.translate('Russian'),
code: 'ru',
translations: [RuI18n]
}, ɵ1 = {
title: core$1.translate('English'),
code: 'en',
translations: []
};
var RuckenTodoWebModule = /** @class */ (function () {
function RuckenTodoWebModule() {
}
RuckenTodoWebModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule],
providers: [
{
provide: core$1.LANGUAGES_ITEM_CONFIG_TOKEN,
useValue: ɵ0,
multi: true
},
{
provide: core$1.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(todoCore.Project);
return _this;
}
ProjectModalComponent.decorators = [
{ type: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectModalComponent.ctorParameters = function () { return []; };
ProjectModalComponent.propDecorators = {
apiUrl: [{ type: core.Input }]
};
ProjectModalComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [])
], ProjectModalComponent);
return ProjectModalComponent;
}(core$1.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(todoCore.Project), modalsService, todoCore.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 = core$1.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: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectsGridComponent.ctorParameters = function () { return [
{ type: core$1.ModalsService },
{ type: core$1.ErrorsExtractor },
{ type: core$2.TranslateService },
{ type: ngxRepository.DynamicRepository },
{ type: undefined, decorators: [{ type: core.Inject, args: [todoCore.PROJECTS_CONFIG_TOKEN,] }] },
{ type: core$1.UserPermPipe }
]; };
ProjectsGridComponent.propDecorators = {
autoload: [{ type: core.Input }],
modalItem: [{ type: core.Input }],
modalDelete: [{ type: core.Input }],
title: [{ type: core.Input }]
};
ProjectsGridComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [core$1.ModalsService,
core$1.ErrorsExtractor,
core$2.TranslateService,
ngxRepository.DynamicRepository, Object, core$1.UserPermPipe])
], ProjectsGridComponent);
return ProjectsGridComponent;
}(core$1.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: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectsGridModalComponent.ctorParameters = function () { return []; };
ProjectsGridModalComponent.propDecorators = {
grid: [{ type: core.ViewChild, args: ['grid',] }],
apiUrl: [{ type: core.Input }]
};
ProjectsGridModalComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [])
], ProjectsGridModalComponent);
return ProjectsGridModalComponent;
}(core$1.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 core.EventEmitter();
_this.modalAppendFromGrid = {
component: ProjectsGridModalComponent,
initialState: {
title: core$1.translate('Select project'),
yesTitle: core$1.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: core.Component, args: [{
selector: 'project-input',
template: "<entity-input\n [bindIO]\n (select)=\"onAppendFromGridClick($event)\">\n <ng-content></ng-content>\n</entity-input>\n",
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectInputComponent.ctorParameters = function () { return [
{ type: core$1.ModalsService },
{ type: core$1.ErrorsExtractor },
{ type: core$2.TranslateService },
{ type: ngxRepository.DynamicRepository },
{ type: undefined, decorators: [{ type: core.Inject, args: [todoCore.PROJECTS_CONFIG_TOKEN,] }] }
]; };
ProjectInputComponent.propDecorators = {
select: [{ type: core.Output }],
modalAppendFromGrid: [{ type: core.Input }]
};
ProjectInputComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [core$1.ModalsService,
core$1.ErrorsExtractor,
core$2.TranslateService,
ngxRepository.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(todoCore.StatusWithProject);
return _this;
}
StatusModalComponent.decorators = [
{ type: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
StatusModalComponent.ctorParameters = function () { return []; };
StatusModalComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [])
], StatusModalComponent);
return StatusModalComponent;
}(core$1.BasePromptFormModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusModalModule = /** @class */ (function () {
function StatusModalModule() {
}
StatusModalModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule, web.PromptFormModalModule, ngxBindIo.NgxBindIOModule],
declarations: [StatusModalComponent],
entryComponents: [StatusModalComponent],
exports: [StatusModalComponent, web.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(todoCore.StatusWithProject), modalsService, todoCore.StatusWithProject) || this;
_this.errorsExtractor = errorsExtractor;
_this.translateService = translateService;
_this.dynamicRepository = dynamicRepository;
_this.statusesConfig = statusesConfig;
_this.autoload = false;
_this.modalItem = {
component: StatusModalComponent
};
_this.title = core$1.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 todoCore.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: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
StatusesGridComponent.ctorParameters = function () { return [
{ type: core$1.ModalsService },
{ type: core$1.ErrorsExtractor },
{ type: core$2.TranslateService },
{ type: ngxRepository.DynamicRepository },
{ type: undefined, decorators: [{ type: core.Inject, args: [todoCore.STATUSES_CONFIG_TOKEN,] }] }
]; };
StatusesGridComponent.propDecorators = {
autoload: [{ type: core.Input }],
modalItem: [{ type: core.Input }],
title: [{ type: core.Input }],
project: [{ type: core.Input }]
};
StatusesGridComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [core$1.ModalsService,
core$1.ErrorsExtractor,
core$2.TranslateService,
ngxRepository.DynamicRepository, Object])
], StatusesGridComponent);
return StatusesGridComponent;
}(core$1.BaseEntityListComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusesGridModule = /** @class */ (function () {
function StatusesGridModule() {
}
StatusesGridModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule, web.WebModalsModule, web.EntityGridModule, StatusModalModule, ngxBindIo.NgxBindIOModule],
declarations: [StatusesGridComponent],
exports: [StatusesGridComponent, web.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: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
StatusesGridModalComponent.ctorParameters = function () { return []; };
StatusesGridModalComponent.propDecorators = {
grid: [{ type: core.ViewChild, args: ['grid',] }],
apiUrl: [{ type: core.Input }],
project: [{ type: core.Input }]
};
StatusesGridModalComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [])
], StatusesGridModalComponent);
return StatusesGridModalComponent;
}(core$1.BaseEntityListModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var StatusesGridModalModule = /** @class */ (function () {
function StatusesGridModalModule() {
}
StatusesGridModalModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule, web.EntityGridModalModule, StatusesGridModule, ngxBindIo.NgxBindIOModule],
declarations: [StatusesGridModalComponent],
entryComponents: [StatusesGridModalComponent],
exports: [StatusesGridModalComponent, web.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: core$1.translate('Delete status'),
message: core$1.translate('Do you really want to delete status "{{title}}" from project?')
}
};
_this.modalAppendFromGrid = {
component: StatusesGridModalComponent,
initialState: {
title: core$1.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 !== ngxRepository.ProviderActionEnum.Create && action !== ngxRepository.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 !== ngxRepository.ProviderActionEnum.Create && action !== ngxRepository.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: core.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: forms.NG_VALUE_ACCESSOR,
useExisting: core.forwardRef((/**
* @return {?}
*/
function () { return ProjectStatusesGridComponent_1; })),
multi: true
}
],
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectStatusesGridComponent.ctorParameters = function () { return [
{ type: core$1.ModalsService },
{ type: core$1.ErrorsExtractor },
{ type: core$2.TranslateService },
{ type: ngxRepository.DynamicRepository },
{ type: undefined, decorators: [{ type: core.Inject, args: [todoCore.STATUSES_CONFIG_TOKEN,] }] }
]; };
ProjectStatusesGridComponent.propDecorators = {
modalDelete: [{ type: core.Input }],
modalAppendFromGrid: [{ type: core.Input }],
project: [{ type: core.Input }]
};
ProjectStatusesGridComponent = ProjectStatusesGridComponent_1 = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [core$1.ModalsService,
core$1.ErrorsExtractor,
core$2.TranslateService,
ngxRepository.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: core.NgModule, args: [{
imports: [common.CommonModule, web.EntityGridModule, StatusModalModule, StatusesGridModalModule, ngxBindIo.NgxBindIOModule],
declarations: [ProjectStatusesGridComponent],
exports: [ProjectStatusesGridComponent, web.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(core$1.User);
return _this;
}
ProjectUserModalComponent.decorators = [
{ type: core.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: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectUserModalComponent.ctorParameters = function () { return []; };
ProjectUserModalComponent.propDecorators = {
apiUrl: [{ type: core.Input }]
};
ProjectUserModalComponent = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [])
], ProjectUserModalComponent);
return ProjectUserModalComponent;
}(core$1.BasePromptFormModalComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectUserModalModule = /** @class */ (function () {
function ProjectUserModalModule() {
}
ProjectUserModalModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule, web.PromptFormModalModule, core$2.TranslateModule.forChild(), ngxBindIo.NgxBindIOModule],
declarations: [ProjectUserModalComponent],
entryComponents: [ProjectUserModalComponent],
exports: [ProjectUserModalComponent, web.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: core$1.translate('Delete user'),
message: core$1.translate('Do you really want to delete user "{{fullName}}" from project?')
}
};
_this.modalAppendFromGrid = {
component: web.UsersGridModalComponent,
initialState: {
title: core$1.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 !== ngxRepository.ProviderActionEnum.Create && action !== ngxRepository.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 !== ngxRepository.ProviderActionEnum.Create && action !== ngxRepository.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: core.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: forms.NG_VALUE_ACCESSOR,
useExisting: core.forwardRef((/**
* @return {?}
*/
function () { return ProjectUsersGridComponent_1; })),
multi: true
}
],
changeDetection: core.ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectUsersGridComponent.ctorParameters = function () { return [
{ type: core$1.ModalsService },
{ type: core$1.ErrorsExtractor },
{ type: core$2.TranslateService },
{ type: ngxRepository.DynamicRepository },
{ type: modal.BsModalService },
{ type: undefined, decorators: [{ type: core.Inject, args: [core$1.USERS_CONFIG_TOKEN,] }] }
]; };
ProjectUsersGridComponent.propDecorators = {
modalItem: [{ type: core.Input }],
modalDelete: [{ type: core.Input }],
modalAppendFromGrid: [{ type: core.Input }],
project: [{ type: core.Input }]
};
ProjectUsersGridComponent = ProjectUsersGridComponent_1 = __decorate([
ngxBindIo.BindIoInner(),
__metadata("design:paramtypes", [core$1.ModalsService,
core$1.ErrorsExtractor,
core$2.TranslateService,
ngxRepository.DynamicRepository,
modal.BsModalService, Object])
], ProjectUsersGridComponent);
return ProjectUsersGridComponent;
}(web.UsersGridComponent));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ProjectUsersGridModule = /** @class */ (function () {
function ProjectUsersGridModule() {
}
ProjectUsersGridModule.decorators = [
{ type: core.NgModule, args: [{
imports: [common.CommonModule, web.UsersGridModalModule, web.UserModalModule, ProjectUserModalModule, ngxBindIo.NgxBindIOModule],
declarations: [ProjectUsersGridComponent],
exports: [ProjectUsersGridComponent, web.UsersGridModalModule, web.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: core.