@rucken/todo-web
Version:
Base components and ui for todo application maked on Angular7+ and based on Rucken template
198 lines • 16.4 kB
JavaScript
import * as tslib_1 from "tslib";
var ProjectStatusesGridComponent_1;
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
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';
let ProjectStatusesGridComponent = ProjectStatusesGridComponent_1 = class ProjectStatusesGridComponent extends StatusesGridComponent {
/**
* @param {?} modalsService
* @param {?} errorsExtractor
* @param {?} translateService
* @param {?} dynamicRepository
* @param {?} statusesConfig
*/
constructor(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) {
super(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig);
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 {?}
*/
(value) => { });
this._onTouched = (/**
* @return {?}
*/
() => { });
}
/**
* @param {?=} overrided
* @return {?}
*/
ngOnInit(overrided) {
if (!overrided) {
return;
}
if (!this.mockedItems) {
this.useRest(Object.assign({ apiUrl: this.apiUrl + '/project/' + this.project.id, autoload: !!this.project.id }, this.statusesConfig, { globalEventResolver: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
(data, action) => {
return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
}) }));
}
if (this.mockedItems) {
this.useMock(Object.assign({ items: this.mockedItems, autoload: true }, this.statusesConfig, { globalEventResolver: (/**
* @param {?} data
* @param {?} action
* @return {?}
*/
(data, action) => {
return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete;
}) }));
}
if (this.mockedItemsChangeSubscription) {
this.mockedItemsChangeSubscription.unsubscribe();
}
this.mockedItemsChange.subscribe((/**
* @param {?} permissions
* @return {?}
*/
permissions => this._onChange(permissions)));
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.mockedItemsChangeSubscription) {
this.mockedItemsChangeSubscription.unsubscribe();
}
}
/**
* @param {?} statuses
* @return {?}
*/
writeValue(statuses) {
this.mockedItems = statuses || [];
this.ngOnInit(true);
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this._onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this._onTouched = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) { }
};
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 {?}
*/
() => ProjectStatusesGridComponent_1)),
multi: true
}
],
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
ProjectStatusesGridComponent.ctorParameters = () => [
{ 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);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zdGF0dXNlcy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby13ZWIvIiwic291cmNlcyI6WyJsaWIvZW50aXRpZXMvcHJvamVjdHMvcHJvamVjdC1zdGF0dXNlcy1ncmlkL3Byb2plY3Qtc3RhdHVzZXMtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBUSxNQUFNLGNBQWMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0lBZWhGLDRCQUE0QiwwQ0FBNUIsNEJBQTZCLFNBQVEscUJBQXFCOzs7Ozs7OztJQW9CckUsWUFDRSxhQUE0QixFQUNsQixlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsaUJBQW9DLEVBRXBDLGNBQTBDO1FBRXBELEtBQUssQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBTmpGLG9CQUFlLEdB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UyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLDhUQUFxRDtnQkFDckQsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMsOEJBQTRCLEVBQUM7d0JBQzNELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7O1lBcEJ5QixhQUFhO1lBQTlCLGVBQWU7WUFEZixnQkFBZ0I7WUFJaEIsaUJBQWlCOzRDQTJDckIsTUFBTSxTQUFDLHFCQUFxQjs7OzBCQXZCOUIsS0FBSztrQ0FPTCxLQUFLO3NCQU9MLEtBQUs7O0FBaEJLLDRCQUE0QjtJQWJ4QyxXQUFXLEVBQUU7NkNBa0NLLGFBQWE7UUFDRCxlQUFlO1FBQ2QsZ0JBQWdCO1FBQ2YsaUJBQWlCO0dBeEJyQyw0QkFBNEIsQ0E2RXhDO1NBN0VZLDRCQUE0Qjs7O0lBRXZDLG1EQU1FOztJQUNGLDJEQU1FOztJQUNGLCtDQUM2Qjs7SUFDN0IscUVBQTRDOztJQXlENUMsaURBQWdDOztJQUNoQyxrREFBc0I7Ozs7O0lBdERwQix1REFBMEM7Ozs7O0lBQzFDLHdEQUE0Qzs7Ozs7SUFDNUMseURBQThDOzs7OztJQUM5QyxzREFDb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRXJyb3JzRXh0cmFjdG9yLCBNb2RhbHNTZXJ2aWNlLCB0cmFuc2xhdGUsIFVzZXIgfSBmcm9tICdAcnVja2VuL2NvcmUnO1xuaW1wb3J0IHsgUHJvamVjdCwgU1RBVFVTRVNfQ09ORklHX1RPS0VOLCBTdGF0dXNXaXRoUHJvamVjdCB9IGZyb20gJ0BydWNrZW4vdG9kby1jb3JlJztcbmltcG9ydCB7IEJpbmRJb0lubmVyIH0gZnJvbSAnbmd4LWJpbmQtaW8nO1xuaW1wb3J0IHsgRHluYW1pY1JlcG9zaXRvcnksIElSZXN0UHJvdmlkZXJPcHRpb25zLCBQcm92aWRlckFjdGlvbkVudW0gfSBmcm9tICduZ3gtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0YXR1c2VzR3JpZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc3RhdHVzZXMvc3RhdHVzZXMtZ3JpZC1tb2RhbC9zdGF0dXNlcy1ncmlkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGF0dXNlc0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zdGF0dXNlcy9zdGF0dXNlcy1ncmlkL3N0YXR1c2VzLWdyaWQuY29tcG9uZW50JztcblxuQEJpbmRJb0lubmVyKClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Byb2plY3Qtc3RhdHVzZXMtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9qZWN0LXN0YXR1c2VzLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFByb2plY3RTdGF0dXNlc0dyaWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByb2plY3RTdGF0dXNlc0dyaWRDb21wb25lbnQgZXh0ZW5kcyBTdGF0dXNlc0dyaWRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBtb2RhbERlbGV0ZSA9IHtcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ0RlbGV0ZSBzdGF0dXMnKSxcbiAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0ZSgnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSBzdGF0dXMgXCJ7e3RpdGxlfX1cIiBmcm9tIHByb2plY3Q/JylcbiAgICB9XG4gIH07XG4gIEBJbnB1dCgpXG4gIG1vZGFsQXBwZW5kRnJvbUdyaWQgPSB7XG4gICAgY29tcG9uZW50OiBTdGF0dXNlc0dyaWRNb2RhbENvbXBvbmVudCxcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ1NlbGVjdCBzdGF0dXMgZm9yIGFwcGVuZCB0byBwcm9qZWN0JylcbiAgICB9XG4gIH07XG4gIEBJbnB1dCgpXG4gIHByb2plY3Q6IFByb2plY3QgPSB1bmRlZmluZWQ7XG4gIG1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbW9kYWxzU2VydmljZTogTW9kYWxzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZXJyb3JzRXh0cmFjdG9yOiBFcnJvcnNFeHRyYWN0b3IsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNSZXBvc2l0b3J5OiBEeW5hbWljUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KFNUQVRVU0VTX0NPTkZJR19UT0tFTilcbiAgICBwcm90ZWN0ZWQgc3RhdHVzZXNDb25maWc6IElSZXN0UHJvdmlkZXJPcHRpb25zPFVzZXI+XG4gICkge1xuICAgIHN1cGVyKG1vZGFsc1NlcnZpY2UsIGVycm9yc0V4dHJhY3RvciwgdHJhbnNsYXRlU2VydmljZSwgZHluYW1pY1JlcG9zaXRvcnksIHN0YXR1c2VzQ29uZmlnKTtcbiAgfVxuICBuZ09uSW5pdChvdmVycmlkZWQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFvdmVycmlkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm1vY2tlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVzZVJlc3Qoe1xuICAgICAgICBhcGlVcmw6IHRoaXMuYXBpVXJsICsgJy9wcm9qZWN0LycgKyB0aGlzLnByb2plY3QuaWQsXG4gICAgICAgIGF1dG9sb2FkOiAhIXRoaXMucHJvamVjdC5pZCxcbiAgICAgICAgLi4udGhpcy5zdGF0dXNlc0NvbmZpZyxcbiAgICAgICAgZ2xvYmFsRXZlbnRSZXNvbHZlcjogKGRhdGE6IGFueSwgYWN0aW9uOiBQcm92aWRlckFjdGlvbkVudW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gYWN0aW9uICE9PSBQcm92aWRlckFjdGlvbkVudW0uQ3JlYXRlICYmIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkRlbGV0ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vY2tlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVzZU1vY2soe1xuICAgICAgICBpdGVtczogdGhpcy5tb2NrZWRJdGVtcyxcbiAgICAgICAgYXV0b2xvYWQ6IHRydWUsXG4gICAgICAgIC4uLnRoaXMuc3RhdHVzZXNDb25maWcsXG4gICAgICAgIGdsb2JhbEV2ZW50UmVzb2x2ZXI6IChkYXRhOiBhbnksIGFjdGlvbjogUHJvdmlkZXJBY3Rpb25FbnVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkNyZWF0ZSAmJiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5EZWxldGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZShwZXJtaXNzaW9ucyA9PiB0aGlzLl9vbkNoYW5nZShwZXJtaXNzaW9ucykpO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIHdyaXRlVmFsdWUoc3RhdHVzZXM6IFN0YXR1c1dpdGhQcm9qZWN0W10pOiB2b2lkIHtcbiAgICB0aGlzLm1vY2tlZEl0ZW1zID0gc3RhdHVzZXMgfHwgW107XG4gICAgdGhpcy5uZ09uSW5pdCh0cnVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7fVxuICBfb25DaGFuZ2UgPSAodmFsdWU6IFVzZXIpID0+IHt9O1xuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=