@rucken/todo-web
Version:
Base components and ui for todo application maked on Angular7+ and based on Rucken template
219 lines • 17.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 } from '@rucken/core';
import { Project, STATUSES_CONFIG_TOKEN } from '@rucken/todo-core';
import { BindIoInner } from 'ngx-bind-io';
import { DynamicRepository, ProviderActionEnum } from 'ngx-repository';
import { StatusesGridModalComponent } from '../../statuses/statuses-grid-modal/statuses-grid-modal.component';
import { StatusesGridComponent } from '../../statuses/statuses-grid/statuses-grid.component';
var ProjectStatusesGridComponent = /** @class */ (function (_super) {
tslib_1.__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(tslib_1.__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(tslib_1.__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 = tslib_1.__decorate([
BindIoInner(),
tslib_1.__metadata("design:paramtypes", [ModalsService,
ErrorsExtractor,
TranslateService,
DynamicRepository, Object])
], ProjectStatusesGridComponent);
return ProjectStatusesGridComponent;
}(StatusesGridComponent));
export { ProjectStatusesGridComponent };
if (false) {
/** @type {?} */
ProjectStatusesGridComponent.prototype.modalDelete;
/** @type {?} */
ProjectStatusesGridComponent.prototype.modalAppendFromGrid;
/** @type {?} */
ProjectStatusesGridComponent.prototype.project;
/** @type {?} */
ProjectStatusesGridComponent.prototype.mockedItemsChangeSubscription;
/** @type {?} */
ProjectStatusesGridComponent.prototype._onChange;
/** @type {?} */
ProjectStatusesGridComponent.prototype._onTouched;
/**
* @type {?}
* @protected
*/
ProjectStatusesGridComponent.prototype.errorsExtractor;
/**
* @type {?}
* @protected
*/
ProjectStatusesGridComponent.prototype.translateService;
/**
* @type {?}
* @protected
*/
ProjectStatusesGridComponent.prototype.dynamicRepository;
/**
* @type {?}
* @protected
*/
ProjectStatusesGridComponent.prototype.statusesConfig;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zdGF0dXNlcy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby13ZWIvIiwic291cmNlcyI6WyJsaWIvZW50aXRpZXMvcHJvamVjdHMvcHJvamVjdC1zdGF0dXNlcy1ncmlkL3Byb2plY3Qtc3RhdHVzZXMtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFRLE1BQU0sY0FBYyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQXFCLE1BQU0sbUJBQW1CLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0lBZTNDLHdEQUFxQjtJQW9CckUsc0NBQ0UsYUFBNEIsRUFDbEIsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUVwQyxjQUEwQztRQU50RCxZQVFFLGtCQUFNLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLFNBQzNGO1FBUFcscUJBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFnQixHQUFo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UyxDQUFDOzs7Z0JBdEZoRCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsOFRBQXFEO29CQUNyRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozs0QkFBQyxjQUFNLE9BQUEsOEJBQTRCLEVBQTVCLENBQTRCLEVBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7OztnQkFwQnlCLGFBQWE7Z0JBQTlCLGVBQWU7Z0JBRGYsZ0JBQWdCO2dCQUloQixpQkFBaUI7Z0RBMkNyQixNQUFNLFNBQUMscUJBQXFCOzs7OEJBdkI5QixLQUFLO3NDQU9MLEtBQUs7MEJBT0wsS0FBSzs7SUFoQkssNEJBQTRCO1FBYnhDLFdBQVcsRUFBRTtpREFrQ0ssYUFBYTtZQUNELGVBQWU7WUFDZCxnQkFBZ0I7WUFDZixpQkFBaUI7T0F4QnJDLDRCQUE0QixDQTZFeEM7SUFBRCxtQ0FBQztDQUFBLENBN0VpRCxxQkFBcUIsR0E2RXRFO1NBN0VZLDRCQUE0Qjs7O0lBRXZDLG1EQU1FOztJQUNGLDJEQU1FOztJQUNGLCtDQUM2Qjs7SUFDN0IscUVBQTRDOztJQXlENUMsaURBQWdDOztJQUNoQyxrREFBc0I7Ozs7O0lBdERwQix1REFBMEM7Ozs7O0lBQzFDLHdEQUE0Qzs7Ozs7SUFDNUMseURBQThDOzs7OztJQUM5QyxzREFDb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRXJyb3JzRXh0cmFjdG9yLCBNb2RhbHNTZXJ2aWNlLCB0cmFuc2xhdGUsIFVzZXIgfSBmcm9tICdAcnVja2VuL2NvcmUnO1xuaW1wb3J0IHsgUHJvamVjdCwgU1RBVFVTRVNfQ09ORklHX1RPS0VOLCBTdGF0dXNXaXRoUHJvamVjdCB9IGZyb20gJ0BydWNrZW4vdG9kby1jb3JlJztcbmltcG9ydCB7IEJpbmRJb0lubmVyIH0gZnJvbSAnbmd4LWJpbmQtaW8nO1xuaW1wb3J0IHsgRHluYW1pY1JlcG9zaXRvcnksIElSZXN0UHJvdmlkZXJPcHRpb25zLCBQcm92aWRlckFjdGlvbkVudW0gfSBmcm9tICduZ3gtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0YXR1c2VzR3JpZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc3RhdHVzZXMvc3RhdHVzZXMtZ3JpZC1tb2RhbC9zdGF0dXNlcy1ncmlkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGF0dXNlc0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zdGF0dXNlcy9zdGF0dXNlcy1ncmlkL3N0YXR1c2VzLWdyaWQuY29tcG9uZW50JztcblxuQEJpbmRJb0lubmVyKClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Byb2plY3Qtc3RhdHVzZXMtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9qZWN0LXN0YXR1c2VzLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFByb2plY3RTdGF0dXNlc0dyaWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByb2plY3RTdGF0dXNlc0dyaWRDb21wb25lbnQgZXh0ZW5kcyBTdGF0dXNlc0dyaWRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBtb2RhbERlbGV0ZSA9IHtcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ0RlbGV0ZSBzdGF0dXMnKSxcbiAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0ZSgnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSBzdGF0dXMgXCJ7e3RpdGxlfX1cIiBmcm9tIHByb2plY3Q/JylcbiAgICB9XG4gIH07XG4gIEBJbnB1dCgpXG4gIG1vZGFsQXBwZW5kRnJvbUdyaWQgPSB7XG4gICAgY29tcG9uZW50OiBTdGF0dXNlc0dyaWRNb2RhbENvbXBvbmVudCxcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ1NlbGVjdCBzdGF0dXMgZm9yIGFwcGVuZCB0byBwcm9qZWN0JylcbiAgICB9XG4gIH07XG4gIEBJbnB1dCgpXG4gIHByb2plY3Q6IFByb2plY3QgPSB1bmRlZmluZWQ7XG4gIG1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbW9kYWxzU2VydmljZTogTW9kYWxzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZXJyb3JzRXh0cmFjdG9yOiBFcnJvcnNFeHRyYWN0b3IsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNSZXBvc2l0b3J5OiBEeW5hbWljUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KFNUQVRVU0VTX0NPTkZJR19UT0tFTilcbiAgICBwcm90ZWN0ZWQgc3RhdHVzZXNDb25maWc6IElSZXN0UHJvdmlkZXJPcHRpb25zPFVzZXI+XG4gICkge1xuICAgIHN1cGVyKG1vZGFsc1NlcnZpY2UsIGVycm9yc0V4dHJhY3RvciwgdHJhbnNsYXRlU2VydmljZSwgZHluYW1pY1JlcG9zaXRvcnksIHN0YXR1c2VzQ29uZmlnKTtcbiAgfVxuICBuZ09uSW5pdChvdmVycmlkZWQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFvdmVycmlkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm1vY2tlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVzZVJlc3Qoe1xuICAgICAgICBhcGlVcmw6IHRoaXMuYXBpVXJsICsgJy9wcm9qZWN0LycgKyB0aGlzLnByb2plY3QuaWQsXG4gICAgICAgIGF1dG9sb2FkOiAhIXRoaXMucHJvamVjdC5pZCxcbiAgICAgICAgLi4udGhpcy5zdGF0dXNlc0NvbmZpZyxcbiAgICAgICAgZ2xvYmFsRXZlbnRSZXNvbHZlcjogKGRhdGE6IGFueSwgYWN0aW9uOiBQcm92aWRlckFjdGlvbkVudW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gYWN0aW9uICE9PSBQcm92aWRlckFjdGlvbkVudW0uQ3JlYXRlICYmIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkRlbGV0ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vY2tlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVzZU1vY2soe1xuICAgICAgICBpdGVtczogdGhpcy5tb2NrZWRJdGVtcyxcbiAgICAgICAgYXV0b2xvYWQ6IHRydWUsXG4gICAgICAgIC4uLnRoaXMuc3RhdHVzZXNDb25maWcsXG4gICAgICAgIGdsb2JhbEV2ZW50UmVzb2x2ZXI6IChkYXRhOiBhbnksIGFjdGlvbjogUHJvdmlkZXJBY3Rpb25FbnVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkNyZWF0ZSAmJiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5EZWxldGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZShwZXJtaXNzaW9ucyA9PiB0aGlzLl9vbkNoYW5nZShwZXJtaXNzaW9ucykpO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIHdyaXRlVmFsdWUoc3RhdHVzZXM6IFN0YXR1c1dpdGhQcm9qZWN0W10pOiB2b2lkIHtcbiAgICB0aGlzLm1vY2tlZEl0ZW1zID0gc3RhdHVzZXMgfHwgW107XG4gICAgdGhpcy5uZ09uSW5pdCh0cnVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7fVxuICBfb25DaGFuZ2UgPSAodmFsdWU6IFVzZXIpID0+IHt9O1xuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=