UNPKG

ngx-firebase-cms

Version:

Angular Content Management System using Google Firebase (Authentication, Storage & Firestore)

183 lines 13.3 kB
/** * @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==