ngx-firebase-cms
Version:
Angular Content Management System using Google Firebase (Authentication, Storage & Firestore)
183 lines • 13.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { UnsubscriptionService } from '../../service/unsubscription.service';
import { FormBuilder, FormControl } from '@angular/forms';
import { AuthService } from '../../service/auth.service';
import { AngularFirestore } from '@angular/fire/firestore';
import { HelperService } from '../../service/helper.service';
import { mergeMap, map } from 'rxjs/operators';
export class PostsComponent {
/**
* @param {?} fb
* @param {?} unsubscription
* @param {?} auth
* @param {?} afs
* @param {?} helper
*/
constructor(fb, unsubscription, auth, afs, helper) {
this.fb = fb;
this.unsubscription = unsubscription;
this.auth = auth;
this.afs = afs;
this.helper = helper;
this.header = [
{
label: "Title",
key: "title",
canFilter: true,
routerLink: "../posts/${$key}"
},
{
label: "Author",
key: "author",
pipe: "user",
pipeParameter: {
"keys": ["displayName"],
"separator": ","
},
canSort: false
},
{
label: "Last Update",
key: "updatedTime",
pipe: "date",
pipeParameter: "medium",
canSort: true,
}
];
this.showNewModal = false;
this.titlebar = {
title: "Pages",
description: "Page are building block of website",
breadcrumbs: [
{
title: "Pages",
icon: 'form'
}
]
};
this.form = this.fb.group({
'htmlContent': new FormControl('', [])
});
this.editorConfig = {
editable: true,
spellcheck: true,
height: '25rem',
minHeight: '5rem',
placeholder: 'Enter text here...',
translate: 'no',
uploadUrl: 'v1/images',
customClasses: [
{
name: "quote",
class: "quote",
},
{
name: 'redText',
class: 'redText'
},
{
name: "titleText",
class: "titleText",
tag: "h1",
},
]
};
}
/**
* @return {?}
*/
submit() {
console.log(this.form.value);
}
/**
* @return {?}
*/
ngOnInit() {
this.items = this.auth.user$.pipe(mergeMap((/**
* @param {?} user
* @return {?}
*/
user => this.afs.collection(`posts`, (/**
* @param {?} ref
* @return {?}
*/
ref => this.helper.roleFilter(ref, user['roles'], user['uid'], "post"))).snapshotChanges())), map((/**
* @param {?} actions
* @return {?}
*/
actions => actions.map((/**
* @param {?} action
* @return {?}
*/
action => (Object.assign({ $key: action.payload.doc.id }, action.payload.doc.data())))))));
}
/**
* @return {?}
*/
ngOnDestroy() { }
/**
* @return {?}
*/
openForm() {
this.showNewModal = !this.showNewModal;
}
}
PostsComponent.decorators = [
{ type: Component, args: [{
selector: 'aq-posts',
template: "<aq-title-bar [data]=\"titlebar\"></aq-title-bar>\n<aq-table [data]=\"(items | async) || []\" [headers]=\"header\"></aq-table>\n\n<div class=\"container\">\n <nz-button-group>\n <button nz-button (click)=\"openForm()\"><i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i> New</button>\n </nz-button-group>\n</div>\n\n\n<nz-drawer nzWidth=\"100%\" [nzVisible]=\"showNewModal\" nzTitle=\"New\" (nzOnClose)=\"showNewModal = !showNewModal\">\n\n<form nz-form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <aq-editor formControlName=\"htmlContent\" [config]=\"editorConfig\"></aq-editor>\n</form>\n\n\n{{ form.value.htmlContent }}\n\n</nz-drawer>\n\n",
styles: [""]
}] }
];
/** @nocollapse */
PostsComponent.ctorParameters = () => [
{ type: FormBuilder },
{ type: UnsubscriptionService },
{ type: AuthService },
{ type: AngularFirestore },
{ type: HelperService }
];
if (false) {
/** @type {?} */
PostsComponent.prototype.items;
/** @type {?} */
PostsComponent.prototype.header;
/** @type {?} */
PostsComponent.prototype.showNewModal;
/** @type {?} */
PostsComponent.prototype.titlebar;
/** @type {?} */
PostsComponent.prototype.form;
/** @type {?} */
PostsComponent.prototype.editorConfig;
/**
* @type {?}
* @private
*/
PostsComponent.prototype.fb;
/**
* @type {?}
* @private
*/
PostsComponent.prototype.unsubscription;
/**
* @type {?}
* @private
*/
PostsComponent.prototype.auth;
/**
* @type {?}
* @private
*/
PostsComponent.prototype.afs;
/**
* @type {?}
* @private
*/
PostsComponent.prototype.helper;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZpcmViYXNlLWNtcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvcG9zdHMvcG9zdHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUU3RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU8vQyxNQUFNLE9BQU8sY0FBYzs7Ozs7Ozs7SUF5RXpCLFlBQ1UsRUFBZSxFQUNmLGNBQXFDLEVBQ3JDLElBQWlCLEVBQ2pCLEdBQXFCLEVBQ3JCLE1BQXFCO1FBSnJCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBNUUvQixXQUFNLEdBQXVCO1lBQzNCO2dCQUNFLEtBQUssRUFBRSxPQUFPO2dCQUNkLEdBQUcsRUFBRSxPQUFPO2dCQUNaLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFVBQVUsRUFBRSxrQkFBa0I7YUFDL0I7WUFDRDtnQkFDRSxLQUFLLEVBQUUsUUFBUTtnQkFDZixHQUFHLEVBQUUsUUFBUTtnQkFDYixJQUFJLEVBQUUsTUFBTTtnQkFDWixhQUFh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NEJBQXVCOzs7OztJQUN2Qix3Q0FBNkM7Ozs7O0lBQzdDLDhCQUF5Qjs7Ozs7SUFDekIsNkJBQTZCOzs7OztJQUM3QixnQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL2JyZWFkY3J1bWInO1xuaW1wb3J0IHsgVW5zdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS91bnN1YnNjcmlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRpdGxlYmFyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL3RpdGxlYmFyJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvZWRpdG9yJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBvc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvcG9zdCc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZS90YWJsZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBtZXJnZU1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcS1wb3N0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3N0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bvc3RzLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQb3N0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgaXRlbXM6IE9ic2VydmFibGU8UG9zdFtdIHwgeyAka2V5OiBzdHJpbmcgfVtdPlxuICBoZWFkZXI6IEFycmF5PFRhYmxlSGVhZGVyPiA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogXCJUaXRsZVwiLFxuICAgICAga2V5OiBcInRpdGxlXCIsXG4gICAgICBjYW5GaWx0ZXI6IHRydWUsXG4gICAgICByb3V0ZXJMaW5rOiBcIi4uL3Bvc3RzLyR7JGtleX1cIlxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IFwiQXV0aG9yXCIsXG4gICAgICBrZXk6IFwiYXV0aG9yXCIsXG4gICAgICBwaXBlOiBcInVzZXJcIixcbiAgICAgIHBpcGVQYXJhbWV0ZXI6IHtcbiAgICAgICAgXCJrZXlzXCI6IFtcImRpc3BsYXlOYW1lXCJdLFxuICAgICAgICBcInNlcGFyYXRvclwiOiBcIixcIlxuICAgICAgfSxcbiAgICAgIGNhblNvcnQ6IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogXCJMYXN0IFVwZGF0ZVwiLFxuICAgICAga2V5OiBcInVwZGF0ZWRUaW1lXCIsXG4gICAgICBwaXBlOiBcImRhdGVcIixcbiAgICAgIHBpcGVQYXJhbWV0ZXI6IFwibWVkaXVtXCIsXG4gICAgICBjYW5Tb3J0OiB0cnVlLFxuICAgIH1cbiAgXVxuXG4gIHNob3dOZXdNb2RhbCA9IGZhbHNlXG4gIHRpdGxlYmFyOiBUaXRsZWJhciA9IHtcbiAgICB0aXRsZTogXCJQYWdlc1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBhZ2UgYXJlIGJ1aWxkaW5nIGJsb2NrIG9mIHdlYnNpdGVcIixcbiAgICBicmVhZGNydW1iczogW1xuICAgICAge1xuICAgICAgICB0aXRsZTogXCJQYWdlc1wiLFxuICAgICAgICBpY29uOiAnZm9ybSdcbiAgICAgIH1cbiAgICBdXG4gIH1cblxuICBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgJ2h0bWxDb250ZW50JzogbmV3IEZvcm1Db250cm9sKCcnLCBbXSlcbiAgfSlcblxuICBzdWJtaXQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtLnZhbHVlKVxuICB9XG5cbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnID0ge1xuICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgIHNwZWxsY2hlY2s6IHRydWUsXG4gICAgaGVpZ2h0OiAnMjVyZW0nLFxuICAgIG1pbkhlaWdodDogJzVyZW0nLFxuICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgdGV4dCBoZXJlLi4uJyxcbiAgICB0cmFuc2xhdGU6ICdubycsXG4gICAgdXBsb2FkVXJsOiAndjEvaW1hZ2VzJyxcbiAgICBjdXN0b21DbGFzc2VzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwicXVvdGVcIixcbiAgICAgICAgY2xhc3M6IFwicXVvdGVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZWRUZXh0JyxcbiAgICAgICAgY2xhc3M6ICdyZWRUZXh0J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJ0aXRsZVRleHRcIixcbiAgICAgICAgY2xhc3M6IFwidGl0bGVUZXh0XCIsXG4gICAgICAgIHRhZzogXCJoMVwiLFxuICAgICAgfSxcbiAgICBdXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmlwdGlvbjogVW5zdWJzY3JpcHRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZnM6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHJpdmF0ZSBoZWxwZXI6IEhlbHBlclNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5hdXRoLnVzZXIkLnBpcGUoXG4gICAgICBtZXJnZU1hcCh1c2VyID0+IHRoaXMuYWZzLmNvbGxlY3Rpb24oYHBvc3RzYCwgcmVmID0+IHRoaXMuaGVscGVyLnJvbGVGaWx0ZXIocmVmLCB1c2VyWydyb2xlcyddLCB1c2VyWyd1aWQnXSwgXCJwb3N0XCIpKS5zbmFwc2hvdENoYW5nZXMoKSksXG4gICAgICBtYXAoYWN0aW9ucyA9PiBhY3Rpb25zLm1hcChhY3Rpb24gPT4gKHsgJGtleTogYWN0aW9uLnBheWxvYWQuZG9jLmlkLCAuLi5hY3Rpb24ucGF5bG9hZC5kb2MuZGF0YSgpIH0pKSksXG4gICAgKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7IH1cblxuICBvcGVuRm9ybSgpIHtcbiAgICB0aGlzLnNob3dOZXdNb2RhbCA9ICF0aGlzLnNob3dOZXdNb2RhbFxuICB9XG5cbn1cbiJdfQ==