@rucken/todo-web
Version:
Base components and ui for todo application maked on Angular7+ and based on Rucken template
235 lines • 18.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { ErrorsExtractor, ModalsService, translate, USERS_CONFIG_TOKEN } from '@rucken/core';
import { Project } from '@rucken/todo-core';
import { UsersGridComponent, UsersGridModalComponent } from '@rucken/web';
import { BindIoInner } from 'ngx-bind-io';
import { BsModalService } from 'ngx-bootstrap/modal';
import { DynamicRepository, ProviderActionEnum } from 'ngx-repository';
import { ProjectUserModalComponent } from '../project-user-modal/project-user-modal.component';
var ProjectUsersGridComponent = /** @class */ (function (_super) {
tslib_1.__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(tslib_1.__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(tslib_1.__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 = tslib_1.__decorate([
BindIoInner(),
tslib_1.__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository,
BsModalService, Object])
], ProjectUsersGridComponent);
return ProjectUsersGridComponent;
}(UsersGridComponent));
export { ProjectUsersGridComponent };
if (false) {
/** @type {?} */
ProjectUsersGridComponent.prototype.modalItem;
/** @type {?} */
ProjectUsersGridComponent.prototype.modalDelete;
/** @type {?} */
ProjectUsersGridComponent.prototype.modalAppendFromGrid;
/** @type {?} */
ProjectUsersGridComponent.prototype.project;
/** @type {?} */
ProjectUsersGridComponent.prototype.mockedItemsChangeSubscription;
/** @type {?} */
ProjectUsersGridComponent.prototype._onChange;
/** @type {?} */
ProjectUsersGridComponent.prototype._onTouched;
/**
* @type {?}
* @protected
*/
ProjectUsersGridComponent.prototype.errorsExtractor;
/**
* @type {?}
* @protected
*/
ProjectUsersGridComponent.prototype.translateService;
/**
* @type {?}
* @protected
*/
ProjectUsersGridComponent.prototype.dynamicRepository;
/** @type {?} */
ProjectUsersGridComponent.prototype.modalService;
/**
* @type {?}
* @protected
*/
ProjectUsersGridComponent.prototype.usersConfig;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC11c2Vycy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby13ZWIvIiwic291cmNlcyI6WyJsaWIvZW50aXRpZXMvcHJvamVjdHMvcHJvamVjdC11c2Vycy1ncmlkL3Byb2plY3QtdXNlcnMtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsU0FBUyxFQUVULGtCQUFrQixFQUNuQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7SUFlaEQscURBQWtCO0lBMkIvRCxtQ0FDRSxhQUE0QixFQUNsQixlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3ZDLFlBQTRCLEVBRXpCLFdBQXVDO1FBUG5ELFlBU0Usa0JBQU0sYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFX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Ozs7OztJQUNuQyxnREFDaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRXJyb3JzRXh0cmFjdG9yLFxuICBJQmFzZUVudGl0eU1vZGFsT3B0aW9ucyxcbiAgTW9kYWxzU2VydmljZSxcbiAgdHJhbnNsYXRlLFxuICBVc2VyLFxuICBVU0VSU19DT05GSUdfVE9LRU5cbn0gZnJvbSAnQHJ1Y2tlbi9jb3JlJztcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICdAcnVja2VuL3RvZG8tY29yZSc7XG5pbXBvcnQgeyBVc2Vyc0dyaWRDb21wb25lbnQsIFVzZXJzR3JpZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQHJ1Y2tlbi93ZWInO1xuaW1wb3J0IHsgQmluZElvSW5uZXIgfSBmcm9tICduZ3gtYmluZC1pbyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlcG9zaXRvcnksIElSZXN0UHJvdmlkZXJPcHRpb25zLCBQcm92aWRlckFjdGlvbkVudW0gfSBmcm9tICduZ3gtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2plY3RVc2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wcm9qZWN0LXVzZXItbW9kYWwvcHJvamVjdC11c2VyLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBCaW5kSW9Jbm5lcigpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcm9qZWN0LXVzZXJzLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvamVjdC11c2Vycy1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcm9qZWN0VXNlcnNHcmlkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0VXNlcnNHcmlkQ29tcG9uZW50IGV4dGVuZHMgVXNlcnNHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgbW9kYWxJdGVtOiBJQmFzZUVudGl0eU1vZGFsT3B0aW9ucyA9IHtcbiAgICBjb21wb25lbnQ6IFByb2plY3RVc2VyTW9kYWxDb21wb25lbnQsXG4gICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICBzaW1wbGVNb2RlOiB0cnVlXG4gICAgfVxuICB9O1xuICBASW5wdXQoKVxuICBtb2RhbERlbGV0ZSA9IHtcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ0RlbGV0ZSB1c2VyJyksXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGUoJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdXNlciBcInt7ZnVsbE5hbWV9fVwiIGZyb20gcHJvamVjdD8nKVxuICAgIH1cbiAgfTtcbiAgQElucHV0KClcbiAgbW9kYWxBcHBlbmRGcm9tR3JpZCA9IHtcbiAgICBjb21wb25lbnQ6IFVzZXJzR3JpZE1vZGFsQ29tcG9uZW50LFxuICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgdGl0bGU6IHRyYW5zbGF0ZSgnU2VsZWN0IHVzZXIgZm9yIGFwcGVuZCB0byBwcm9qZWN0JyksXG4gICAgICBzaW1wbGVNb2RlOiB0cnVlXG4gICAgfVxuICB9O1xuICBASW5wdXQoKVxuICBwcm9qZWN0OiBQcm9qZWN0ID0gdW5kZWZpbmVkO1xuICBtb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1vZGFsc1NlcnZpY2U6IE1vZGFsc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVycm9yc0V4dHJhY3RvcjogRXJyb3JzRXh0cmFjdG9yLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljUmVwb3NpdG9yeTogRHluYW1pY1JlcG9zaXRvcnksXG4gICAgcHVibGljIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgQEluamVjdChVU0VSU19DT05GSUdfVE9LRU4pXG4gICAgcHJvdGVjdGVkIHVzZXJzQ29uZmlnOiBJUmVzdFByb3ZpZGVyT3B0aW9uczxVc2VyPlxuICApIHtcbiAgICBzdXBlcihtb2RhbHNTZXJ2aWNlLCBlcnJvcnNFeHRyYWN0b3IsIHRyYW5zbGF0ZVNlcnZpY2UsIGR5bmFtaWNSZXBvc2l0b3J5LCB1c2Vyc0NvbmZpZyk7XG4gIH1cbiAgbmdPbkluaXQob3ZlcnJpZGVkPzogYm9vbGVhbikge1xuICAgIGlmICghb3ZlcnJpZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5tb2NrZWRJdGVtcykge1xuICAgICAgdGhpcy51c2VSZXN0KHtcbiAgICAgICAgYXBpVXJsOiB0aGlzLmFwaVVybCArICcvcHJvamVjdC8nICsgdGhpcy5wcm9qZWN0LmlkLFxuICAgICAgICBhdXRvbG9hZDogISF0aGlzLnByb2plY3QuaWQsXG4gICAgICAgIC4uLnRoaXMudXNlcnNDb25maWcsXG4gICAgICAgIGdsb2JhbEV2ZW50UmVzb2x2ZXI6IChkYXRhOiBhbnksIGFjdGlvbjogUHJvdmlkZXJBY3Rpb25FbnVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkNyZWF0ZSAmJiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5EZWxldGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtcykge1xuICAgICAgdGhpcy51c2VNb2NrKHtcbiAgICAgICAgaXRlbXM6IHRoaXMubW9ja2VkSXRlbXMsXG4gICAgICAgIGF1dG9sb2FkOiB0cnVlLFxuICAgICAgICAuLi50aGlzLnVzZXJzQ29uZmlnLFxuICAgICAgICBnbG9iYWxFdmVudFJlc29sdmVyOiAoZGF0YTogYW55LCBhY3Rpb246IFByb3ZpZGVyQWN0aW9uRW51bSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5DcmVhdGUgJiYgYWN0aW9uICE9PSBQcm92aWRlckFjdGlvbkVudW0uRGVsZXRlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9ja2VkSXRlbXNDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubW9ja2VkSXRlbXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUocGVybWlzc2lvbnMgPT4gdGhpcy5fb25DaGFuZ2UocGVybWlzc2lvbnMpKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICB3cml0ZVZhbHVlKHVzZXJzOiBVc2VyW10pOiB2b2lkIHtcbiAgICB0aGlzLm1vY2tlZEl0ZW1zID0gdXNlcnMgfHwgW107XG4gICAgdGhpcy5uZ09uSW5pdCh0cnVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7fVxuICBfb25DaGFuZ2UgPSAodmFsdWU6IFVzZXIpID0+IHt9O1xuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=