UNPKG

@rucken/todo-web

Version:

Base components and ui for todo application maked on Angular7+ and based on Rucken template

198 lines 16.4 kB
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=