@firestitch/content 12.0.0 → 12.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/app/modules/content-pages/fs-content-pages.module.d.ts +19 -18
- package/bundles/firestitch-content.umd.js +34 -31
- package/bundles/firestitch-content.umd.js.map +1 -1
- package/esm2015/app/modules/content-pages/components/content-page/content-page.component.js +5 -4
- package/esm2015/app/modules/content-pages/fs-content-pages.module.js +6 -2
- package/esm2015/public_api.js +1 -1
- package/fesm2015/firestitch-content.js +14 -11
- package/fesm2015/firestitch-content.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { InjectionToken, Component, ChangeDetectionStrategy, Inject, ViewChildren, Input, ViewChild, NgModule } from '@angular/core';
|
3
|
-
import * as
|
3
|
+
import * as i11 from '@angular/common';
|
4
4
|
import { CommonModule } from '@angular/common';
|
5
5
|
import { MatButtonModule } from '@angular/material/button';
|
6
6
|
import { MatTabsModule } from '@angular/material/tabs';
|
@@ -8,7 +8,7 @@ import * as i1 from '@angular/material/dialog';
|
|
8
8
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
9
9
|
import * as i9 from '@angular/forms';
|
10
10
|
import { FormsModule } from '@angular/forms';
|
11
|
-
import * as
|
11
|
+
import * as i12 from '@angular/material/input';
|
12
12
|
import { MatInputModule } from '@angular/material/input';
|
13
13
|
import * as i4 from '@angular/material/form-field';
|
14
14
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
@@ -16,6 +16,9 @@ import * as i3$1 from '@angular/material/icon';
|
|
16
16
|
import { MatIconModule } from '@angular/material/icon';
|
17
17
|
import * as i5 from '@angular/material/select';
|
18
18
|
import { MatSelectModule } from '@angular/material/select';
|
19
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
20
|
+
import * as i4$1 from '@angular/material/button-toggle';
|
21
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
19
22
|
import * as i2$1 from '@firestitch/list';
|
20
23
|
import { FsListComponent, FsListModule } from '@firestitch/list';
|
21
24
|
import * as i4$2 from '@firestitch/date';
|
@@ -35,12 +38,9 @@ import * as i2 from '@firestitch/message';
|
|
35
38
|
import { Subject, of } from 'rxjs';
|
36
39
|
import { tap, switchMap, takeUntil, filter, map } from 'rxjs/operators';
|
37
40
|
import * as i6 from '@angular/material/core';
|
41
|
+
import * as i10 from '@angular/flex-layout/flex';
|
38
42
|
import { ItemType } from '@firestitch/filter';
|
39
43
|
import { index } from '@firestitch/common';
|
40
|
-
import * as i4$1 from '@angular/material/button-toggle';
|
41
|
-
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
42
|
-
import * as i8$1 from '@angular/flex-layout/flex';
|
43
|
-
import { FlexLayoutModule } from '@angular/flex-layout';
|
44
44
|
import * as i1$1 from '@angular/platform-browser';
|
45
45
|
import * as i2$2 from '@angular/router';
|
46
46
|
import { NavigationEnd } from '@angular/router';
|
@@ -105,7 +105,7 @@ class ContentPageComponent {
|
|
105
105
|
}
|
106
106
|
}
|
107
107
|
ContentPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentPageComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.FsMessage }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
108
|
-
ContentPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentPageComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: [""], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "closeData", "name"] }], directives: [{ type: i8.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type:
|
108
|
+
ContentPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentPageComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: [""], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "closeData", "name"] }], directives: [{ type: i8.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
109
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentPageComponent, decorators: [{
|
110
110
|
type: Component,
|
111
111
|
args: [{
|
@@ -159,7 +159,7 @@ class EditorComponent {
|
|
159
159
|
}
|
160
160
|
}
|
161
161
|
EditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditorComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
|
162
|
-
EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EditorComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: ["form{display:block;height:100%}form fs-dialog{display:flex;flex-direction:column;height:100%}form ::ng-deep .mat-dialog-content{max-height:none;flex:1}.toggles{display:flex;align-self:end;z-index:1;position:relative;margin-bottom:-12px}.container{height:100%;display:flex;flex-direction:column}.editors{width:5000px;max-width:100%;height:100%;display:flex;min-height:0}.editors .editor{height:100%;display:flex;min-width:0;width:100%;flex-direction:column}.editors .editor .editor-container{height:100%;overflow:auto;background:#1E1E1E}.editors .editor .editor-container fs-text-editor{display:block}.editors .editor+.editor{margin-left:20px}.editors .editor fs-label{background-color:#fff;padding-bottom:5px}\n"], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i5$1.FsLabelComponent, selector: "fs-label" }, { type: i6$1.FsTextEditorComponent, selector: "fs-text-editor", inputs: ["config", "scrollable"], outputs: ["init", "blur"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "closeData", "name"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type:
|
162
|
+
EditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EditorComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: ["form{display:block;height:100%}form fs-dialog{display:flex;flex-direction:column;height:100%}form ::ng-deep .mat-dialog-content{max-height:none;flex:1}.toggles{display:flex;align-self:end;z-index:1;position:relative;margin-bottom:-12px}.container{height:100%;display:flex;flex-direction:column}.editors{width:5000px;max-width:100%;height:100%;display:flex;min-height:0}.editors .editor{height:100%;display:flex;min-width:0;width:100%;flex-direction:column}.editors .editor .editor-container{height:100%;overflow:auto;background:#1E1E1E}.editors .editor .editor-container fs-text-editor{display:block}.editors .editor+.editor{margin-left:20px}.editors .editor fs-label{background-color:#fff;padding-bottom:5px}\n"], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { type: i5$1.FsLabelComponent, selector: "fs-label" }, { type: i6$1.FsTextEditorComponent, selector: "fs-text-editor", inputs: ["config", "scrollable"], outputs: ["init", "blur"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "closeData", "name"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
163
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EditorComponent, decorators: [{
|
164
164
|
type: Component,
|
165
165
|
args: [{
|
@@ -356,6 +356,7 @@ FsContentPagesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", ver
|
|
356
356
|
FsContentPagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentPagesModule, declarations: [FsContentPagesComponent,
|
357
357
|
ContentPageComponent], imports: [CommonModule,
|
358
358
|
FormsModule,
|
359
|
+
FlexLayoutModule,
|
359
360
|
MatDialogModule,
|
360
361
|
MatInputModule,
|
361
362
|
MatFormFieldModule,
|
@@ -376,6 +377,7 @@ FsContentPagesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
|
|
376
377
|
FsContentPagesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentPagesModule, imports: [[
|
377
378
|
CommonModule,
|
378
379
|
FormsModule,
|
380
|
+
FlexLayoutModule,
|
379
381
|
MatDialogModule,
|
380
382
|
MatInputModule,
|
381
383
|
MatFormFieldModule,
|
@@ -400,6 +402,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
400
402
|
imports: [
|
401
403
|
CommonModule,
|
402
404
|
FormsModule,
|
405
|
+
FlexLayoutModule,
|
403
406
|
MatDialogModule,
|
404
407
|
MatInputModule,
|
405
408
|
MatFormFieldModule,
|
@@ -465,7 +468,7 @@ class ContentLayoutComponent {
|
|
465
468
|
}
|
466
469
|
}
|
467
470
|
ContentLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentLayoutComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i2.FsMessage }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
468
|
-
ContentLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentLayoutComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"Tag\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: [""], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "closeData", "name"] }], directives: [{ type: i8.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type:
|
471
|
+
ContentLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentLayoutComponent, selector: "ng-component", viewQueries: [{ propertyName: "textEditors", predicate: FsTextEditorComponent, descendants: true }], ngImport: i0, template: "<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"Tag\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n", styles: [""], components: [{ type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i7.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "closeData", "name"] }], directives: [{ type: i8.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
469
472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentLayoutComponent, decorators: [{
|
470
473
|
type: Component,
|
471
474
|
args: [{
|
@@ -729,7 +732,7 @@ class ContentRendererComponent {
|
|
729
732
|
}
|
730
733
|
}
|
731
734
|
ContentRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentRendererComponent, deps: [{ token: i1$1.DomSanitizer }, { token: i2$2.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
732
|
-
ContentRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentRendererComponent, selector: "fs-content-renderer", inputs: { contentPage: "contentPage" }, ngImport: i0, template: "<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n", styles: [""], directives: [{ type:
|
735
|
+
ContentRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ContentRendererComponent, selector: "fs-content-renderer", inputs: { contentPage: "contentPage" }, ngImport: i0, template: "<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n", styles: [""], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
733
736
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContentRendererComponent, decorators: [{
|
734
737
|
type: Component,
|
735
738
|
args: [{
|
@@ -778,7 +781,7 @@ class FsContentComponent {
|
|
778
781
|
}
|
779
782
|
}
|
780
783
|
FsContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentComponent, deps: [{ token: FS_CONTENT_CONFIG }, { token: i1$1.Title }, { token: i0.ChangeDetectorRef }, { token: i2$2.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
781
|
-
FsContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentComponent, selector: "fs-content", ngImport: i0, template: "<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>", styles: [""], components: [{ type: ContentRendererComponent, selector: "fs-content-renderer", inputs: ["contentPage"] }], directives: [{ type:
|
784
|
+
FsContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentComponent, selector: "fs-content", ngImport: i0, template: "<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>", styles: [""], components: [{ type: ContentRendererComponent, selector: "fs-content-renderer", inputs: ["contentPage"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
782
785
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentComponent, decorators: [{
|
783
786
|
type: Component,
|
784
787
|
args: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"firestitch-content.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.html","../../src/app/modules/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/editor.component.html","../../src/app/modules/content-pages/components/content-pages/content-pages.component.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.html","../../src/app/modules/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/fs-content-pages.module.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.html","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.ts","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.html","../../src/app/modules/content-layouts/fs-content-layouts.module.ts","../../src/app/modules/content/components/content- renderer/content-renderer.component.ts","../../src/app/modules/content/components/content- renderer/content-renderer.component.html","../../src/app/modules/content/components/content/content.component.ts","../../src/app/modules/content/components/content/content.component.html","../../src/app/modules/content/fs-content.module.ts","../../src/firestitch-content.ts"],"sourcesContent":["export enum PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\n}\n","import { PageType } from '../enums';\n\nexport const PageTypes = [\n { name: 'Standard Page', value: PageType.StandardPage },\n { name: 'Home Page', value: PageType.HomePage },\n { name: 'Not Found Page', value: PageType.NotFoundPage },\n { name: 'Blog Post', value: PageType.BlogPost },\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_CONFIG = new InjectionToken<any>('fs-content-config');\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\n\n\n@Component({\n templateUrl: './content-page.component.html',\n styleUrls: ['./content-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentPage = null;\n public PageTypes = PageTypes;\n public contentLayouts;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentPageComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentPage(this.contentPage)\n .pipe(\n tap((contentPage) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentPage);\n }),\n );\n };\n\n private _fetchData(): void {\n this._config.loadContentLayouts()\n .subscribe((contentLayouts) => {\n this.contentLayouts = contentLayouts;\n this._cdRef.markForCheck();\n });\n\n of(this._data.contentPage)\n .pipe(\n switchMap((contentPage) => {\n return of(contentPage);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentPage) => {\n this.contentPage = {\n ...contentPage,\n };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public styles = null;\n public content = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EditorComponent>,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('100%','100%');\n this.content = this._data.content;\n this.styles = this._data.styles;\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n setTimeout(() => {\n this.textEditors.forEach((textEditor) => {\n textEditor.updateLayout();\n });\n }, 100);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._data.save({ content: this.content, styles: this.styles })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { index } from '@firestitch/common';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../content-page/content-page.component';\nimport { EditorComponent } from '../../../editor/components/editor';\n\n\n@Component({\n selector: 'fs-content-pages',\n templateUrl: './content-pages.component.html',\n styleUrls: ['./content-pages.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentPagesComponent implements OnInit, OnDestroy {\n\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n public pageTypes = index(PageTypes, 'value', 'name');\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentPage: any): void {\n this._dialog.open(EditorComponent, {\n maxWidth: null,\n maxHeight: null,\n data: {\n styles: contentPage.styles,\n content: contentPage.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentPage.id,\n ...data,\n });\n }, \n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openPage(contentPage: any): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentPage) => !!_contentPage),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openPage({});\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentPage(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentPages(query)\n .pipe(\n map((response: any) => {\n return { data: response.contentPages, paging: response.paging };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentPage({ id: row.id, state: 'active' });\n },\n },\n };\n }\n\n}\n\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n /{{row.path}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{pageTypes[row.type]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { EditorComponent } from './components/editor';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsFormModule,\n FsLabelModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n }\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsContentEditorModule } from '../editor';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ],\n})\nexport class FsContentPagesModule {\n static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n templateUrl: './content-layout.component.html',\n styleUrls: ['./content-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentLayout = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor( \n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentLayoutComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentLayout(this.contentLayout)\n .pipe(\n tap((contentLayout) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentLayout);\n }),\n );\n };\n\n private _fetchData(): void {\n of(this._data.contentLayout)\n .pipe(\n switchMap((contentLayout) => {\n return of(contentLayout);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentLayout) => {\n this.contentLayout = { ...contentLayout };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"Tag\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\n\n\n@Component({\n selector: 'fs-content-layouts',\n templateUrl: './content-layouts.component.html',\n styleUrls: ['./content-layouts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentLayoutsComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentLayout: any): void {\n this._dialog.open(EditorComponent, {\n maxWidth: null,\n maxHeight: null, \n data: {\n styles: contentLayout.styles,\n content: contentLayout.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentLayout.id,\n ...data,\n });\n },\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n ) \n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openLayout(contentLayout: any): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openLayout({});\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentLayout(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentLayouts(query)\n .pipe(\n map((contentLayouts: any) => {\n return { data: contentLayouts };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentLayout({ id: row.id, state: 'active' });\n },\n },\n };\n }\n\n}\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openLayout(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentLayoutsComponent } from './components/content-layouts';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentLayoutsComponent,\n ],\n declarations: [\n ContentLayoutComponent,\n FsContentLayoutsComponent,\n ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Input,\n AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-content-renderer',\n templateUrl: './content-renderer.component.html',\n styleUrls: ['./content-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentRendererComponent implements OnDestroy, AfterViewChecked {\n\n @Input() public set contentPage(contentPage) {\n if(contentPage) {\n this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n this.styles = contentPage.styles;\n }\n }\n\n public content;\n public styles;\n public _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngAfterViewChecked(): void {\n let el = document.querySelector('#contentPageStyles');\n if(!el) {\n el = document.createElement('style');\n el.setAttribute('id','contentPageStyles');\n document.getElementsByTagName('head')[0].appendChild(el);\n }\n\n el.innerHTML = this.styles;\n\n this.registerHrefs();\n }\n\n public registerHrefs(): void {\n Array.from(this.el.querySelectorAll('a[href]'))\n .filter((el: Element) => {\n return el.getAttribute('href').match(/^\\//);\n })\n .forEach((el: Element) => {\n el.addEventListener('click',(event: MouseEvent) => {\n if(!event.shiftKey && !event.ctrlKey) {\n event.preventDefault();\n const href = el.getAttribute('href');\n this._router.navigateByUrl(href);\n }\n });\n });\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this.removeStyles();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public removeStyles(): void {\n const el = document.querySelector('#contentPageStyles');\n if(el) {\n el.remove();\n }\n }\n\n}\n","<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'fs-content',\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentComponent implements OnInit, OnDestroy {\n\n public contentPage;\n \n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _title: Title,\n private _cdRef: ChangeDetectorRef,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngOnInit(): void {\n this.load();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.load();\n });\n }\n\n public load(): void {\n const path = (window as any).location.pathname;\n this._config.loadContent(path)\n .subscribe((contentPage) => {\n this._title.setTitle(contentPage.title);\n this.contentPage = contentPage;\n this._cdRef.markForCheck();\n });\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._title.setTitle('');\n }\n\n}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentComponent } from './components/content';\nimport { ContentRendererComponent } from './components/content- renderer';\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentComponent,\n ],\n declarations: [\n FsContentComponent,\n ContentRendererComponent,\n ],\n})\nexport class FsContentModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"firestitch-content.js","sources":["../../src/app/enums/page-type.enum.ts","../../src/app/consts/page-types.const.ts","../../src/app/injectors/content-config.injector.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.ts","../../src/app/modules/content-pages/components/content-page/content-page.component.html","../../src/app/modules/editor/components/editor/editor.component.ts","../../src/app/modules/editor/components/editor/editor.component.html","../../src/app/modules/content-pages/components/content-pages/content-pages.component.ts","../../src/app/modules/content-pages/components/content-pages/content-pages.component.html","../../src/app/modules/editor/fs-content-editor.module.ts","../../src/app/modules/content-pages/fs-content-pages.module.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.ts","../../src/app/modules/content-layouts/components/content-layout/content-layout.component.html","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.ts","../../src/app/modules/content-layouts/components/content-layouts/content-layouts.component.html","../../src/app/modules/content-layouts/fs-content-layouts.module.ts","../../src/app/modules/content/components/content- renderer/content-renderer.component.ts","../../src/app/modules/content/components/content- renderer/content-renderer.component.html","../../src/app/modules/content/components/content/content.component.ts","../../src/app/modules/content/components/content/content.component.html","../../src/app/modules/content/fs-content.module.ts","../../src/firestitch-content.ts"],"sourcesContent":["export enum PageType {\n StandardPage = 'standardPage',\n BlogPost = 'blogPost',\n HomePage = 'homePage',\n NotFoundPage = 'notFoundPage',\n}\n","import { PageType } from '../enums';\n\nexport const PageTypes = [\n { name: 'Standard Page', value: PageType.StandardPage },\n { name: 'Home Page', value: PageType.HomePage },\n { name: 'Not Found Page', value: PageType.NotFoundPage },\n { name: 'Blog Post', value: PageType.BlogPost },\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_CONFIG = new InjectionToken<any>('fs-content-config');\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { PageTypes } from '../../../../consts';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\n\n\n@Component({\n templateUrl: './content-page.component.html',\n styleUrls: ['./content-page.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentPageComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentPage = null;\n public PageTypes = PageTypes;\n public contentLayouts;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentPageComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentPage(this.contentPage)\n .pipe(\n tap((contentPage) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentPage);\n }),\n );\n };\n\n private _fetchData(): void {\n this._config.loadContentLayouts()\n .subscribe((contentLayouts) => {\n this.contentLayouts = contentLayouts;\n this._cdRef.markForCheck();\n });\n\n of(this._data.contentPage)\n .pipe(\n switchMap((contentPage) => {\n return of(contentPage);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentPage) => {\n this.contentPage = {\n ...contentPage,\n };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentPage\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentPage.id ? 'Page' : 'Create Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"contentPage.type\"\n name=\"type\"\n required\n placeholder=\"Type\">\n <mat-option\n *ngFor=\"let item of PageTypes\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.path\"\n name=\"path\"\n placeholder=\"Path\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentPage.title\"\n name=\"title\"\n placeholder=\"Title\">\n </mat-form-field>\n <mat-form-field *ngIf=\"contentLayouts\">\n <mat-select\n [(ngModel)]=\"contentPage.contentLayoutId\"\n required\n name=\"contentLayoutId\"\n placeholder=\"Layout\">\n <mat-option\n *ngFor=\"let item of contentLayouts\"\n [value]=\"item.id\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditorComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public styles = null;\n public content = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EditorComponent>,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._dialogRef.updateSize('100%','100%');\n this.content = this._data.content;\n this.styles = this._data.styles;\n }\n\n public editorToggleChange(event: MatButtonToggleChange): void {\n this.editors[event.value] = !this.editors[event.value];\n setTimeout(() => {\n this.textEditors.forEach((textEditor) => {\n textEditor.updateLayout();\n });\n }, 100);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._data.save({ content: this.content, styles: this.styles })\n .pipe(\n tap(() => {\n this._message.success('Saved Changes');\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"save\">\n <fs-dialog>\n <h1 mat-dialog-title>Design</h1>\n <div mat-dialog-content>\n <div class=\"container\">\n <div class=\"toggles\">\n <mat-button-toggle-group multiple>\n <mat-button-toggle value=\"content\" [checked]=\"editors.content\" (change)=\"editorToggleChange($event)\">Content</mat-button-toggle>\n <mat-button-toggle value=\"styles\" [checked]=\"editors.styles\" (change)=\"editorToggleChange($event)\">Styles</mat-button-toggle>\n </mat-button-toggle-group> \n </div>\n <div class=\"editors\">\n <div class=\"editor\" *ngIf=\"editors.content\">\n <fs-label>Content</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"content\" \n name=\"content\"\n [config]=\"{ tabSize: 2, language: 'html' }\">\n </fs-text-editor> \n </div>\n </div>\n <div class=\"editor\" *ngIf=\"editors.styles\">\n <fs-label>Styles</fs-label>\n <div class=\"editor-container\">\n <fs-text-editor \n [(ngModel)]=\"styles\" \n name=\"styles\"\n [config]=\"{ tabSize: 2, language: 'scss' }\">\n </fs-text-editor> \n </div>\n </div> \n </div>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Input,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { index } from '@firestitch/common';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { PageTypes } from '../../../../consts';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { ContentPageComponent } from '../content-page/content-page.component';\nimport { EditorComponent } from '../../../editor/components/editor';\n\n\n@Component({\n selector: 'fs-content-pages',\n templateUrl: './content-pages.component.html',\n styleUrls: ['./content-pages.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentPagesComponent implements OnInit, OnDestroy {\n\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n public pageTypes = index(PageTypes, 'value', 'name');\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentPage: any): void {\n this._dialog.open(EditorComponent, {\n maxWidth: null,\n maxHeight: null,\n data: {\n styles: contentPage.styles,\n content: contentPage.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentPage.id,\n ...data,\n });\n }, \n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openPage(contentPage: any): void {\n this._dialog.open(ContentPageComponent, {\n data: {\n contentPage,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentPage) => !!_contentPage),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openPage({});\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentPage(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentPages(query)\n .pipe(\n map((response: any) => {\n return { data: response.contentPages, paging: response.paging };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentPage({ id: row.id, state: 'active' });\n },\n },\n };\n }\n\n}\n\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openPage(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"path\" title=\"Path\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n /{{row.path}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"type\" title=\"Type\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{pageTypes[row.type]}}\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { EditorComponent } from './components/editor';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsFormModule,\n FsLabelModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n EditorComponent,\n ],\n declarations: [\n EditorComponent,\n ],\n})\nexport class FsContentEditorModule {\n }\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\n\nimport { ContentPageComponent } from './components/content-page';\nimport { FsContentPagesComponent } from './components/content-pages';\nimport { FsContentEditorModule } from '../editor';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentPagesComponent,\n ],\n declarations: [\n FsContentPagesComponent,\n ContentPageComponent,\n ],\n})\nexport class FsContentPagesModule {\n static forRoot(): ModuleWithProviders<FsContentPagesModule> {\n return {\n ngModule: FsContentPagesModule,\n };\n }\n}\n","import {\n Component,\n Inject,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChildren,\n QueryList,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsTextEditorComponent } from '@firestitch/text-editor';\n\nimport { Subject, of } from 'rxjs';\nimport { switchMap, tap, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n templateUrl: './content-layout.component.html',\n styleUrls: ['./content-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentLayoutComponent implements OnInit, OnDestroy {\n\n @ViewChildren(FsTextEditorComponent)\n public textEditors: QueryList<FsTextEditorComponent>;\n\n public contentLayout = null;\n public editors = { content: true, styles: true };\n\n private _destroy$ = new Subject<void>();\n\n constructor( \n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<ContentLayoutComponent>,\n private _message: FsMessage,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this._fetchData();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public save = () => {\n return this._config.saveContentLayout(this.contentLayout)\n .pipe(\n tap((contentLayout) => {\n this._message.success('Saved Changes');\n this._dialogRef.close(contentLayout);\n }),\n );\n };\n\n private _fetchData(): void {\n of(this._data.contentLayout)\n .pipe(\n switchMap((contentLayout) => {\n return of(contentLayout);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe((contentLayout) => {\n this.contentLayout = { ...contentLayout };\n\n this._cdRef.markForCheck();\n });\n }\n\n}\n","<form fsForm [submit]=\"save\" *fsSkeletonForm=\"contentLayout\">\n <fs-dialog>\n <h1 mat-dialog-title>{{contentLayout.id ? 'Layout' : 'Layout Page'}}</h1>\n <div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required\n placeholder=\"Name\">\n </mat-form-field>\n <mat-form-field>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"tag\"\n placeholder=\"Tag\">\n </mat-form-field>\n </div>\n </div>\n\n <div mat-dialog-actions>\n <fs-form-dialog-actions>\n </fs-form-dialog-actions>\n </div>\n </fs-dialog>\n</form>\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectionStrategy,\n OnDestroy,\n Inject,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { map, takeUntil, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ContentLayoutComponent } from '../../components/content-layout';\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\nimport { EditorComponent } from '../../../editor/components/editor';\n\n\n@Component({\n selector: 'fs-content-layouts',\n templateUrl: './content-layouts.component.html',\n styleUrls: ['./content-layouts.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentLayoutsComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent)\n public listComponent: FsListComponent;\n\n public listConfig: FsListConfig;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this._initListConfig();\n }\n\n public openEditor(contentLayout: any): void {\n this._dialog.open(EditorComponent, {\n maxWidth: null,\n maxHeight: null, \n data: {\n styles: contentLayout.styles,\n content: contentLayout.content,\n save: (data) => {\n return this._config.saveContentPage({\n id: contentLayout.id,\n ...data,\n });\n },\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n ) \n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public openLayout(contentLayout: any): void {\n this._dialog.open(ContentLayoutComponent, {\n data: {\n contentLayout,\n },\n })\n .afterClosed()\n .pipe(\n filter((_contentLayout) => !!_contentLayout),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.listComponent.reload();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _initListConfig(): void {\n this.listConfig = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n actions: [\n {\n label: 'Create',\n click: () => {\n this.openLayout({});\n },\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this._config.deleteContentLayout(data);\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this record?',\n },\n menu: true,\n label: 'Delete',\n },\n ],\n fetch: (query) => {\n return this._config.loadContentLayouts(query)\n .pipe(\n map((contentLayouts: any) => {\n return { data: contentLayouts };\n }),\n );\n },\n restore: {\n query: { state: 'deleted' },\n filterLabel: 'Show Deleted',\n menuLabel: 'Restore',\n reload: true,\n click: (row) => {\n return this._config.saveContentLayout({ id: row.id, state: 'active' });\n },\n },\n };\n }\n\n}\n\n","<fs-list [config]=\"listConfig\">\n <fs-list-column name=\"design\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openEditor(row)\"><mat-icon>design_services</mat-icon></a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"name\" title=\"Name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openLayout(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"modify_date\" title=\"Modified\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{row.modifyDate | fsDate: 'date-time-yearless'}}\n </ng-template>\n </fs-list-column>\n</fs-list>\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDateModule } from '@firestitch/date';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\nimport { FsTextEditorModule } from '@firestitch/text-editor';\n\nimport { FsContentLayoutsComponent } from './components/content-layouts';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsContentEditorModule } from '../editor';\nimport { ContentLayoutComponent } from './components/content-layout';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n FlexLayoutModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n MatIconModule,\n MatSelectModule,\n MatButtonToggleModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsLabelModule,\n FsSkeletonModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n\n FsContentEditorModule,\n ],\n exports: [\n FsContentLayoutsComponent,\n ],\n declarations: [\n ContentLayoutComponent,\n FsContentLayoutsComponent,\n ],\n})\nexport class FsContentLayoutsModule {\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n OnDestroy,\n ElementRef,\n Input,\n AfterViewChecked,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-content-renderer',\n templateUrl: './content-renderer.component.html',\n styleUrls: ['./content-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentRendererComponent implements OnDestroy, AfterViewChecked {\n\n @Input() public set contentPage(contentPage) {\n if(contentPage) {\n this.content = this._sanitizer.bypassSecurityTrustHtml(contentPage.content);\n this.styles = contentPage.styles;\n }\n }\n\n public content;\n public styles;\n public _destroy$ = new Subject();\n\n constructor(\n private _sanitizer: DomSanitizer,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngAfterViewChecked(): void {\n let el = document.querySelector('#contentPageStyles');\n if(!el) {\n el = document.createElement('style');\n el.setAttribute('id','contentPageStyles');\n document.getElementsByTagName('head')[0].appendChild(el);\n }\n\n el.innerHTML = this.styles;\n\n this.registerHrefs();\n }\n\n public registerHrefs(): void {\n Array.from(this.el.querySelectorAll('a[href]'))\n .filter((el: Element) => {\n return el.getAttribute('href').match(/^\\//);\n })\n .forEach((el: Element) => {\n el.addEventListener('click',(event: MouseEvent) => {\n if(!event.shiftKey && !event.ctrlKey) {\n event.preventDefault();\n const href = el.getAttribute('href');\n this._router.navigateByUrl(href);\n }\n });\n });\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this.removeStyles();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public removeStyles(): void {\n const el = document.querySelector('#contentPageStyles');\n if(el) {\n el.remove();\n }\n }\n\n}\n","<div *ngIf=\"content\" [innerHTML]=\"content\"></div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { FS_CONTENT_CONFIG } from '../../../../injectors';\nimport { FsContentConfig } from '../../../../interfaces';\n\n\n@Component({\n selector: 'fs-content',\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsContentComponent implements OnInit, OnDestroy {\n\n public contentPage;\n \n private _destroy$ = new Subject();\n\n constructor(\n @Inject(FS_CONTENT_CONFIG) private _config: FsContentConfig,\n private _title: Title,\n private _cdRef: ChangeDetectorRef,\n private _router: Router,\n private _el: ElementRef,\n ) {}\n\n public ngOnInit(): void {\n this.load();\n\n this._router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.load();\n });\n }\n\n public load(): void {\n const path = (window as any).location.pathname;\n this._config.loadContent(path)\n .subscribe((contentPage) => {\n this._title.setTitle(contentPage.title);\n this.contentPage = contentPage;\n this._cdRef.markForCheck();\n });\n }\n\n public get el(): any {\n return this._el.nativeElement;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._title.setTitle('');\n }\n\n}\n","<fs-content-renderer *ngIf=\"contentPage\" [contentPage]=\"contentPage\"></fs-content-renderer>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentComponent } from './components/content';\nimport { ContentRendererComponent } from './components/content- renderer';\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentComponent,\n ],\n declarations: [\n FsContentComponent,\n ContentRendererComponent,\n ],\n})\nexport class FsContentModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/public_api.d.ts
CHANGED
@@ -7,3 +7,4 @@ export { FsContentComponent } from './app/modules/content/components/content/con
|
|
7
7
|
export { FS_CONTENT_CONFIG } from './app/injectors/content-config.injector';
|
8
8
|
export { FsContentConfig } from './app/interfaces/content-config';
|
9
9
|
export { FsContentPage } from './app/interfaces/content-page';
|
10
|
+
export { FsContentLayout } from './app/interfaces/content-layout';
|