ngx-techlify-core 11.3.3 → 11.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ngx-techlify-core.umd.js +709 -181
- package/bundles/ngx-techlify-core.umd.js.map +1 -1
- package/bundles/ngx-techlify-core.umd.min.js +2 -2
- package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
- package/esm2015/lib/note/comment-form/comment-form.component.js +73 -0
- package/esm2015/lib/note/index.js +2 -1
- package/esm2015/lib/note/note-list/note-list.component.js +33 -3
- package/esm2015/lib/note/note.module.js +7 -3
- package/esm2015/lib/read-more/read-more.component.js +43 -0
- package/esm2015/lib/read-more/read-more.module.js +21 -0
- package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +27 -0
- package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +77 -0
- package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +174 -0
- package/esm2015/lib/techlify-feature/techlify-feature.module.js +30 -0
- package/esm2015/lib/techlify-feature/techlify-feature.routing.js +12 -0
- package/esm2015/lib/techlify-feature/techlify-feature.service.js +28 -0
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +2 -2
- package/esm2015/lib/techlify-update/techlify-update.module.js +2 -2
- package/esm2015/ngx-techlify-core.js +33 -31
- package/esm2015/public-api.js +7 -1
- package/fesm2015/ngx-techlify-core.js +479 -63
- package/fesm2015/ngx-techlify-core.js.map +1 -1
- package/lib/note/comment-form/comment-form.component.d.ts +22 -0
- package/lib/note/index.d.ts +1 -0
- package/lib/note/note-list/note-list.component.d.ts +4 -0
- package/lib/{techlify-update/read-more → read-more}/read-more.component.d.ts +0 -0
- package/lib/{techlify-update/read-more → read-more}/read-more.module.d.ts +0 -0
- package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +9 -0
- package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +16 -0
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts +34 -0
- package/lib/techlify-feature/techlify-feature.module.d.ts +2 -0
- package/lib/techlify-feature/techlify-feature.routing.d.ts +2 -0
- package/lib/techlify-feature/techlify-feature.service.d.ts +8 -0
- package/ngx-techlify-core.d.ts +32 -30
- package/ngx-techlify-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +6 -0
- package/esm2015/lib/techlify-update/read-more/read-more.component.js +0 -43
- package/esm2015/lib/techlify-update/read-more/read-more.module.js +0 -21
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/material/dialog'), require('@angular/material/table'), require('@angular/material/sort'), require('@ngneat/until-destroy'), require('@angular/common'), require('@angular/forms'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@angular/material/snack-bar'), require('@angular/cdk/a11y'), require('@angular/cdk/coercion'), require('@angular/material/form-field'), require('@angular/material/select'), require('@angular/material/icon'), require('@angular/router'), require('@angular/material/tooltip'), require('@angular/material/core'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/input'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/card'), require('@angular/material/divider'), require('@angular/material/chips'), require('@angular/material/datepicker'), require('@angular/material/list'), require('@angular/flex-layout'), require('ngx-infinite-scroll'), require('ngx-doc-viewer'), require('ngx-editor'), require('xlsx'), require('@angular/platform-browser'), require('jsondiffpatch'), require('@angular/cdk/keycodes'), require('@angular/material/autocomplete'), require('@angular/material/button-toggle')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('ngx-techlify-core', ['exports', '@angular/core', '@angular/material/dialog', '@angular/material/table', '@angular/material/sort', '@ngneat/until-destroy', '@angular/common', '@angular/forms', '@angular/common/http', 'rxjs', 'rxjs/operators', '@angular/material/snack-bar', '@angular/cdk/a11y', '@angular/cdk/coercion', '@angular/material/form-field', '@angular/material/select', '@angular/material/icon', '@angular/router', '@angular/material/tooltip', '@angular/material/core', '@angular/material/button', '@angular/material/checkbox', '@angular/material/input', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/card', '@angular/material/divider', '@angular/material/chips', '@angular/material/datepicker', '@angular/material/list', '@angular/flex-layout', 'ngx-infinite-scroll', 'ngx-doc-viewer', 'ngx-editor', 'xlsx', '@angular/platform-browser', 'jsondiffpatch', '@angular/cdk/keycodes', '@angular/material/autocomplete', '@angular/material/button-toggle'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['ngx-techlify-core'] = {}, global.ng.core, global.ng.material.dialog, global.ng.material.table, global.ng.material.sort, global['@ngneat/until-destroy'], global.ng.common, global.ng.forms, global.ng.common.http, global.rxjs, global.rxjs.operators, global.ng.material.snackBar, global.ng.cdk.a11y, global.ng.cdk.coercion, global.ng.material.formField, global.ng.material.select, global.ng.material.icon, global.ng.router, global.ng.material.tooltip, global.ng.material.core, global.ng.material.button, global.ng.material.checkbox, global.ng.material.input, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.card, global.ng.material.divider, global.ng.material.chips, global.ng.material.datepicker, global.ng.material.list, global.ng.flexLayout, global['ngx-infinite-scroll'], global['ngx-doc-viewer'], global['ngx-editor'], global.xlsx, global.ng.platformBrowser, global.jsondiffpatch, global.ng.cdk.keycodes, global.ng.material.autocomplete, global.ng.material.buttonToggle));
|
|
5
|
-
}(this, (function (exports, i0, dialog, table, sort, untilDestroy, common, forms, i1$1, rxjs, operators, i1, a11y, coercion, formField, select, icon, i1$2, tooltip, core, button, checkbox, input, menu, progressSpinner, card, divider, chips, datepicker, list, flexLayout, ngxInfiniteScroll, ngxDocViewer, ngxEditor, XLSX, platformBrowser, jsondiffpatch, keycodes, autocomplete, buttonToggle) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/material/dialog'), require('@angular/material/table'), require('@angular/material/sort'), require('@ngneat/until-destroy'), require('@angular/common'), require('@angular/forms'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@angular/material/snack-bar'), require('@angular/cdk/a11y'), require('@angular/cdk/coercion'), require('@angular/material/form-field'), require('@angular/material/select'), require('@angular/material/icon'), require('@angular/router'), require('@angular/material/tooltip'), require('@angular/material/core'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/input'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/card'), require('@angular/material/divider'), require('@angular/material/chips'), require('@angular/material/datepicker'), require('@angular/material/list'), require('@angular/flex-layout'), require('ngx-infinite-scroll'), require('ngx-doc-viewer'), require('ngx-editor'), require('xlsx'), require('@angular/platform-browser'), require('jsondiffpatch'), require('@angular/cdk/keycodes'), require('@angular/material/autocomplete'), require('@angular/material/button-toggle'), require('@angular/material/slide-toggle')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('ngx-techlify-core', ['exports', '@angular/core', '@angular/material/dialog', '@angular/material/table', '@angular/material/sort', '@ngneat/until-destroy', '@angular/common', '@angular/forms', '@angular/common/http', 'rxjs', 'rxjs/operators', '@angular/material/snack-bar', '@angular/cdk/a11y', '@angular/cdk/coercion', '@angular/material/form-field', '@angular/material/select', '@angular/material/icon', '@angular/router', '@angular/material/tooltip', '@angular/material/core', '@angular/material/button', '@angular/material/checkbox', '@angular/material/input', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/card', '@angular/material/divider', '@angular/material/chips', '@angular/material/datepicker', '@angular/material/list', '@angular/flex-layout', 'ngx-infinite-scroll', 'ngx-doc-viewer', 'ngx-editor', 'xlsx', '@angular/platform-browser', 'jsondiffpatch', '@angular/cdk/keycodes', '@angular/material/autocomplete', '@angular/material/button-toggle', '@angular/material/slide-toggle'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['ngx-techlify-core'] = {}, global.ng.core, global.ng.material.dialog, global.ng.material.table, global.ng.material.sort, global['@ngneat/until-destroy'], global.ng.common, global.ng.forms, global.ng.common.http, global.rxjs, global.rxjs.operators, global.ng.material.snackBar, global.ng.cdk.a11y, global.ng.cdk.coercion, global.ng.material.formField, global.ng.material.select, global.ng.material.icon, global.ng.router, global.ng.material.tooltip, global.ng.material.core, global.ng.material.button, global.ng.material.checkbox, global.ng.material.input, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.card, global.ng.material.divider, global.ng.material.chips, global.ng.material.datepicker, global.ng.material.list, global.ng.flexLayout, global['ngx-infinite-scroll'], global['ngx-doc-viewer'], global['ngx-editor'], global.xlsx, global.ng.platformBrowser, global.jsondiffpatch, global.ng.cdk.keycodes, global.ng.material.autocomplete, global.ng.material.buttonToggle, global.ng.material.slideToggle));
|
|
5
|
+
}(this, (function (exports, i0, dialog, table, sort, untilDestroy, common, forms, i1$1, rxjs, operators, i1, a11y, coercion, formField, select, icon, i1$2, tooltip, core, button, checkbox, input, menu, progressSpinner, card, divider, chips, datepicker, list, flexLayout, ngxInfiniteScroll, ngxDocViewer, ngxEditor, XLSX, platformBrowser, jsondiffpatch, keycodes, autocomplete, buttonToggle, slideToggle) { 'use strict';
|
|
6
6
|
|
|
7
7
|
var ActionPopup = /** @class */ (function () {
|
|
8
8
|
function ActionPopup() {
|
|
@@ -2000,6 +2000,7 @@
|
|
|
2000
2000
|
this.dialog = dialog;
|
|
2001
2001
|
this.readonly = false;
|
|
2002
2002
|
this.labelText = 'Note';
|
|
2003
|
+
this.commentsView = false;
|
|
2003
2004
|
this.notes = [];
|
|
2004
2005
|
this.displayedColumns = [
|
|
2005
2006
|
'index',
|
|
@@ -2113,12 +2114,57 @@
|
|
|
2113
2114
|
this.loadData();
|
|
2114
2115
|
}
|
|
2115
2116
|
};
|
|
2117
|
+
NoteListComponent.prototype.commentAction = function (event) {
|
|
2118
|
+
if (event.type === "save") {
|
|
2119
|
+
if (event.value.id) {
|
|
2120
|
+
this.editComment(event.value);
|
|
2121
|
+
return;
|
|
2122
|
+
}
|
|
2123
|
+
this.addComment(event.value);
|
|
2124
|
+
return;
|
|
2125
|
+
}
|
|
2126
|
+
this.deleteNote(event.value);
|
|
2127
|
+
};
|
|
2128
|
+
NoteListComponent.prototype.editComment = function (comment) {
|
|
2129
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
2130
|
+
var result, index;
|
|
2131
|
+
return __generator(this, function (_a) {
|
|
2132
|
+
switch (_a.label) {
|
|
2133
|
+
case 0: return [4 /*yield*/, this.noteService.editNote(comment)];
|
|
2134
|
+
case 1:
|
|
2135
|
+
result = _a.sent();
|
|
2136
|
+
index = this.notes.findIndex(function (x) { return x.id === comment.id; });
|
|
2137
|
+
if (index !== -1) {
|
|
2138
|
+
this.notes[index] = result.item;
|
|
2139
|
+
}
|
|
2140
|
+
return [2 /*return*/];
|
|
2141
|
+
}
|
|
2142
|
+
});
|
|
2143
|
+
});
|
|
2144
|
+
};
|
|
2145
|
+
NoteListComponent.prototype.addComment = function (comment) {
|
|
2146
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
2147
|
+
var result;
|
|
2148
|
+
return __generator(this, function (_a) {
|
|
2149
|
+
switch (_a.label) {
|
|
2150
|
+
case 0:
|
|
2151
|
+
comment.related_model_id = this.relatedModelId;
|
|
2152
|
+
comment.model_type = this.modelType;
|
|
2153
|
+
return [4 /*yield*/, this.noteService.addNote(comment)];
|
|
2154
|
+
case 1:
|
|
2155
|
+
result = _a.sent();
|
|
2156
|
+
this.notes.push(result.item);
|
|
2157
|
+
return [2 /*return*/];
|
|
2158
|
+
}
|
|
2159
|
+
});
|
|
2160
|
+
});
|
|
2161
|
+
};
|
|
2116
2162
|
return NoteListComponent;
|
|
2117
2163
|
}());
|
|
2118
2164
|
NoteListComponent.decorators = [
|
|
2119
2165
|
{ type: i0.Component, args: [{
|
|
2120
2166
|
selector: 'app-note-list',
|
|
2121
|
-
template: "<div fxLayout=\"column\" fxLayoutGap=\"1.5rem\" class=\"m-4\">\n\n
|
|
2167
|
+
template: "<div fxLayout=\"column\" fxLayoutGap=\"1.5rem\" class=\"m-4\" *ngIf=\"!commentsView\">\n\n <div fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"1rem\">\n <h3 class=\"m-0 font-weight-bold mr-3\">{{labelText}}s</h3>\n <button class=\"d-print-none\" *ngIf=\"!readonly\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"addNote()\">+\n Add</button>\n </div>\n\n <div class=\"w-100 scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"notes\" class=\"w-100\" multiTemplateDataRows>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let note; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n\n <ng-container matColumnDef=\"note\">\n <th mat-header-cell *matHeaderCellDef> {{labelText}} </th>\n <td mat-cell *matCellDef=\"let note\">\n {{note?.note}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"d-print-none\"> Actions </th>\n <td mat-cell *matCellDef=\"let note\" class=\"d-print-none\">\n <button type=\"button\" mat-icon-button (click)=\"editNote(note)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteNote(note)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>\n\n<div fxLayout=\"column\" fxLayoutGap=\"1.5rem\" *ngIf=\"commentsView\">\n <div fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"1rem\">\n <h3 class=\"m-0 font-weight-bold mr-3\">{{labelText}}s</h3>\n </div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start\" fxFlex=\"100%\">\n <div class=\"w-100 scroll-container jumbotron\" infiniteScroll [infiniteScrollDistance]=\"1\"\n [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <app-comment-form [commentData]=\"comment\" (action)=\"commentAction($event)\" *ngFor=\"let comment of notes\">\n </app-comment-form>\n <app-comment-form (action)=\"commentAction($event)\"></app-comment-form>\n </div>\n </div>\n</div>\n",
|
|
2122
2168
|
styles: [".scroll-container{max-height:400px;overflow-y:auto}"]
|
|
2123
2169
|
},] }
|
|
2124
2170
|
];
|
|
@@ -2130,11 +2176,95 @@
|
|
|
2130
2176
|
relatedModelId: [{ type: i0.Input }],
|
|
2131
2177
|
modelType: [{ type: i0.Input }],
|
|
2132
2178
|
readonly: [{ type: i0.Input }],
|
|
2133
|
-
labelText: [{ type: i0.Input }]
|
|
2179
|
+
labelText: [{ type: i0.Input }],
|
|
2180
|
+
commentsView: [{ type: i0.Input }]
|
|
2181
|
+
};
|
|
2182
|
+
|
|
2183
|
+
var CommentFormComponent = /** @class */ (function () {
|
|
2184
|
+
function CommentFormComponent(fb, credentialService) {
|
|
2185
|
+
this.fb = fb;
|
|
2186
|
+
this.credentialService = credentialService;
|
|
2187
|
+
this.action = new i0.EventEmitter();
|
|
2188
|
+
this.createForm();
|
|
2189
|
+
}
|
|
2190
|
+
Object.defineProperty(CommentFormComponent.prototype, "commentData", {
|
|
2191
|
+
set: function (data) {
|
|
2192
|
+
this.view = !!data;
|
|
2193
|
+
this._commentData = data;
|
|
2194
|
+
this.commentFormGroup.patchValue(data);
|
|
2195
|
+
},
|
|
2196
|
+
enumerable: false,
|
|
2197
|
+
configurable: true
|
|
2198
|
+
});
|
|
2199
|
+
CommentFormComponent.prototype.ngOnInit = function () { };
|
|
2200
|
+
Object.defineProperty(CommentFormComponent.prototype, "isLoggedIn", {
|
|
2201
|
+
get: function () {
|
|
2202
|
+
return this.credentialService.isAuthenticated;
|
|
2203
|
+
},
|
|
2204
|
+
enumerable: false,
|
|
2205
|
+
configurable: true
|
|
2206
|
+
});
|
|
2207
|
+
Object.defineProperty(CommentFormComponent.prototype, "currentUser", {
|
|
2208
|
+
get: function () {
|
|
2209
|
+
return this.credentialService.credentials.user;
|
|
2210
|
+
},
|
|
2211
|
+
enumerable: false,
|
|
2212
|
+
configurable: true
|
|
2213
|
+
});
|
|
2214
|
+
CommentFormComponent.prototype.createForm = function () {
|
|
2215
|
+
//TODO: Finialize and add more validations.
|
|
2216
|
+
this.commentFormGroup = this.fb.group({
|
|
2217
|
+
id: [""],
|
|
2218
|
+
note: [""],
|
|
2219
|
+
model_type: [""],
|
|
2220
|
+
related_model_id: [""],
|
|
2221
|
+
});
|
|
2222
|
+
};
|
|
2223
|
+
CommentFormComponent.prototype.submit = function () {
|
|
2224
|
+
if (this.commentFormGroup.get("note").value) {
|
|
2225
|
+
if (this._commentData) {
|
|
2226
|
+
this.view = !this.view;
|
|
2227
|
+
}
|
|
2228
|
+
this.action.emit({ type: "save", value: this.commentFormGroup.value });
|
|
2229
|
+
this.commentFormGroup.reset();
|
|
2230
|
+
}
|
|
2231
|
+
else if (this.commentFormGroup.get("id").value) {
|
|
2232
|
+
this.deleteComment();
|
|
2233
|
+
}
|
|
2234
|
+
};
|
|
2235
|
+
CommentFormComponent.prototype.hideEdit = function () {
|
|
2236
|
+
if (this.commentFormGroup.get("id").value) {
|
|
2237
|
+
this.view = !this.view;
|
|
2238
|
+
}
|
|
2239
|
+
};
|
|
2240
|
+
CommentFormComponent.prototype.editComment = function () {
|
|
2241
|
+
this.view = !this.view;
|
|
2242
|
+
this.commentFormGroup.patchValue(this._commentData);
|
|
2243
|
+
};
|
|
2244
|
+
CommentFormComponent.prototype.deleteComment = function () {
|
|
2245
|
+
this.action.emit({ type: "delete", value: this.commentFormGroup.value });
|
|
2246
|
+
};
|
|
2247
|
+
CommentFormComponent.prototype.ngOnDestroy = function () { };
|
|
2248
|
+
return CommentFormComponent;
|
|
2249
|
+
}());
|
|
2250
|
+
CommentFormComponent.decorators = [
|
|
2251
|
+
{ type: i0.Component, args: [{
|
|
2252
|
+
selector: "app-comment-form",
|
|
2253
|
+
template: "<form (ngSubmit)=\"submit()\" [formGroup]=\"commentFormGroup\">\n <div fxLayout=\"column\" class=\"my-2\" [ngClass]=\"{ 'border border-primary shadow rounded ': view}\">\n <div *ngIf=\"!view\" fxLayout=\"column\">\n <mat-form-field appearance=\"outline\" style=\"background-color:white;\">\n <mat-label>Comment</mat-label>\n <textarea matInput rows=\"5\" placeholder=\"Add a comment...\" formControlName=\"note\" autocomplete=\"off\"></textarea>\n </mat-form-field>\n\n <div fxLayout fxLayoutGap=\"1rem\" class=\"mt-2\">\n <span fxFlex></span>\n <button *ngIf=\"_commentData\" mat-button type=\"button\" (click)=\"view = !view\">\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" type=\"submit\">\n {{ _commentData ? \"Update\" : \"Post comment\" }}\n </button>\n </div>\n </div>\n\n <div fxLayout=\"column\" *ngIf=\"view\" class=\"p-2 m-2\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\".5rem\">\n <div fxFlex=\"20%\" fxLayoutAlign=\"start\">\n <button mat-icon-button type=\"button\" style=\"color:grey\">\n <mat-icon style=\"font-size:60px\">account_circle</mat-icon>\n </button>\n </div>\n <div fxFlex=\"75%\">\n <div fxLayout=\"column\" fxLayoutGap=\".5rem\">\n <div class=\"font-weight-bold\">{{ _commentData?.creator?.name }}</div>\n <div class=\"text-muted\">{{ _commentData.updated_at | date:'medium' }}</div>\n </div>\n </div>\n </div>\n <app-read-more class=\"mt-2\" [text]=\"_commentData.note\"></app-read-more>\n <div fxLayout class=\"mt-1\" fxLayoutGap=\"1rem\" *ngIf=\"isLoggedIn && currentUser.id === _commentData.creator_id\">\n <a href=\"javascript:;\" (click)=\"editComment()\">\n Edit\n </a>\n <a href=\"javascript:;\" (click)=\"deleteComment()\">\n Delete\n </a>\n </div>\n </div>\n </div>\n</form>",
|
|
2254
|
+
styles: [":host ::ng-deep .mat-form-field-wrapper{margin:0!important;padding-bottom:0!important}"]
|
|
2255
|
+
},] }
|
|
2256
|
+
];
|
|
2257
|
+
CommentFormComponent.ctorParameters = function () { return [
|
|
2258
|
+
{ type: forms.FormBuilder },
|
|
2259
|
+
{ type: CredentialsService }
|
|
2260
|
+
]; };
|
|
2261
|
+
CommentFormComponent.propDecorators = {
|
|
2262
|
+
commentData: [{ type: i0.Input }],
|
|
2263
|
+
action: [{ type: i0.Output }]
|
|
2134
2264
|
};
|
|
2135
2265
|
|
|
2136
2266
|
var SearchableSelectorComponent_1;
|
|
2137
|
-
exports.ɵ
|
|
2267
|
+
exports.ɵx = SearchableSelectorComponent_1 = /** @class */ (function () {
|
|
2138
2268
|
function SearchableSelectorComponent(formBuilder, _focusMonitor, http, _elementRef, dialog, ngControl) {
|
|
2139
2269
|
var _this = this;
|
|
2140
2270
|
this._focusMonitor = _focusMonitor;
|
|
@@ -2383,8 +2513,8 @@
|
|
|
2383
2513
|
};
|
|
2384
2514
|
return SearchableSelectorComponent;
|
|
2385
2515
|
}());
|
|
2386
|
-
exports.ɵ
|
|
2387
|
-
exports.ɵ
|
|
2516
|
+
exports.ɵx.nextId = 0;
|
|
2517
|
+
exports.ɵx.decorators = [
|
|
2388
2518
|
{ type: i0.Component, args: [{
|
|
2389
2519
|
selector: 'app-searchable-selector',
|
|
2390
2520
|
template: "<div [formGroup]=\"selectorForm\" class=\"searchable-selctor-container\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [multiple]=\"multiple\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\" msInfiniteScroll (infiniteScroll)=\"onScroll()\"\n (openedChange)=\"openedChange($event)\">\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n </mat-form-field>\n <div>\n <!-- TODO:Implement scroll only for options and have search fixed -->\n <mat-option *ngFor=\" let item of dataItems\" [value]=\"getPropertyValue(item,valueField)\">\n {{getPropertyValue(item,titleField)}}\n </mat-option>\n </div>\n <div fxlayout=\"column\" class=\"w-100\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"my-4\" color=\"primary\" diameter=\"30\" *ngIf=\"isLoading\"></mat-spinner>\n </div>\n </mat-select>\n <mat-icon *ngIf=\"add\" class=\"relative-icon\" matSuffix (click)=\"addItem($event)\">add_circle_outline</mat-icon>\n <mat-icon *ngIf=\"edit && selectedValue\" class=\"relative-icon\" matSuffix (click)=\"editItem($event)\">edit</mat-icon>\n</div>",
|
|
@@ -2397,7 +2527,7 @@
|
|
|
2397
2527
|
styles: [".searchable-selctor-container{display:flex}.relative-icon{position:relative;top:-4px}"]
|
|
2398
2528
|
},] }
|
|
2399
2529
|
];
|
|
2400
|
-
exports.ɵ
|
|
2530
|
+
exports.ɵx.ctorParameters = function () { return [
|
|
2401
2531
|
{ type: forms.FormBuilder },
|
|
2402
2532
|
{ type: a11y.FocusMonitor },
|
|
2403
2533
|
{ type: HttpService },
|
|
@@ -2405,7 +2535,7 @@
|
|
|
2405
2535
|
{ type: dialog.MatDialog },
|
|
2406
2536
|
{ type: forms.NgControl, decorators: [{ type: i0.Optional }, { type: i0.Self }] }
|
|
2407
2537
|
]; };
|
|
2408
|
-
exports.ɵ
|
|
2538
|
+
exports.ɵx.propDecorators = {
|
|
2409
2539
|
valueField: [{ type: i0.Input }],
|
|
2410
2540
|
titleField: [{ type: i0.Input }],
|
|
2411
2541
|
apiUrl: [{ type: i0.Input }],
|
|
@@ -2428,9 +2558,9 @@
|
|
|
2428
2558
|
disabled: [{ type: i0.Input }],
|
|
2429
2559
|
value: [{ type: i0.Input }]
|
|
2430
2560
|
};
|
|
2431
|
-
exports.ɵ
|
|
2561
|
+
exports.ɵx = SearchableSelectorComponent_1 = __decorate([
|
|
2432
2562
|
untilDestroy.UntilDestroy()
|
|
2433
|
-
], exports.ɵ
|
|
2563
|
+
], exports.ɵx);
|
|
2434
2564
|
|
|
2435
2565
|
var MatSelectInfiniteScrollDirective = /** @class */ (function () {
|
|
2436
2566
|
function MatSelectInfiniteScrollDirective(matSelect, ngZone) {
|
|
@@ -2738,7 +2868,7 @@
|
|
|
2738
2868
|
Timeline.LAST_YEAR = 11;
|
|
2739
2869
|
Timeline.ALL = 12;
|
|
2740
2870
|
|
|
2741
|
-
exports.ɵ
|
|
2871
|
+
exports.ɵbb = /** @class */ (function () {
|
|
2742
2872
|
function TimelineFilterComponent() {
|
|
2743
2873
|
this.timelineValue = new forms.FormControl('');
|
|
2744
2874
|
this.timelines = [
|
|
@@ -2794,15 +2924,15 @@
|
|
|
2794
2924
|
};
|
|
2795
2925
|
return TimelineFilterComponent;
|
|
2796
2926
|
}());
|
|
2797
|
-
exports.ɵ
|
|
2927
|
+
exports.ɵbb.decorators = [
|
|
2798
2928
|
{ type: i0.Component, args: [{
|
|
2799
2929
|
selector: 'app-timeline-filter',
|
|
2800
2930
|
template: "<ng-container [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>{{labelText}}</mat-label>\n <mat-select [formControl]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n <button mat-button *ngIf=\"showClearbutton && timelineValue.value\" matSuffix mat-icon-button\n (click)=\"timelineValue.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>From Date</mat-label>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>To Date</mat-label>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>",
|
|
2801
2931
|
styles: [""]
|
|
2802
2932
|
},] }
|
|
2803
2933
|
];
|
|
2804
|
-
exports.ɵ
|
|
2805
|
-
exports.ɵ
|
|
2934
|
+
exports.ɵbb.ctorParameters = function () { return []; };
|
|
2935
|
+
exports.ɵbb.propDecorators = {
|
|
2806
2936
|
timelineValue: [{ type: i0.Input }],
|
|
2807
2937
|
timelines: [{ type: i0.Input }],
|
|
2808
2938
|
labelText: [{ type: i0.Input }],
|
|
@@ -2813,9 +2943,9 @@
|
|
|
2813
2943
|
form: [{ type: i0.Input }],
|
|
2814
2944
|
defaultValue: [{ type: i0.Input }]
|
|
2815
2945
|
};
|
|
2816
|
-
exports.ɵ
|
|
2946
|
+
exports.ɵbb = __decorate([
|
|
2817
2947
|
untilDestroy.UntilDestroy()
|
|
2818
|
-
], exports.ɵ
|
|
2948
|
+
], exports.ɵbb);
|
|
2819
2949
|
|
|
2820
2950
|
var LoaderComponent = /** @class */ (function () {
|
|
2821
2951
|
function LoaderComponent() {
|
|
@@ -3330,6 +3460,68 @@
|
|
|
3330
3460
|
},] }
|
|
3331
3461
|
];
|
|
3332
3462
|
|
|
3463
|
+
var ReadMoreComponent = /** @class */ (function () {
|
|
3464
|
+
function ReadMoreComponent() {
|
|
3465
|
+
this.maxLength = 100;
|
|
3466
|
+
this.hideToggle = true;
|
|
3467
|
+
this.isCollapsed = true;
|
|
3468
|
+
}
|
|
3469
|
+
ReadMoreComponent.prototype.ngOnInit = function () {
|
|
3470
|
+
this.determineView();
|
|
3471
|
+
};
|
|
3472
|
+
ReadMoreComponent.prototype.toggleView = function () {
|
|
3473
|
+
this.isCollapsed = !this.isCollapsed;
|
|
3474
|
+
this.determineView();
|
|
3475
|
+
};
|
|
3476
|
+
ReadMoreComponent.prototype.determineView = function () {
|
|
3477
|
+
if (!this.text || this.text.length <= this.maxLength) {
|
|
3478
|
+
this.currentText = this.text;
|
|
3479
|
+
this.isCollapsed = false;
|
|
3480
|
+
this.hideToggle = true;
|
|
3481
|
+
return;
|
|
3482
|
+
}
|
|
3483
|
+
this.hideToggle = false;
|
|
3484
|
+
if (this.isCollapsed == true) {
|
|
3485
|
+
this.currentText = this.text.substring(0, this.maxLength) + "...";
|
|
3486
|
+
}
|
|
3487
|
+
else if (this.isCollapsed == false) {
|
|
3488
|
+
this.currentText = this.text;
|
|
3489
|
+
}
|
|
3490
|
+
};
|
|
3491
|
+
return ReadMoreComponent;
|
|
3492
|
+
}());
|
|
3493
|
+
ReadMoreComponent.decorators = [
|
|
3494
|
+
{ type: i0.Component, args: [{
|
|
3495
|
+
selector: "app-read-more",
|
|
3496
|
+
template: "<div [innerHTML]=\"currentText\"></div>\n<a href=\"javascript:;\" *ngIf=\"!hideToggle\" class=\"primary-color hoverable\" (click)=\"toggleView()\">Read\n {{ isCollapsed ? \"more\" : \"less\" }}</a>",
|
|
3497
|
+
styles: ["div.collapsed{height:250px;overflow:hidden}.primary-color{color:#009fdd!important}"]
|
|
3498
|
+
},] }
|
|
3499
|
+
];
|
|
3500
|
+
ReadMoreComponent.ctorParameters = function () { return []; };
|
|
3501
|
+
ReadMoreComponent.propDecorators = {
|
|
3502
|
+
text: [{ type: i0.Input }],
|
|
3503
|
+
maxLength: [{ type: i0.Input }]
|
|
3504
|
+
};
|
|
3505
|
+
|
|
3506
|
+
var ReadMoreModule = /** @class */ (function () {
|
|
3507
|
+
function ReadMoreModule() {
|
|
3508
|
+
}
|
|
3509
|
+
return ReadMoreModule;
|
|
3510
|
+
}());
|
|
3511
|
+
ReadMoreModule.decorators = [
|
|
3512
|
+
{ type: i0.NgModule, args: [{
|
|
3513
|
+
declarations: [ReadMoreComponent],
|
|
3514
|
+
imports: [
|
|
3515
|
+
common.CommonModule,
|
|
3516
|
+
MaterialModule,
|
|
3517
|
+
flexLayout.FlexLayoutModule
|
|
3518
|
+
],
|
|
3519
|
+
exports: [
|
|
3520
|
+
ReadMoreComponent
|
|
3521
|
+
]
|
|
3522
|
+
},] }
|
|
3523
|
+
];
|
|
3524
|
+
|
|
3333
3525
|
var NoteModule = /** @class */ (function () {
|
|
3334
3526
|
function NoteModule() {
|
|
3335
3527
|
}
|
|
@@ -3339,7 +3531,8 @@
|
|
|
3339
3531
|
{ type: i0.NgModule, args: [{
|
|
3340
3532
|
declarations: [
|
|
3341
3533
|
NoteListComponent,
|
|
3342
|
-
NoteFormComponent
|
|
3534
|
+
NoteFormComponent,
|
|
3535
|
+
CommentFormComponent,
|
|
3343
3536
|
],
|
|
3344
3537
|
imports: [
|
|
3345
3538
|
common.CommonModule,
|
|
@@ -3347,7 +3540,8 @@
|
|
|
3347
3540
|
ngxInfiniteScroll.InfiniteScrollModule,
|
|
3348
3541
|
flexLayout.FlexLayoutModule,
|
|
3349
3542
|
ActionPopupModule,
|
|
3350
|
-
MaterialModule
|
|
3543
|
+
MaterialModule,
|
|
3544
|
+
ReadMoreModule
|
|
3351
3545
|
],
|
|
3352
3546
|
exports: [
|
|
3353
3547
|
NoteListComponent
|
|
@@ -3370,11 +3564,11 @@
|
|
|
3370
3564
|
MaterialModule
|
|
3371
3565
|
],
|
|
3372
3566
|
declarations: [
|
|
3373
|
-
exports.ɵ
|
|
3567
|
+
exports.ɵx,
|
|
3374
3568
|
MatSelectInfiniteScrollDirective
|
|
3375
3569
|
],
|
|
3376
3570
|
exports: [
|
|
3377
|
-
exports.ɵ
|
|
3571
|
+
exports.ɵx,
|
|
3378
3572
|
MatSelectInfiniteScrollDirective
|
|
3379
3573
|
]
|
|
3380
3574
|
},] }
|
|
@@ -3418,7 +3612,7 @@
|
|
|
3418
3612
|
}());
|
|
3419
3613
|
TimelineFilterModule.decorators = [
|
|
3420
3614
|
{ type: i0.NgModule, args: [{
|
|
3421
|
-
declarations: [exports.ɵ
|
|
3615
|
+
declarations: [exports.ɵbb],
|
|
3422
3616
|
imports: [
|
|
3423
3617
|
common.CommonModule,
|
|
3424
3618
|
TimelineFilterRoutingModule,
|
|
@@ -3426,7 +3620,7 @@
|
|
|
3426
3620
|
MaterialModule,
|
|
3427
3621
|
forms.ReactiveFormsModule
|
|
3428
3622
|
],
|
|
3429
|
-
exports: [exports.ɵ
|
|
3623
|
+
exports: [exports.ɵbb]
|
|
3430
3624
|
},] }
|
|
3431
3625
|
];
|
|
3432
3626
|
|
|
@@ -3528,7 +3722,7 @@
|
|
|
3528
3722
|
required: "Email Type is required"
|
|
3529
3723
|
},
|
|
3530
3724
|
};
|
|
3531
|
-
exports.ɵ
|
|
3725
|
+
exports.ɵbe = /** @class */ (function () {
|
|
3532
3726
|
function EmailSubscriptionUserFormComponent(fb, formValidatorService, alertService, dialogRef, data, http) {
|
|
3533
3727
|
this.fb = fb;
|
|
3534
3728
|
this.formValidatorService = formValidatorService;
|
|
@@ -3590,14 +3784,14 @@
|
|
|
3590
3784
|
};
|
|
3591
3785
|
return EmailSubscriptionUserFormComponent;
|
|
3592
3786
|
}());
|
|
3593
|
-
exports.ɵ
|
|
3787
|
+
exports.ɵbe.decorators = [
|
|
3594
3788
|
{ type: i0.Component, args: [{
|
|
3595
3789
|
selector: 'app-email-subscription-user-form',
|
|
3596
3790
|
template: "<form [formGroup]=\"esUserFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription User</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\" required\n [selectedValue]=\"selectedUser\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('user_id')\">{{getErrorMessage('user_id')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\"\n required [selectedValue]=\"selectedType\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('email_type_id')\">{{getErrorMessage('email_type_id')}}</mat-error>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>",
|
|
3597
3791
|
styles: [""]
|
|
3598
3792
|
},] }
|
|
3599
3793
|
];
|
|
3600
|
-
exports.ɵ
|
|
3794
|
+
exports.ɵbe.ctorParameters = function () { return [
|
|
3601
3795
|
{ type: forms.FormBuilder },
|
|
3602
3796
|
{ type: FormValidatorService },
|
|
3603
3797
|
{ type: AlertService },
|
|
@@ -3605,9 +3799,9 @@
|
|
|
3605
3799
|
{ type: undefined, decorators: [{ type: i0.Inject, args: [dialog.MAT_DIALOG_DATA,] }] },
|
|
3606
3800
|
{ type: HttpService }
|
|
3607
3801
|
]; };
|
|
3608
|
-
exports.ɵ
|
|
3802
|
+
exports.ɵbe = __decorate([
|
|
3609
3803
|
untilDestroy.UntilDestroy()
|
|
3610
|
-
], exports.ɵ
|
|
3804
|
+
], exports.ɵbe);
|
|
3611
3805
|
|
|
3612
3806
|
var EmailSubscriptionUserFormModule = /** @class */ (function () {
|
|
3613
3807
|
function EmailSubscriptionUserFormModule() {
|
|
@@ -3616,7 +3810,7 @@
|
|
|
3616
3810
|
}());
|
|
3617
3811
|
EmailSubscriptionUserFormModule.decorators = [
|
|
3618
3812
|
{ type: i0.NgModule, args: [{
|
|
3619
|
-
declarations: [exports.ɵ
|
|
3813
|
+
declarations: [exports.ɵbe],
|
|
3620
3814
|
imports: [
|
|
3621
3815
|
common.CommonModule,
|
|
3622
3816
|
MaterialModule,
|
|
@@ -3626,12 +3820,12 @@
|
|
|
3626
3820
|
EmailSubscriptionUserFormRoutingModule,
|
|
3627
3821
|
LoaderModule
|
|
3628
3822
|
],
|
|
3629
|
-
entryComponents: [exports.ɵ
|
|
3823
|
+
entryComponents: [exports.ɵbe]
|
|
3630
3824
|
},] }
|
|
3631
3825
|
];
|
|
3632
3826
|
|
|
3633
3827
|
var log$4 = new Logger('EmailSubscriptionUser list');
|
|
3634
|
-
exports.ɵ
|
|
3828
|
+
exports.ɵbf = /** @class */ (function () {
|
|
3635
3829
|
function EmailSubscriptionUserListComponent(dialog, http, router) {
|
|
3636
3830
|
this.dialog = dialog;
|
|
3637
3831
|
this.http = http;
|
|
@@ -3692,7 +3886,7 @@
|
|
|
3692
3886
|
};
|
|
3693
3887
|
EmailSubscriptionUserListComponent.prototype.addEmailSubscriptionUser = function () {
|
|
3694
3888
|
var _this = this;
|
|
3695
|
-
var dialogRef = this.dialog.open(exports.ɵ
|
|
3889
|
+
var dialogRef = this.dialog.open(exports.ɵbe, {
|
|
3696
3890
|
width: '800px',
|
|
3697
3891
|
autoFocus: false,
|
|
3698
3892
|
data: {} // Any data passed here will be injected into the model
|
|
@@ -3707,7 +3901,7 @@
|
|
|
3707
3901
|
EmailSubscriptionUserListComponent.prototype.editEmailSubscriptionUser = function (event, esUser) {
|
|
3708
3902
|
var _this = this;
|
|
3709
3903
|
event.stopPropagation();
|
|
3710
|
-
var dialogRef = this.dialog.open(exports.ɵ
|
|
3904
|
+
var dialogRef = this.dialog.open(exports.ɵbe, {
|
|
3711
3905
|
width: '800px',
|
|
3712
3906
|
autoFocus: false,
|
|
3713
3907
|
data: {
|
|
@@ -3765,24 +3959,24 @@
|
|
|
3765
3959
|
};
|
|
3766
3960
|
return EmailSubscriptionUserListComponent;
|
|
3767
3961
|
}());
|
|
3768
|
-
exports.ɵ
|
|
3962
|
+
exports.ɵbf.decorators = [
|
|
3769
3963
|
{ type: i0.Component, args: [{
|
|
3770
3964
|
selector: 'app-email-subscription-user-list',
|
|
3771
3965
|
template: "<div class=\"mat-typography m-4\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <app-email-subscription-user-list-filter (valueChange)=\"filterChange($event)\">\n </app-email-subscription-user-list-filter>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionUser()\">+\n User Subscription</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"esUserList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-user-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let esUser; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"user.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> User </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.user?.name }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email_type.title\">\n <th mat-header-cell *matHeaderCellDef> Email Type </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.email_type?.title }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"creator.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Creator</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.creator?.name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created On</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.created_at | date:'medium' }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let esUser\">\n <button type=\"button\" mat-icon-button (click)=\"deleteEmailSubscriptionUser($event,esUser)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"editEmailSubscriptionUser($event,esUser)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n </section>\n</div>",
|
|
3772
3966
|
styles: [".scroll-container{max-height:800px;overflow-y:auto}"]
|
|
3773
3967
|
},] }
|
|
3774
3968
|
];
|
|
3775
|
-
exports.ɵ
|
|
3969
|
+
exports.ɵbf.ctorParameters = function () { return [
|
|
3776
3970
|
{ type: dialog.MatDialog },
|
|
3777
3971
|
{ type: HttpService },
|
|
3778
3972
|
{ type: i1$2.Router }
|
|
3779
3973
|
]; };
|
|
3780
|
-
exports.ɵ
|
|
3974
|
+
exports.ɵbf.propDecorators = {
|
|
3781
3975
|
sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }]
|
|
3782
3976
|
};
|
|
3783
|
-
exports.ɵ
|
|
3977
|
+
exports.ɵbf = __decorate([
|
|
3784
3978
|
untilDestroy.UntilDestroy()
|
|
3785
|
-
], exports.ɵ
|
|
3979
|
+
], exports.ɵbf);
|
|
3786
3980
|
|
|
3787
3981
|
var esulr = {
|
|
3788
3982
|
title: 'Email Subscription Users',
|
|
@@ -3794,7 +3988,7 @@
|
|
|
3794
3988
|
var routes$4 = [
|
|
3795
3989
|
{
|
|
3796
3990
|
path: '',
|
|
3797
|
-
component: exports.ɵ
|
|
3991
|
+
component: exports.ɵbf,
|
|
3798
3992
|
canActivate: [AuthenticationGuard],
|
|
3799
3993
|
data: esulr
|
|
3800
3994
|
},
|
|
@@ -3824,7 +4018,7 @@
|
|
|
3824
4018
|
},] }
|
|
3825
4019
|
];
|
|
3826
4020
|
|
|
3827
|
-
exports.ɵ
|
|
4021
|
+
exports.ɵbh = /** @class */ (function () {
|
|
3828
4022
|
function EmailSubscriptionUserListFilterComponent(fb) {
|
|
3829
4023
|
this.fb = fb;
|
|
3830
4024
|
this.valueChange = new i0.EventEmitter();
|
|
@@ -3853,22 +4047,22 @@
|
|
|
3853
4047
|
};
|
|
3854
4048
|
return EmailSubscriptionUserListFilterComponent;
|
|
3855
4049
|
}());
|
|
3856
|
-
exports.ɵ
|
|
4050
|
+
exports.ɵbh.decorators = [
|
|
3857
4051
|
{ type: i0.Component, args: [{
|
|
3858
4052
|
selector: 'app-email-subscription-user-list-filter',
|
|
3859
4053
|
template: "<form [formGroup]=\"esUserFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field class=\"ml-3\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class=\"ml-3\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</form>",
|
|
3860
4054
|
styles: [""]
|
|
3861
4055
|
},] }
|
|
3862
4056
|
];
|
|
3863
|
-
exports.ɵ
|
|
4057
|
+
exports.ɵbh.ctorParameters = function () { return [
|
|
3864
4058
|
{ type: forms.FormBuilder }
|
|
3865
4059
|
]; };
|
|
3866
|
-
exports.ɵ
|
|
4060
|
+
exports.ɵbh.propDecorators = {
|
|
3867
4061
|
valueChange: [{ type: i0.Output }]
|
|
3868
4062
|
};
|
|
3869
|
-
exports.ɵ
|
|
4063
|
+
exports.ɵbh = __decorate([
|
|
3870
4064
|
untilDestroy.UntilDestroy()
|
|
3871
|
-
], exports.ɵ
|
|
4065
|
+
], exports.ɵbh);
|
|
3872
4066
|
|
|
3873
4067
|
var EmailSubscriptionUserListFilterModule = /** @class */ (function () {
|
|
3874
4068
|
function EmailSubscriptionUserListFilterModule() {
|
|
@@ -3877,7 +4071,7 @@
|
|
|
3877
4071
|
}());
|
|
3878
4072
|
EmailSubscriptionUserListFilterModule.decorators = [
|
|
3879
4073
|
{ type: i0.NgModule, args: [{
|
|
3880
|
-
declarations: [exports.ɵ
|
|
4074
|
+
declarations: [exports.ɵbh],
|
|
3881
4075
|
imports: [
|
|
3882
4076
|
common.CommonModule,
|
|
3883
4077
|
MaterialModule,
|
|
@@ -3886,7 +4080,7 @@
|
|
|
3886
4080
|
SearchableSelectorModule,
|
|
3887
4081
|
EmailSubscriptionUserListFilterRoutingModule
|
|
3888
4082
|
],
|
|
3889
|
-
exports: [exports.ɵ
|
|
4083
|
+
exports: [exports.ɵbh]
|
|
3890
4084
|
},] }
|
|
3891
4085
|
];
|
|
3892
4086
|
|
|
@@ -3897,7 +4091,7 @@
|
|
|
3897
4091
|
}());
|
|
3898
4092
|
EmailSubscriptionUserListModule.decorators = [
|
|
3899
4093
|
{ type: i0.NgModule, args: [{
|
|
3900
|
-
declarations: [exports.ɵ
|
|
4094
|
+
declarations: [exports.ɵbf],
|
|
3901
4095
|
imports: [
|
|
3902
4096
|
common.CommonModule,
|
|
3903
4097
|
ngxInfiniteScroll.InfiniteScrollModule,
|
|
@@ -3908,7 +4102,7 @@
|
|
|
3908
4102
|
EmailSubscriptionUserFormModule,
|
|
3909
4103
|
EmailSubscriptionUserListFilterModule
|
|
3910
4104
|
],
|
|
3911
|
-
exports: [exports.ɵ
|
|
4105
|
+
exports: [exports.ɵbf]
|
|
3912
4106
|
},] }
|
|
3913
4107
|
];
|
|
3914
4108
|
|
|
@@ -3964,7 +4158,7 @@
|
|
|
3964
4158
|
required: "Frequency is required"
|
|
3965
4159
|
},
|
|
3966
4160
|
};
|
|
3967
|
-
exports.ɵ
|
|
4161
|
+
exports.ɵbi = /** @class */ (function () {
|
|
3968
4162
|
function EmailSubscriptionTypeFormComponent(fb, formValidatorService, alertService, dialogRef, data, http) {
|
|
3969
4163
|
this.fb = fb;
|
|
3970
4164
|
this.formValidatorService = formValidatorService;
|
|
@@ -4028,14 +4222,14 @@
|
|
|
4028
4222
|
};
|
|
4029
4223
|
return EmailSubscriptionTypeFormComponent;
|
|
4030
4224
|
}());
|
|
4031
|
-
exports.ɵ
|
|
4225
|
+
exports.ɵbi.decorators = [
|
|
4032
4226
|
{ type: i0.Component, args: [{
|
|
4033
4227
|
selector: 'app-email-subscription-type-form',
|
|
4034
4228
|
template: "<form [formGroup]=\"emailSubscriptionTypeFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription Type</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('title')\">{{getErrorMessage('title')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"code\" placeholder=\"Code\" autocomplete=\"off\" required />\n <mat-hint align=\"end\">Unique Value</mat-hint>\n <mat-error *ngIf=\"isFieldValid('code')\">{{getErrorMessage('code')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <mat-label>Frequency</mat-label>\n <app-searchable-selector formControlName=\"frequency_id\" apiUrl=\"api/email-subscription-frequencies\"\n [(selectedValue)]=\"selectedFrequency\" [enableSearch]=\"false\" required>\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('frequency_id')\">{{getErrorMessage('frequency_id')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <textarea matInput formControlName=\"description\" placeholder=\"Description\"\n autocomplete=\"off\"></textarea>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>",
|
|
4035
4229
|
styles: [""]
|
|
4036
4230
|
},] }
|
|
4037
4231
|
];
|
|
4038
|
-
exports.ɵ
|
|
4232
|
+
exports.ɵbi.ctorParameters = function () { return [
|
|
4039
4233
|
{ type: forms.FormBuilder },
|
|
4040
4234
|
{ type: FormValidatorService },
|
|
4041
4235
|
{ type: AlertService },
|
|
@@ -4043,9 +4237,9 @@
|
|
|
4043
4237
|
{ type: undefined, decorators: [{ type: i0.Inject, args: [dialog.MAT_DIALOG_DATA,] }] },
|
|
4044
4238
|
{ type: HttpService }
|
|
4045
4239
|
]; };
|
|
4046
|
-
exports.ɵ
|
|
4240
|
+
exports.ɵbi = __decorate([
|
|
4047
4241
|
untilDestroy.UntilDestroy()
|
|
4048
|
-
], exports.ɵ
|
|
4242
|
+
], exports.ɵbi);
|
|
4049
4243
|
|
|
4050
4244
|
var EmailSubscriptionTypeFormModule = /** @class */ (function () {
|
|
4051
4245
|
function EmailSubscriptionTypeFormModule() {
|
|
@@ -4054,7 +4248,7 @@
|
|
|
4054
4248
|
}());
|
|
4055
4249
|
EmailSubscriptionTypeFormModule.decorators = [
|
|
4056
4250
|
{ type: i0.NgModule, args: [{
|
|
4057
|
-
declarations: [exports.ɵ
|
|
4251
|
+
declarations: [exports.ɵbi],
|
|
4058
4252
|
imports: [
|
|
4059
4253
|
common.CommonModule,
|
|
4060
4254
|
MaterialModule,
|
|
@@ -4064,12 +4258,12 @@
|
|
|
4064
4258
|
EmailSubscriptionTypeFormRoutingModule,
|
|
4065
4259
|
LoaderModule
|
|
4066
4260
|
],
|
|
4067
|
-
exports: [exports.ɵ
|
|
4068
|
-
entryComponents: [exports.ɵ
|
|
4261
|
+
exports: [exports.ɵbi],
|
|
4262
|
+
entryComponents: [exports.ɵbi]
|
|
4069
4263
|
},] }
|
|
4070
4264
|
];
|
|
4071
4265
|
|
|
4072
|
-
exports.ɵ
|
|
4266
|
+
exports.ɵbj = /** @class */ (function () {
|
|
4073
4267
|
function EmailSubscriptionTypeListComponent(dialog, http) {
|
|
4074
4268
|
this.dialog = dialog;
|
|
4075
4269
|
this.http = http;
|
|
@@ -4133,7 +4327,7 @@
|
|
|
4133
4327
|
};
|
|
4134
4328
|
EmailSubscriptionTypeListComponent.prototype.addEmailSubscriptionType = function () {
|
|
4135
4329
|
var _this = this;
|
|
4136
|
-
var dialogRef = this.dialog.open(exports.ɵ
|
|
4330
|
+
var dialogRef = this.dialog.open(exports.ɵbi, {
|
|
4137
4331
|
width: '400px',
|
|
4138
4332
|
autoFocus: false,
|
|
4139
4333
|
data: {} // Any data passed here will be injected into the model
|
|
@@ -4147,7 +4341,7 @@
|
|
|
4147
4341
|
EmailSubscriptionTypeListComponent.prototype.editEmailSubscriptionType = function (event, emailSubscriptionType) {
|
|
4148
4342
|
var _this = this;
|
|
4149
4343
|
event.stopPropagation();
|
|
4150
|
-
var dialogRef = this.dialog.open(exports.ɵ
|
|
4344
|
+
var dialogRef = this.dialog.open(exports.ɵbi, {
|
|
4151
4345
|
width: '400px',
|
|
4152
4346
|
autoFocus: false,
|
|
4153
4347
|
data: {
|
|
@@ -4204,23 +4398,23 @@
|
|
|
4204
4398
|
};
|
|
4205
4399
|
return EmailSubscriptionTypeListComponent;
|
|
4206
4400
|
}());
|
|
4207
|
-
exports.ɵ
|
|
4401
|
+
exports.ɵbj.decorators = [
|
|
4208
4402
|
{ type: i0.Component, args: [{
|
|
4209
4403
|
selector: 'app-email-subscription-type-list',
|
|
4210
4404
|
template: "<div class=\"mat-typography m-4\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <mat-form-field>\n <input matInput [formControl]=\"search\" placeholder=\"Email Type\" autocomplete=\"off\" />\n <button mat-button matSuffix mat-icon-button>\n <mat-icon>search</mat-icon>\n </button>\n <button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button (click)=\"search.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionType()\">+ Email\n Type</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"emailSubscriptionTypeList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-type-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Title </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.title }} </td>\n </ng-container>\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.code }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"frequency.title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.frequency?.title }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.description }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType\">\n <button type=\"button\" mat-icon-button\n (click)=\"deleteEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button\n (click)=\"editEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n </section>\n</div>",
|
|
4211
4405
|
styles: [".scroll-container{max-height:800px;overflow-y:auto}"]
|
|
4212
4406
|
},] }
|
|
4213
4407
|
];
|
|
4214
|
-
exports.ɵ
|
|
4408
|
+
exports.ɵbj.ctorParameters = function () { return [
|
|
4215
4409
|
{ type: dialog.MatDialog },
|
|
4216
4410
|
{ type: HttpService }
|
|
4217
4411
|
]; };
|
|
4218
|
-
exports.ɵ
|
|
4412
|
+
exports.ɵbj.propDecorators = {
|
|
4219
4413
|
sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }]
|
|
4220
4414
|
};
|
|
4221
|
-
exports.ɵ
|
|
4415
|
+
exports.ɵbj = __decorate([
|
|
4222
4416
|
untilDestroy.UntilDestroy()
|
|
4223
|
-
], exports.ɵ
|
|
4417
|
+
], exports.ɵbj);
|
|
4224
4418
|
|
|
4225
4419
|
var estlr = {
|
|
4226
4420
|
title: 'Email Subscription Type',
|
|
@@ -4232,7 +4426,7 @@
|
|
|
4232
4426
|
var routes$8 = [
|
|
4233
4427
|
{
|
|
4234
4428
|
path: '',
|
|
4235
|
-
component: exports.ɵ
|
|
4429
|
+
component: exports.ɵbj,
|
|
4236
4430
|
canActivate: [AuthenticationGuard],
|
|
4237
4431
|
data: estlr
|
|
4238
4432
|
},
|
|
@@ -4256,7 +4450,7 @@
|
|
|
4256
4450
|
}());
|
|
4257
4451
|
EmailSubscriptionTypeListModule.decorators = [
|
|
4258
4452
|
{ type: i0.NgModule, args: [{
|
|
4259
|
-
declarations: [exports.ɵ
|
|
4453
|
+
declarations: [exports.ɵbj],
|
|
4260
4454
|
imports: [
|
|
4261
4455
|
common.CommonModule,
|
|
4262
4456
|
MaterialModule,
|
|
@@ -4266,11 +4460,11 @@
|
|
|
4266
4460
|
EmailSubscriptionTypeFormModule,
|
|
4267
4461
|
EmailSubscriptionTypeListRoutingModule
|
|
4268
4462
|
],
|
|
4269
|
-
exports: [exports.ɵ
|
|
4463
|
+
exports: [exports.ɵbj]
|
|
4270
4464
|
},] }
|
|
4271
4465
|
];
|
|
4272
4466
|
|
|
4273
|
-
exports.ɵ
|
|
4467
|
+
exports.ɵbk = /** @class */ (function () {
|
|
4274
4468
|
function EmailSubscriptionForUserComponent(http) {
|
|
4275
4469
|
this.http = http;
|
|
4276
4470
|
this.subscriptions = [];
|
|
@@ -4325,19 +4519,19 @@
|
|
|
4325
4519
|
};
|
|
4326
4520
|
return EmailSubscriptionForUserComponent;
|
|
4327
4521
|
}());
|
|
4328
|
-
exports.ɵ
|
|
4522
|
+
exports.ɵbk.decorators = [
|
|
4329
4523
|
{ type: i0.Component, args: [{
|
|
4330
4524
|
selector: 'app-email-subscription-for-user',
|
|
4331
4525
|
template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>",
|
|
4332
4526
|
styles: [".scroll-container{max-height:800px;overflow-y:auto}"]
|
|
4333
4527
|
},] }
|
|
4334
4528
|
];
|
|
4335
|
-
exports.ɵ
|
|
4529
|
+
exports.ɵbk.ctorParameters = function () { return [
|
|
4336
4530
|
{ type: HttpService }
|
|
4337
4531
|
]; };
|
|
4338
|
-
exports.ɵ
|
|
4532
|
+
exports.ɵbk = __decorate([
|
|
4339
4533
|
untilDestroy.UntilDestroy()
|
|
4340
|
-
], exports.ɵ
|
|
4534
|
+
], exports.ɵbk);
|
|
4341
4535
|
|
|
4342
4536
|
var esfur = {
|
|
4343
4537
|
permissions: {
|
|
@@ -4347,7 +4541,7 @@
|
|
|
4347
4541
|
var routes$9 = [
|
|
4348
4542
|
{
|
|
4349
4543
|
path: '',
|
|
4350
|
-
component: exports.ɵ
|
|
4544
|
+
component: exports.ɵbk,
|
|
4351
4545
|
canActivate: [AuthenticationGuard],
|
|
4352
4546
|
data: esfur
|
|
4353
4547
|
},
|
|
@@ -4371,7 +4565,7 @@
|
|
|
4371
4565
|
}());
|
|
4372
4566
|
EmailSubscriptionForUserModule.decorators = [
|
|
4373
4567
|
{ type: i0.NgModule, args: [{
|
|
4374
|
-
declarations: [exports.ɵ
|
|
4568
|
+
declarations: [exports.ɵbk],
|
|
4375
4569
|
imports: [
|
|
4376
4570
|
common.CommonModule,
|
|
4377
4571
|
ngxInfiniteScroll.InfiniteScrollModule,
|
|
@@ -4379,69 +4573,7 @@
|
|
|
4379
4573
|
flexLayout.FlexLayoutModule,
|
|
4380
4574
|
EmailSubscriptionForUserRoutingModule
|
|
4381
4575
|
],
|
|
4382
|
-
exports: [exports.ɵ
|
|
4383
|
-
},] }
|
|
4384
|
-
];
|
|
4385
|
-
|
|
4386
|
-
var ReadMoreComponent = /** @class */ (function () {
|
|
4387
|
-
function ReadMoreComponent() {
|
|
4388
|
-
this.maxLength = 100;
|
|
4389
|
-
this.hideToggle = true;
|
|
4390
|
-
this.isCollapsed = true;
|
|
4391
|
-
}
|
|
4392
|
-
ReadMoreComponent.prototype.ngOnInit = function () {
|
|
4393
|
-
this.determineView();
|
|
4394
|
-
};
|
|
4395
|
-
ReadMoreComponent.prototype.toggleView = function () {
|
|
4396
|
-
this.isCollapsed = !this.isCollapsed;
|
|
4397
|
-
this.determineView();
|
|
4398
|
-
};
|
|
4399
|
-
ReadMoreComponent.prototype.determineView = function () {
|
|
4400
|
-
if (!this.text || this.text.length <= this.maxLength) {
|
|
4401
|
-
this.currentText = this.text;
|
|
4402
|
-
this.isCollapsed = false;
|
|
4403
|
-
this.hideToggle = true;
|
|
4404
|
-
return;
|
|
4405
|
-
}
|
|
4406
|
-
this.hideToggle = false;
|
|
4407
|
-
if (this.isCollapsed == true) {
|
|
4408
|
-
this.currentText = this.text.substring(0, this.maxLength) + "...";
|
|
4409
|
-
}
|
|
4410
|
-
else if (this.isCollapsed == false) {
|
|
4411
|
-
this.currentText = this.text;
|
|
4412
|
-
}
|
|
4413
|
-
};
|
|
4414
|
-
return ReadMoreComponent;
|
|
4415
|
-
}());
|
|
4416
|
-
ReadMoreComponent.decorators = [
|
|
4417
|
-
{ type: i0.Component, args: [{
|
|
4418
|
-
selector: "app-read-more",
|
|
4419
|
-
template: "<div [innerHTML]=\"currentText\"></div>\n<a href=\"javascript:;\" *ngIf=\"!hideToggle\" class=\"primary-color hoverable\" (click)=\"toggleView()\">Read\n {{ isCollapsed ? \"more\" : \"less\" }}</a>",
|
|
4420
|
-
styles: ["div.collapsed{height:250px;overflow:hidden}"]
|
|
4421
|
-
},] }
|
|
4422
|
-
];
|
|
4423
|
-
ReadMoreComponent.ctorParameters = function () { return []; };
|
|
4424
|
-
ReadMoreComponent.propDecorators = {
|
|
4425
|
-
text: [{ type: i0.Input }],
|
|
4426
|
-
maxLength: [{ type: i0.Input }]
|
|
4427
|
-
};
|
|
4428
|
-
|
|
4429
|
-
var ReadMoreModule = /** @class */ (function () {
|
|
4430
|
-
function ReadMoreModule() {
|
|
4431
|
-
}
|
|
4432
|
-
return ReadMoreModule;
|
|
4433
|
-
}());
|
|
4434
|
-
ReadMoreModule.decorators = [
|
|
4435
|
-
{ type: i0.NgModule, args: [{
|
|
4436
|
-
declarations: [ReadMoreComponent],
|
|
4437
|
-
imports: [
|
|
4438
|
-
common.CommonModule,
|
|
4439
|
-
MaterialModule,
|
|
4440
|
-
flexLayout.FlexLayoutModule
|
|
4441
|
-
],
|
|
4442
|
-
exports: [
|
|
4443
|
-
ReadMoreComponent
|
|
4444
|
-
]
|
|
4576
|
+
exports: [exports.ɵbk]
|
|
4445
4577
|
},] }
|
|
4446
4578
|
];
|
|
4447
4579
|
|
|
@@ -4633,7 +4765,7 @@
|
|
|
4633
4765
|
},] }
|
|
4634
4766
|
];
|
|
4635
4767
|
|
|
4636
|
-
exports.ɵ
|
|
4768
|
+
exports.ɵbl = /** @class */ (function () {
|
|
4637
4769
|
function TechlifyUpdatesListComponent(dialog, alertService, techlifyUpdateService, fb) {
|
|
4638
4770
|
this.dialog = dialog;
|
|
4639
4771
|
this.alertService = alertService;
|
|
@@ -4793,26 +4925,26 @@
|
|
|
4793
4925
|
};
|
|
4794
4926
|
return TechlifyUpdatesListComponent;
|
|
4795
4927
|
}());
|
|
4796
|
-
exports.ɵ
|
|
4928
|
+
exports.ɵbl.decorators = [
|
|
4797
4929
|
{ type: i0.Component, args: [{
|
|
4798
4930
|
selector: 'app-techlify-updates-list',
|
|
4799
4931
|
template: "<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n <button mat-raised-button (click)=\"modifyTechlifyUpdate()\" class=\"primary-bg text-white\">\n <mat-icon>\n add\n </mat-icon>\n Create\n </button>\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element;let i=dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"modifyTechlifyUpdate(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"deleteTechlifyUpdate(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n",
|
|
4800
4932
|
styles: [""]
|
|
4801
4933
|
},] }
|
|
4802
4934
|
];
|
|
4803
|
-
exports.ɵ
|
|
4935
|
+
exports.ɵbl.ctorParameters = function () { return [
|
|
4804
4936
|
{ type: dialog.MatDialog },
|
|
4805
4937
|
{ type: AlertService },
|
|
4806
4938
|
{ type: TechlifyUpdateService },
|
|
4807
4939
|
{ type: forms.FormBuilder }
|
|
4808
4940
|
]; };
|
|
4809
|
-
exports.ɵ
|
|
4941
|
+
exports.ɵbl = __decorate([
|
|
4810
4942
|
untilDestroy.UntilDestroy()
|
|
4811
|
-
], exports.ɵ
|
|
4943
|
+
], exports.ɵbl);
|
|
4812
4944
|
|
|
4813
4945
|
var routes$a = [
|
|
4814
4946
|
{ path: '', redirectTo: 'all', pathMatch: 'full' },
|
|
4815
|
-
{ path: 'all', component: exports.ɵ
|
|
4947
|
+
{ path: 'all', component: exports.ɵbl },
|
|
4816
4948
|
//fallback
|
|
4817
4949
|
{
|
|
4818
4950
|
path: '**',
|
|
@@ -4839,7 +4971,7 @@
|
|
|
4839
4971
|
}());
|
|
4840
4972
|
TechlifyUpdateModule.decorators = [
|
|
4841
4973
|
{ type: i0.NgModule, args: [{
|
|
4842
|
-
declarations: [exports.ɵ
|
|
4974
|
+
declarations: [exports.ɵbl],
|
|
4843
4975
|
imports: [
|
|
4844
4976
|
common.CommonModule,
|
|
4845
4977
|
forms.ReactiveFormsModule,
|
|
@@ -4886,7 +5018,7 @@
|
|
|
4886
5018
|
{ type: i1$2.Router }
|
|
4887
5019
|
]; };
|
|
4888
5020
|
|
|
4889
|
-
exports.ɵ
|
|
5021
|
+
exports.ɵbr = /** @class */ (function () {
|
|
4890
5022
|
function TechlifyUpdateHistoryComponent(dialog, techlifyUpdateService, fb, alertService) {
|
|
4891
5023
|
this.dialog = dialog;
|
|
4892
5024
|
this.techlifyUpdateService = techlifyUpdateService;
|
|
@@ -5023,26 +5155,26 @@
|
|
|
5023
5155
|
};
|
|
5024
5156
|
return TechlifyUpdateHistoryComponent;
|
|
5025
5157
|
}());
|
|
5026
|
-
exports.ɵ
|
|
5158
|
+
exports.ɵbr.decorators = [
|
|
5027
5159
|
{ type: i0.Component, args: [{
|
|
5028
5160
|
selector: 'app-techlify-update-history',
|
|
5029
5161
|
template: "<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element;let i=dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"openUpdateView(element)\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n",
|
|
5030
5162
|
styles: [""]
|
|
5031
5163
|
},] }
|
|
5032
5164
|
];
|
|
5033
|
-
exports.ɵ
|
|
5165
|
+
exports.ɵbr.ctorParameters = function () { return [
|
|
5034
5166
|
{ type: dialog.MatDialog },
|
|
5035
5167
|
{ type: TechlifyUpdateService },
|
|
5036
5168
|
{ type: forms.FormBuilder },
|
|
5037
5169
|
{ type: AlertService }
|
|
5038
5170
|
]; };
|
|
5039
|
-
exports.ɵ
|
|
5171
|
+
exports.ɵbr = __decorate([
|
|
5040
5172
|
untilDestroy.UntilDestroy()
|
|
5041
|
-
], exports.ɵ
|
|
5173
|
+
], exports.ɵbr);
|
|
5042
5174
|
|
|
5043
5175
|
var routes$b = [
|
|
5044
5176
|
{ path: '', redirectTo: 'update-history', pathMatch: 'full' },
|
|
5045
|
-
{ path: 'update-history', component: exports.ɵ
|
|
5177
|
+
{ path: 'update-history', component: exports.ɵbr },
|
|
5046
5178
|
//fallback
|
|
5047
5179
|
{
|
|
5048
5180
|
path: '**',
|
|
@@ -5079,7 +5211,7 @@
|
|
|
5079
5211
|
ReadMoreModule,
|
|
5080
5212
|
TechlifyUpdateHistoryRoutingModule
|
|
5081
5213
|
],
|
|
5082
|
-
declarations: [exports.ɵ
|
|
5214
|
+
declarations: [exports.ɵbr]
|
|
5083
5215
|
},] }
|
|
5084
5216
|
];
|
|
5085
5217
|
|
|
@@ -7029,6 +7161,390 @@
|
|
|
7029
7161
|
},] }
|
|
7030
7162
|
];
|
|
7031
7163
|
|
|
7164
|
+
var TechlifyFeatureService = /** @class */ (function () {
|
|
7165
|
+
function TechlifyFeatureService(dataManager) {
|
|
7166
|
+
this.dataManager = dataManager;
|
|
7167
|
+
}
|
|
7168
|
+
TechlifyFeatureService.prototype.getFeatures = function () {
|
|
7169
|
+
return this.dataManager.GET("api/features");
|
|
7170
|
+
};
|
|
7171
|
+
TechlifyFeatureService.prototype.disableFeature = function (id) {
|
|
7172
|
+
return this.dataManager.GET("api/feature/" + id + "/disable");
|
|
7173
|
+
};
|
|
7174
|
+
TechlifyFeatureService.prototype.enableFeature = function (id) {
|
|
7175
|
+
return this.dataManager.GET("api/feature/" + id + "/enable");
|
|
7176
|
+
};
|
|
7177
|
+
return TechlifyFeatureService;
|
|
7178
|
+
}());
|
|
7179
|
+
TechlifyFeatureService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TechlifyFeatureService_Factory() { return new TechlifyFeatureService(i0.ɵɵinject(DataManager)); }, token: TechlifyFeatureService, providedIn: "root" });
|
|
7180
|
+
TechlifyFeatureService.decorators = [
|
|
7181
|
+
{ type: i0.Injectable, args: [{
|
|
7182
|
+
providedIn: 'root'
|
|
7183
|
+
},] }
|
|
7184
|
+
];
|
|
7185
|
+
TechlifyFeatureService.ctorParameters = function () { return [
|
|
7186
|
+
{ type: DataManager }
|
|
7187
|
+
]; };
|
|
7188
|
+
|
|
7189
|
+
exports.TechlifyFeatureListingComponent = /** @class */ (function () {
|
|
7190
|
+
function TechlifyFeatureListingComponent(dataManager, errorHandler, fb, alertService, dialog, storage, featureService) {
|
|
7191
|
+
this.dataManager = dataManager;
|
|
7192
|
+
this.errorHandler = errorHandler;
|
|
7193
|
+
this.fb = fb;
|
|
7194
|
+
this.alertService = alertService;
|
|
7195
|
+
this.dialog = dialog;
|
|
7196
|
+
this.storage = storage;
|
|
7197
|
+
this.featureService = featureService;
|
|
7198
|
+
this.features = [];
|
|
7199
|
+
this.displayedColumns = [
|
|
7200
|
+
'index',
|
|
7201
|
+
'feature',
|
|
7202
|
+
'description',
|
|
7203
|
+
'actions',
|
|
7204
|
+
];
|
|
7205
|
+
this.dataSource = new table.MatTableDataSource();
|
|
7206
|
+
this.page = 1;
|
|
7207
|
+
this.perPage = 25;
|
|
7208
|
+
this.isWorking = false;
|
|
7209
|
+
this.filterFormGroup = this.fb.group({
|
|
7210
|
+
num_items: [""]
|
|
7211
|
+
});
|
|
7212
|
+
}
|
|
7213
|
+
TechlifyFeatureListingComponent.prototype.ngOnInit = function () {
|
|
7214
|
+
this.loadData();
|
|
7215
|
+
this.listenForChanges();
|
|
7216
|
+
};
|
|
7217
|
+
TechlifyFeatureListingComponent.prototype.listenForChanges = function () {
|
|
7218
|
+
var _this = this;
|
|
7219
|
+
this.filterFormGroup.valueChanges
|
|
7220
|
+
.pipe(operators.debounceTime(500), untilDestroy.untilDestroyed(this))
|
|
7221
|
+
.subscribe(function (changes) {
|
|
7222
|
+
_this.reload();
|
|
7223
|
+
});
|
|
7224
|
+
};
|
|
7225
|
+
TechlifyFeatureListingComponent.prototype.loadData = function () {
|
|
7226
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
7227
|
+
var result, filter, error_1;
|
|
7228
|
+
return __generator(this, function (_a) {
|
|
7229
|
+
switch (_a.label) {
|
|
7230
|
+
case 0:
|
|
7231
|
+
_a.trys.push([0, 2, 3, 4]);
|
|
7232
|
+
this.isWorking = true;
|
|
7233
|
+
filter = this.filterFormGroup.value;
|
|
7234
|
+
filter.page = this.page;
|
|
7235
|
+
filter.perPage = this.perPage;
|
|
7236
|
+
return [4 /*yield*/, this.dataManager.GET("api/features", filter)];
|
|
7237
|
+
case 1:
|
|
7238
|
+
result = _a.sent();
|
|
7239
|
+
this.features = this.features.concat(result.data);
|
|
7240
|
+
this.dataSource = new table.MatTableDataSource(this.features);
|
|
7241
|
+
if (!this.storage.getItem('features')) {
|
|
7242
|
+
this.setStorage(this.features);
|
|
7243
|
+
}
|
|
7244
|
+
this.isWorking = false;
|
|
7245
|
+
return [3 /*break*/, 4];
|
|
7246
|
+
case 2:
|
|
7247
|
+
error_1 = _a.sent();
|
|
7248
|
+
this.errorHandler.handleError(error_1);
|
|
7249
|
+
return [3 /*break*/, 4];
|
|
7250
|
+
case 3:
|
|
7251
|
+
this.isWorking = false;
|
|
7252
|
+
return [7 /*endfinally*/];
|
|
7253
|
+
case 4: return [2 /*return*/];
|
|
7254
|
+
}
|
|
7255
|
+
});
|
|
7256
|
+
});
|
|
7257
|
+
};
|
|
7258
|
+
TechlifyFeatureListingComponent.prototype.toggeleFeature = function (element, feature) {
|
|
7259
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
7260
|
+
var status, data, dialogRef;
|
|
7261
|
+
var _this = this;
|
|
7262
|
+
return __generator(this, function (_a) {
|
|
7263
|
+
status = element ? 'Off' : "On";
|
|
7264
|
+
dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
7265
|
+
width: "400px",
|
|
7266
|
+
data: {
|
|
7267
|
+
title: "Turn this feature " + status + "?",
|
|
7268
|
+
message: "Would you like to turn " + feature.title + " feature " + status
|
|
7269
|
+
}
|
|
7270
|
+
});
|
|
7271
|
+
dialogRef.afterClosed().subscribe(function (result) { return __awaiter(_this, void 0, void 0, function () {
|
|
7272
|
+
var _a, error_2;
|
|
7273
|
+
return __generator(this, function (_b) {
|
|
7274
|
+
switch (_b.label) {
|
|
7275
|
+
case 0:
|
|
7276
|
+
if (!result) return [3 /*break*/, 9];
|
|
7277
|
+
_b.label = 1;
|
|
7278
|
+
case 1:
|
|
7279
|
+
_b.trys.push([1, 6, 7, 8]);
|
|
7280
|
+
if (!element) return [3 /*break*/, 3];
|
|
7281
|
+
return [4 /*yield*/, this.featureService.disableFeature(feature.id)];
|
|
7282
|
+
case 2:
|
|
7283
|
+
_a = _b.sent();
|
|
7284
|
+
return [3 /*break*/, 5];
|
|
7285
|
+
case 3: return [4 /*yield*/, this.featureService.enableFeature(feature.id)];
|
|
7286
|
+
case 4:
|
|
7287
|
+
_a = _b.sent();
|
|
7288
|
+
_b.label = 5;
|
|
7289
|
+
case 5:
|
|
7290
|
+
data = _a;
|
|
7291
|
+
return [3 /*break*/, 8];
|
|
7292
|
+
case 6:
|
|
7293
|
+
error_2 = _b.sent();
|
|
7294
|
+
this.errorHandler.handleError(error_2);
|
|
7295
|
+
return [3 /*break*/, 8];
|
|
7296
|
+
case 7:
|
|
7297
|
+
this.alertService.addAlert("You have just turned " + status + " the feature " + feature.title, 'success');
|
|
7298
|
+
this.reload();
|
|
7299
|
+
this.storage.removeItem('features');
|
|
7300
|
+
this.setStorage(this.features);
|
|
7301
|
+
this.isWorking = false;
|
|
7302
|
+
return [7 /*endfinally*/];
|
|
7303
|
+
case 8: return [3 /*break*/, 10];
|
|
7304
|
+
case 9:
|
|
7305
|
+
this.reload();
|
|
7306
|
+
_b.label = 10;
|
|
7307
|
+
case 10: return [2 /*return*/];
|
|
7308
|
+
}
|
|
7309
|
+
});
|
|
7310
|
+
}); });
|
|
7311
|
+
return [2 /*return*/];
|
|
7312
|
+
});
|
|
7313
|
+
});
|
|
7314
|
+
};
|
|
7315
|
+
TechlifyFeatureListingComponent.prototype.setStorage = function (features) {
|
|
7316
|
+
var e_1, _a;
|
|
7317
|
+
var localFeatures = [];
|
|
7318
|
+
try {
|
|
7319
|
+
for (var features_1 = __values(features), features_1_1 = features_1.next(); !features_1_1.done; features_1_1 = features_1.next()) {
|
|
7320
|
+
var feature = features_1_1.value;
|
|
7321
|
+
if (!feature.client_feature) {
|
|
7322
|
+
if (feature.is_enabled_default) {
|
|
7323
|
+
localFeatures.push(feature.code);
|
|
7324
|
+
}
|
|
7325
|
+
}
|
|
7326
|
+
else {
|
|
7327
|
+
if (feature.client_feature.is_enabled) {
|
|
7328
|
+
localFeatures.push(feature.code);
|
|
7329
|
+
}
|
|
7330
|
+
}
|
|
7331
|
+
}
|
|
7332
|
+
}
|
|
7333
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
7334
|
+
finally {
|
|
7335
|
+
try {
|
|
7336
|
+
if (features_1_1 && !features_1_1.done && (_a = features_1.return)) _a.call(features_1);
|
|
7337
|
+
}
|
|
7338
|
+
finally { if (e_1) throw e_1.error; }
|
|
7339
|
+
}
|
|
7340
|
+
this.storage.setItem("features", localFeatures);
|
|
7341
|
+
};
|
|
7342
|
+
TechlifyFeatureListingComponent.prototype.reload = function () {
|
|
7343
|
+
this.features = [];
|
|
7344
|
+
this.page = 1;
|
|
7345
|
+
if (!this.isWorking) {
|
|
7346
|
+
this.loadData();
|
|
7347
|
+
}
|
|
7348
|
+
};
|
|
7349
|
+
TechlifyFeatureListingComponent.prototype.onScroll = function () {
|
|
7350
|
+
if (!this.isWorking && this.page < this.lastPage) {
|
|
7351
|
+
this.page += 1;
|
|
7352
|
+
this.loadData();
|
|
7353
|
+
}
|
|
7354
|
+
};
|
|
7355
|
+
TechlifyFeatureListingComponent.prototype.sortColumn = function (event) {
|
|
7356
|
+
var direction = event.direction.toString().toUpperCase();
|
|
7357
|
+
this.assignFilter(event.active, direction);
|
|
7358
|
+
this.reload();
|
|
7359
|
+
};
|
|
7360
|
+
TechlifyFeatureListingComponent.prototype.assignFilter = function (column, direction) {
|
|
7361
|
+
switch (column) {
|
|
7362
|
+
case 'name': {
|
|
7363
|
+
return this.filterFormGroup
|
|
7364
|
+
.get('sort_by')
|
|
7365
|
+
.setValue('first_name|' + direction);
|
|
7366
|
+
}
|
|
7367
|
+
case 'added_on': {
|
|
7368
|
+
return this.filterFormGroup
|
|
7369
|
+
.get('sort_by')
|
|
7370
|
+
.setValue('created_at|' + direction);
|
|
7371
|
+
}
|
|
7372
|
+
}
|
|
7373
|
+
};
|
|
7374
|
+
return TechlifyFeatureListingComponent;
|
|
7375
|
+
}());
|
|
7376
|
+
exports.TechlifyFeatureListingComponent.decorators = [
|
|
7377
|
+
{ type: i0.Component, args: [{
|
|
7378
|
+
selector: 'app-techlify-listing-feature',
|
|
7379
|
+
template: "<div fxLayout=\"column\" fxLayoutGap=\"3rem\" class=\"p-3\">\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"primary-color mt-3\">\n <h3>Features Configuration</h3>\n <mat-hint>\n <i> Here you can specify which optional features you'd like to have available to your team </i>\n </mat-hint>\n </div>\n\n\n <div>\n <mat-card>\n <mat-card-content fxlayout=\"column\" style=\"overflow: auto; height: 700px\" class=\"classifications-card\">\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [fromRoot]=\"true\" [infiniteScrollContainer]=\"'.classifications-card'\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\">\n {{ i + 1 }}\n </td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"feature\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\n Feature\n </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.title }}</td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\n Descriptions\n </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.description }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear>\n Actions\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <div *ngIf=\"!element?.client_feature\">\n <app-on-off-switch [value]=\"element?.is_enabled_default\"\n (click)=\"toggeleFeature(element?.is_enabled_default, element)\"></app-on-off-switch>\n </div>\n <div *ngIf=\"element?.client_feature\">\n <app-on-off-switch [value]=\"element?.client_feature?.is_enabled\"\n (click)=\"toggeleFeature(element?.client_feature?.is_enabled, element)\"></app-on-off-switch>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n </div>\n</div>\n",
|
|
7380
|
+
styles: [""]
|
|
7381
|
+
},] }
|
|
7382
|
+
];
|
|
7383
|
+
exports.TechlifyFeatureListingComponent.ctorParameters = function () { return [
|
|
7384
|
+
{ type: DataManager },
|
|
7385
|
+
{ type: ErrorHandlerService },
|
|
7386
|
+
{ type: forms.FormBuilder },
|
|
7387
|
+
{ type: AlertService },
|
|
7388
|
+
{ type: dialog.MatDialog },
|
|
7389
|
+
{ type: StorageService },
|
|
7390
|
+
{ type: TechlifyFeatureService }
|
|
7391
|
+
]; };
|
|
7392
|
+
exports.TechlifyFeatureListingComponent = __decorate([
|
|
7393
|
+
untilDestroy.UntilDestroy()
|
|
7394
|
+
], exports.TechlifyFeatureListingComponent);
|
|
7395
|
+
|
|
7396
|
+
var routes$n = [
|
|
7397
|
+
{
|
|
7398
|
+
path: '',
|
|
7399
|
+
component: exports.TechlifyFeatureListingComponent,
|
|
7400
|
+
canActivate: [AuthenticationGuard]
|
|
7401
|
+
},
|
|
7402
|
+
];
|
|
7403
|
+
var TechlifyFeatureRoutes = i1$2.RouterModule.forChild(routes$n);
|
|
7404
|
+
|
|
7405
|
+
var OnOffSwitchComponent = /** @class */ (function () {
|
|
7406
|
+
function OnOffSwitchComponent(fb) {
|
|
7407
|
+
this.fb = fb;
|
|
7408
|
+
this.slideToggle = this.fb.group({
|
|
7409
|
+
toggle: [""]
|
|
7410
|
+
});
|
|
7411
|
+
}
|
|
7412
|
+
OnOffSwitchComponent.prototype.ngOnInit = function () {
|
|
7413
|
+
this.slideToggle.get('toggle').setValue(this.value);
|
|
7414
|
+
};
|
|
7415
|
+
return OnOffSwitchComponent;
|
|
7416
|
+
}());
|
|
7417
|
+
OnOffSwitchComponent.decorators = [
|
|
7418
|
+
{ type: i0.Component, args: [{
|
|
7419
|
+
selector: 'app-on-off-switch',
|
|
7420
|
+
template: "<form [formGroup]=\"slideToggle\">\n <mat-slide-toggle formControlName=\"toggle\">On / Off\n </mat-slide-toggle>\n</form>\n",
|
|
7421
|
+
styles: [""]
|
|
7422
|
+
},] }
|
|
7423
|
+
];
|
|
7424
|
+
OnOffSwitchComponent.ctorParameters = function () { return [
|
|
7425
|
+
{ type: forms.FormBuilder }
|
|
7426
|
+
]; };
|
|
7427
|
+
OnOffSwitchComponent.propDecorators = {
|
|
7428
|
+
value: [{ type: i0.Input }]
|
|
7429
|
+
};
|
|
7430
|
+
|
|
7431
|
+
var TechlifyFeatureEnabledDirective = /** @class */ (function () {
|
|
7432
|
+
function TechlifyFeatureEnabledDirective(el, featureService, errorHandler, storage) {
|
|
7433
|
+
this.el = el;
|
|
7434
|
+
this.featureService = featureService;
|
|
7435
|
+
this.errorHandler = errorHandler;
|
|
7436
|
+
this.storage = storage;
|
|
7437
|
+
this.localFeatures = [];
|
|
7438
|
+
}
|
|
7439
|
+
TechlifyFeatureEnabledDirective.prototype.ngOnInit = function () {
|
|
7440
|
+
if (!this.storage.getItem('features')) {
|
|
7441
|
+
this.getFeatures();
|
|
7442
|
+
}
|
|
7443
|
+
else {
|
|
7444
|
+
this.checkForFeatureEnabled();
|
|
7445
|
+
}
|
|
7446
|
+
};
|
|
7447
|
+
TechlifyFeatureEnabledDirective.prototype.getFeatures = function () {
|
|
7448
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
7449
|
+
var features, _a, _b, feature, error_1;
|
|
7450
|
+
var e_1, _c;
|
|
7451
|
+
return __generator(this, function (_d) {
|
|
7452
|
+
switch (_d.label) {
|
|
7453
|
+
case 0:
|
|
7454
|
+
_d.trys.push([0, 2, 3, 4]);
|
|
7455
|
+
return [4 /*yield*/, this.featureService.getFeatures()];
|
|
7456
|
+
case 1:
|
|
7457
|
+
features = _d.sent();
|
|
7458
|
+
try {
|
|
7459
|
+
for (_a = __values(features.data), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
7460
|
+
feature = _b.value;
|
|
7461
|
+
if (!feature.client_feature) {
|
|
7462
|
+
if (feature.is_enabled_default) {
|
|
7463
|
+
this.localFeatures.push(feature.code);
|
|
7464
|
+
}
|
|
7465
|
+
}
|
|
7466
|
+
else {
|
|
7467
|
+
if (feature.client_feature.is_enabled) {
|
|
7468
|
+
this.localFeatures.push(feature.code);
|
|
7469
|
+
}
|
|
7470
|
+
}
|
|
7471
|
+
}
|
|
7472
|
+
}
|
|
7473
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
7474
|
+
finally {
|
|
7475
|
+
try {
|
|
7476
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
7477
|
+
}
|
|
7478
|
+
finally { if (e_1) throw e_1.error; }
|
|
7479
|
+
}
|
|
7480
|
+
this.storage.setItem("features", this.localFeatures);
|
|
7481
|
+
return [3 /*break*/, 4];
|
|
7482
|
+
case 2:
|
|
7483
|
+
error_1 = _d.sent();
|
|
7484
|
+
this.errorHandler.handleError(error_1);
|
|
7485
|
+
return [3 /*break*/, 4];
|
|
7486
|
+
case 3:
|
|
7487
|
+
this.checkForFeatureEnabled();
|
|
7488
|
+
return [7 /*endfinally*/];
|
|
7489
|
+
case 4: return [2 /*return*/];
|
|
7490
|
+
}
|
|
7491
|
+
});
|
|
7492
|
+
});
|
|
7493
|
+
};
|
|
7494
|
+
TechlifyFeatureEnabledDirective.prototype.checkForFeatureEnabled = function () {
|
|
7495
|
+
try {
|
|
7496
|
+
var features = this.storage.getItem('features');
|
|
7497
|
+
var features_split = features.split(',');
|
|
7498
|
+
if (features_split.includes(this.enabledFeature)) {
|
|
7499
|
+
this.el.nativeElement.style.display = "show";
|
|
7500
|
+
}
|
|
7501
|
+
else {
|
|
7502
|
+
this.el.nativeElement.remove();
|
|
7503
|
+
}
|
|
7504
|
+
}
|
|
7505
|
+
catch (error) {
|
|
7506
|
+
this.errorHandler.handleError(error);
|
|
7507
|
+
}
|
|
7508
|
+
};
|
|
7509
|
+
return TechlifyFeatureEnabledDirective;
|
|
7510
|
+
}());
|
|
7511
|
+
TechlifyFeatureEnabledDirective.decorators = [
|
|
7512
|
+
{ type: i0.Directive, args: [{
|
|
7513
|
+
selector: '[techlifyFeatureEnabled]'
|
|
7514
|
+
},] }
|
|
7515
|
+
];
|
|
7516
|
+
TechlifyFeatureEnabledDirective.ctorParameters = function () { return [
|
|
7517
|
+
{ type: i0.ElementRef },
|
|
7518
|
+
{ type: TechlifyFeatureService },
|
|
7519
|
+
{ type: ErrorHandlerService },
|
|
7520
|
+
{ type: StorageService }
|
|
7521
|
+
]; };
|
|
7522
|
+
TechlifyFeatureEnabledDirective.propDecorators = {
|
|
7523
|
+
enabledFeature: [{ type: i0.Input, args: ['techlifyFeatureEnabled',] }]
|
|
7524
|
+
};
|
|
7525
|
+
|
|
7526
|
+
var TechlifyFeatureModule = /** @class */ (function () {
|
|
7527
|
+
function TechlifyFeatureModule() {
|
|
7528
|
+
}
|
|
7529
|
+
return TechlifyFeatureModule;
|
|
7530
|
+
}());
|
|
7531
|
+
TechlifyFeatureModule.decorators = [
|
|
7532
|
+
{ type: i0.NgModule, args: [{
|
|
7533
|
+
imports: [
|
|
7534
|
+
common.CommonModule,
|
|
7535
|
+
MaterialModule,
|
|
7536
|
+
flexLayout.FlexLayoutModule,
|
|
7537
|
+
TechlifyFeatureRoutes,
|
|
7538
|
+
slideToggle.MatSlideToggleModule,
|
|
7539
|
+
forms.FormsModule,
|
|
7540
|
+
forms.ReactiveFormsModule,
|
|
7541
|
+
ngxInfiniteScroll.InfiniteScrollModule
|
|
7542
|
+
],
|
|
7543
|
+
declarations: [exports.TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],
|
|
7544
|
+
exports: [exports.TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]
|
|
7545
|
+
},] }
|
|
7546
|
+
];
|
|
7547
|
+
|
|
7032
7548
|
/*
|
|
7033
7549
|
* Public API Surface of ngx-techlify-core
|
|
7034
7550
|
*/
|
|
@@ -7061,6 +7577,7 @@
|
|
|
7061
7577
|
exports.AuthenticationGuard = AuthenticationGuard;
|
|
7062
7578
|
exports.AuthenticationService = AuthenticationService;
|
|
7063
7579
|
exports.CacheInterceptor = CacheInterceptor;
|
|
7580
|
+
exports.CommentFormComponent = CommentFormComponent;
|
|
7064
7581
|
exports.ConfigService = ConfigService;
|
|
7065
7582
|
exports.CoreModule = CoreModule;
|
|
7066
7583
|
exports.CredentialsService = CredentialsService;
|
|
@@ -7072,24 +7589,24 @@
|
|
|
7072
7589
|
exports.DateValidator = DateValidator;
|
|
7073
7590
|
exports.DocumentViewerComponent = DocumentViewerComponent;
|
|
7074
7591
|
exports.DocumentViewerModule = DocumentViewerModule;
|
|
7075
|
-
exports.EmailSubscriptionForUserComponent = exports.ɵ
|
|
7592
|
+
exports.EmailSubscriptionForUserComponent = exports.ɵbk;
|
|
7076
7593
|
exports.EmailSubscriptionForUserModule = EmailSubscriptionForUserModule;
|
|
7077
7594
|
exports.EmailSubscriptionForUserRoutingModule = EmailSubscriptionForUserRoutingModule;
|
|
7078
7595
|
exports.EmailSubscriptionModule = EmailSubscriptionModule;
|
|
7079
7596
|
exports.EmailSubscriptionRoutingModule = EmailSubscriptionRoutingModule;
|
|
7080
|
-
exports.EmailSubscriptionTypeFormComponent = exports.ɵ
|
|
7597
|
+
exports.EmailSubscriptionTypeFormComponent = exports.ɵbi;
|
|
7081
7598
|
exports.EmailSubscriptionTypeFormModule = EmailSubscriptionTypeFormModule;
|
|
7082
7599
|
exports.EmailSubscriptionTypeFormRoutingModule = EmailSubscriptionTypeFormRoutingModule;
|
|
7083
|
-
exports.EmailSubscriptionTypeListComponent = exports.ɵ
|
|
7600
|
+
exports.EmailSubscriptionTypeListComponent = exports.ɵbj;
|
|
7084
7601
|
exports.EmailSubscriptionTypeListModule = EmailSubscriptionTypeListModule;
|
|
7085
7602
|
exports.EmailSubscriptionTypeListRoutingModule = EmailSubscriptionTypeListRoutingModule;
|
|
7086
7603
|
exports.EmailSubscriptionTypeModule = EmailSubscriptionTypeModule;
|
|
7087
7604
|
exports.EmailSubscriptionTypeRoutingModule = EmailSubscriptionTypeRoutingModule;
|
|
7088
|
-
exports.EmailSubscriptionUserFormComponent = exports.ɵ
|
|
7605
|
+
exports.EmailSubscriptionUserFormComponent = exports.ɵbe;
|
|
7089
7606
|
exports.EmailSubscriptionUserFormModule = EmailSubscriptionUserFormModule;
|
|
7090
7607
|
exports.EmailSubscriptionUserFormRoutingModule = EmailSubscriptionUserFormRoutingModule;
|
|
7091
|
-
exports.EmailSubscriptionUserListComponent = exports.ɵ
|
|
7092
|
-
exports.EmailSubscriptionUserListFilterComponent = exports.ɵ
|
|
7608
|
+
exports.EmailSubscriptionUserListComponent = exports.ɵbf;
|
|
7609
|
+
exports.EmailSubscriptionUserListFilterComponent = exports.ɵbh;
|
|
7093
7610
|
exports.EmailSubscriptionUserListFilterModule = EmailSubscriptionUserListFilterModule;
|
|
7094
7611
|
exports.EmailSubscriptionUserListFilterRoutingModule = EmailSubscriptionUserListFilterRoutingModule;
|
|
7095
7612
|
exports.EmailSubscriptionUserListModule = EmailSubscriptionUserListModule;
|
|
@@ -7133,20 +7650,25 @@
|
|
|
7133
7650
|
exports.NumItemsSelector = NumItemsSelector;
|
|
7134
7651
|
exports.NumberSelector = NumberSelector;
|
|
7135
7652
|
exports.PageEvent = PageEvent;
|
|
7653
|
+
exports.ReadMoreComponent = ReadMoreComponent;
|
|
7654
|
+
exports.ReadMoreModule = ReadMoreModule;
|
|
7136
7655
|
exports.RouteReusableStrategy = RouteReusableStrategy;
|
|
7137
|
-
exports.SearchableSelectorComponent = exports.ɵ
|
|
7656
|
+
exports.SearchableSelectorComponent = exports.ɵx;
|
|
7138
7657
|
exports.SearchableSelectorModule = SearchableSelectorModule;
|
|
7139
7658
|
exports.SnackModule = SnackModule;
|
|
7140
7659
|
exports.StorageService = StorageService;
|
|
7141
7660
|
exports.SuccessSnackComponent = SuccessSnackComponent;
|
|
7142
7661
|
exports.TechlifyConfig = TechlifyConfig;
|
|
7662
|
+
exports.TechlifyFeatureEnabledDirective = TechlifyFeatureEnabledDirective;
|
|
7663
|
+
exports.TechlifyFeatureModule = TechlifyFeatureModule;
|
|
7664
|
+
exports.TechlifyFeatureRoutes = TechlifyFeatureRoutes;
|
|
7143
7665
|
exports.TechlifyTaggerTagFormConfigModel = TechlifyTaggerTagFormConfigModel;
|
|
7144
7666
|
exports.TechlifyTaggerTagFormFieldModule = TechlifyTaggerTagFormFieldModule;
|
|
7145
7667
|
exports.TechlifyTaggerTagSelectorModule = TechlifyTaggerTagSelectorModule;
|
|
7146
7668
|
exports.TechlifyUpdateHistoryModule = TechlifyUpdateHistoryModule;
|
|
7147
7669
|
exports.TechlifyUpdateModule = TechlifyUpdateModule;
|
|
7148
7670
|
exports.Timeline = Timeline;
|
|
7149
|
-
exports.TimelineFilterComponent = exports.ɵ
|
|
7671
|
+
exports.TimelineFilterComponent = exports.ɵbb;
|
|
7150
7672
|
exports.TimelineFilterModule = TimelineFilterModule;
|
|
7151
7673
|
exports.TokenInterceptor = TokenInterceptor;
|
|
7152
7674
|
exports.UpdateNotifierComponent = UpdateNotifierComponent;
|
|
@@ -7159,22 +7681,27 @@
|
|
|
7159
7681
|
exports.esulr = esulr;
|
|
7160
7682
|
exports.ɵa = SnackModule;
|
|
7161
7683
|
exports.ɵb = SuccessSnackComponent;
|
|
7162
|
-
exports.ɵ
|
|
7163
|
-
exports.ɵ
|
|
7164
|
-
exports.ɵ
|
|
7165
|
-
exports.ɵ
|
|
7166
|
-
exports.ɵ
|
|
7167
|
-
exports.ɵ
|
|
7168
|
-
exports.ɵ
|
|
7169
|
-
exports.ɵ
|
|
7170
|
-
exports.ɵ
|
|
7171
|
-
exports.ɵ
|
|
7172
|
-
exports.ɵ
|
|
7173
|
-
exports.ɵ
|
|
7174
|
-
exports.ɵ
|
|
7175
|
-
exports.ɵbv = UpdateViewComponent;
|
|
7684
|
+
exports.ɵba = NumberSelector;
|
|
7685
|
+
exports.ɵbc = TimelineFilterRoutingModule;
|
|
7686
|
+
exports.ɵbd = LoaderComponent;
|
|
7687
|
+
exports.ɵbg = AuthenticationGuard;
|
|
7688
|
+
exports.ɵbm = TechlifyUpdateService;
|
|
7689
|
+
exports.ɵbn = TechlifyUpdateRoutingModule;
|
|
7690
|
+
exports.ɵbo = TechlifyUpdateFormModule;
|
|
7691
|
+
exports.ɵbp = TechlifyUpdateFormComponent;
|
|
7692
|
+
exports.ɵbq = TechlifyUpdateHistoryRoutingModule;
|
|
7693
|
+
exports.ɵbs = UpdateNotifierSnackComponent;
|
|
7694
|
+
exports.ɵbt = UpdateViewModule;
|
|
7695
|
+
exports.ɵbu = UpdateViewComponent;
|
|
7696
|
+
exports.ɵbv = DataManager;
|
|
7176
7697
|
exports.ɵbw = DataManager;
|
|
7698
|
+
exports.ɵbx = ErrorHandlerService;
|
|
7699
|
+
exports.ɵby = AlertService;
|
|
7700
|
+
exports.ɵbz = StorageService;
|
|
7177
7701
|
exports.ɵc = ErrorSnackComponent;
|
|
7702
|
+
exports.ɵca = TechlifyFeatureService;
|
|
7703
|
+
exports.ɵcb = AuthenticationGuard;
|
|
7704
|
+
exports.ɵcc = OnOffSwitchComponent;
|
|
7178
7705
|
exports.ɵd = HTTP_DYNAMIC_INTERCEPTORS;
|
|
7179
7706
|
exports.ɵe = HttpService;
|
|
7180
7707
|
exports.ɵf = RouteReusableStrategy;
|
|
@@ -7189,11 +7716,12 @@
|
|
|
7189
7716
|
exports.ɵq = NoteListComponent;
|
|
7190
7717
|
exports.ɵr = NoteService;
|
|
7191
7718
|
exports.ɵs = NoteFormComponent;
|
|
7192
|
-
exports.ɵ
|
|
7193
|
-
exports.ɵ
|
|
7194
|
-
exports.ɵ
|
|
7195
|
-
exports.ɵ
|
|
7196
|
-
exports.ɵ
|
|
7719
|
+
exports.ɵt = CommentFormComponent;
|
|
7720
|
+
exports.ɵu = CredentialsService;
|
|
7721
|
+
exports.ɵv = ConfigService;
|
|
7722
|
+
exports.ɵw = TechlifyConfig;
|
|
7723
|
+
exports.ɵy = MatSelectInfiniteScrollDirective;
|
|
7724
|
+
exports.ɵz = NumItemsSelector;
|
|
7197
7725
|
|
|
7198
7726
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
7199
7727
|
|