@firestitch/content 18.0.10 → 18.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,14 @@
1
- import { OnDestroy, OnInit, QueryList } from '@angular/core';
2
- import { FsTextEditorComponent } from '@firestitch/text-editor';
1
+ import { FsContentLayout } from '../../../../interfaces';
3
2
  import * as i0 from "@angular/core";
4
- export declare class ContentLayoutComponent implements OnInit, OnDestroy {
3
+ export declare class ContentLayoutComponent {
4
+ contentLayout: import("@angular/core").WritableSignal<FsContentLayout>;
5
5
  private _config;
6
6
  private _data;
7
7
  private _dialogRef;
8
8
  private _message;
9
- private _cdRef;
10
- textEditors: QueryList<FsTextEditorComponent>;
11
- contentLayout: any;
12
- editors: {
13
- content: boolean;
14
- styles: boolean;
15
- };
16
- private _destroy$;
17
- ngOnInit(): void;
18
- ngOnDestroy(): void;
19
- save: () => import("rxjs").Observable<import("../../../../interfaces").FsContentLayout>;
20
- private _fetchData;
9
+ constructor();
10
+ save: () => import("rxjs").Observable<FsContentLayout>;
11
+ private _init;
21
12
  static ɵfac: i0.ɵɵFactoryDeclaration<ContentLayoutComponent, never>;
22
13
  static ɵcmp: i0.ɵɵComponentDeclaration<ContentLayoutComponent, "ng-component", never, {}, {}, never, never, true, never>;
23
14
  }
@@ -1,45 +1,32 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
1
+ import { OnInit } from '@angular/core';
2
2
  import { MatButtonToggleChange } from '@angular/material/button-toggle';
3
3
  import { EditorType } from '../../../../enums';
4
- import { FsContentConfig } from '../../../../interfaces';
5
- import { EditorComponent } from '../../../editor/components/editor';
4
+ import { FsContentConfig, FsContentLayout } from '../../../../interfaces';
5
+ import { EditorComponent } from '../../../editor/components/editor/editor.component';
6
6
  import * as i0 from "@angular/core";
7
- export declare class ContentLayoutEditorComponent implements OnInit, OnDestroy {
8
- editor: EditorComponent;
9
- contentLayout: {
10
- id?: number;
11
- styles?: string;
12
- content?: string;
13
- name?: string;
14
- };
7
+ export declare class ContentLayoutEditorComponent implements OnInit {
8
+ editor: import("@angular/core").Signal<EditorComponent>;
9
+ contentLayout: import("@angular/core").WritableSignal<FsContentLayout>;
15
10
  get isMac(): boolean;
16
- submitting: boolean;
17
11
  config: FsContentConfig;
18
12
  EditorType: typeof EditorType;
19
- focused: any;
20
- title: any;
21
- editors: {
13
+ editors: import("@angular/core").WritableSignal<{
22
14
  html: boolean;
23
15
  scss: boolean;
24
16
  globalScss: boolean;
25
- };
26
- private _destroy$;
17
+ }>;
18
+ submitted: () => import("rxjs").Observable<unknown>;
27
19
  private _data;
28
20
  private _dialogRef;
29
- private _message;
30
21
  private _dialog;
31
- private _cdRef;
32
22
  private _prompt;
23
+ private _destroyRef;
33
24
  ngOnInit(): void;
34
25
  editorToggleChange(event: MatButtonToggleChange): void;
35
- ngOnDestroy(): void;
36
- _initContentLayout(contentLayout: any): void;
37
- editorFocused(type: any): void;
38
26
  save(): void;
39
- submitted: () => import("rxjs").Observable<import("../../../../interfaces").FsContentLayout | import("../../../../interfaces").FsContentStyle>;
40
- saveContentPage(): import("rxjs").Observable<import("../../../../interfaces").FsContentLayout>;
41
27
  close(): void;
42
28
  openSettings(): void;
29
+ private _initContentLayout;
43
30
  private _initEscape;
44
31
  static ɵfac: i0.ɵɵFactoryDeclaration<ContentLayoutEditorComponent, never>;
45
32
  static ɵcmp: i0.ɵɵComponentDeclaration<ContentLayoutEditorComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -1,28 +1,25 @@
1
- import { OnDestroy, OnInit, QueryList } from '@angular/core';
2
- import { FsTextEditorComponent } from '@firestitch/text-editor';
1
+ import { OnInit } from '@angular/core';
2
+ import { PageType } from '../../../../enums';
3
+ import { FsContentLayout, FsContentPage } from '../../../../interfaces';
3
4
  import * as i0 from "@angular/core";
4
- export declare class ContentPageComponent implements OnInit, OnDestroy {
5
+ export declare class ContentPageComponent implements OnInit {
6
+ contentPage: import("@angular/core").WritableSignal<FsContentPage>;
7
+ contentLayouts: import("@angular/core").WritableSignal<FsContentLayout[]>;
8
+ PageTypes: {
9
+ name: string;
10
+ value: PageType;
11
+ }[];
12
+ isTypeSelectable: import("@angular/core").Signal<boolean>;
13
+ isHomePage: import("@angular/core").Signal<boolean>;
5
14
  private _config;
6
15
  private _data;
7
16
  private _dialogRef;
8
17
  private _message;
9
- private _cdRef;
10
- textEditors: QueryList<FsTextEditorComponent>;
11
- contentPage: any;
12
- PageTypes: {
13
- name: string;
14
- value: import("../../../../enums").PageType;
15
- }[];
16
- contentLayouts: any;
17
- editors: {
18
- content: boolean;
19
- styles: boolean;
20
- };
21
- private _destroy$;
18
+ private _destroyRef;
19
+ constructor();
22
20
  ngOnInit(): void;
23
- ngOnDestroy(): void;
24
- save: () => import("rxjs").Observable<import("../../../../interfaces").FsContentPage>;
25
- private _fetchData;
21
+ save: () => import("rxjs").Observable<FsContentPage>;
22
+ private _init;
26
23
  static ɵfac: i0.ɵɵFactoryDeclaration<ContentPageComponent, never>;
27
24
  static ɵcmp: i0.ɵɵComponentDeclaration<ContentPageComponent, "ng-component", never, {}, {}, never, never, true, never>;
28
25
  }
@@ -1,49 +1,32 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
1
+ import { OnInit } from '@angular/core';
2
2
  import { MatButtonToggleChange } from '@angular/material/button-toggle';
3
- import { Observable } from 'rxjs';
4
- import { FsContentConfig } from '../../../../interfaces';
5
- import { EditorComponent } from '../../../editor/components/editor';
3
+ import { FsContentConfig, FsContentPage } from '../../../../interfaces';
4
+ import { EditorComponent } from '../../../editor/components/editor/editor.component';
6
5
  import * as i0 from "@angular/core";
7
- export declare class ContentPageEditorComponent implements OnInit, OnDestroy {
8
- private _data;
9
- private _dialogRef;
10
- private _message;
11
- private _dialog;
12
- private _cdRef;
13
- private _prompt;
14
- editor: EditorComponent;
15
- contentPage: {
16
- id?: number;
17
- styles?: string;
18
- content?: string;
19
- name?: string;
20
- js?: string;
21
- path?: string;
22
- };
23
- focused: any;
6
+ export declare class ContentPageEditorComponent implements OnInit {
7
+ editor: import("@angular/core").Signal<EditorComponent>;
8
+ contentPage: import("@angular/core").WritableSignal<FsContentPage>;
24
9
  config: FsContentConfig;
25
- resizing: boolean;
26
- title: any;
27
- editors: {
10
+ editors: import("@angular/core").WritableSignal<{
28
11
  html: boolean;
29
12
  scss: boolean;
30
13
  js: boolean;
31
14
  globalScss: boolean;
32
- };
15
+ }>;
33
16
  get isMac(): boolean;
34
- submitting: boolean;
35
- private _destroy$;
17
+ submitted: () => import("rxjs").Observable<unknown>;
18
+ private _data;
19
+ private _dialogRef;
20
+ private _dialog;
21
+ private _prompt;
22
+ private _destroyRef;
36
23
  ngOnInit(): void;
37
24
  editorToggleChange(event: MatButtonToggleChange): void;
38
- ngOnDestroy(): void;
39
- _initContentPage(contentPage: any): void;
40
- editorFocused(type: any): void;
41
25
  save(): void;
42
- submitted: () => Observable<any>;
43
- saveContentPage(): Observable<import("../../../../interfaces").FsContentPage>;
44
26
  close(): void;
45
27
  openPreview(): void;
46
28
  openSettings(): void;
29
+ private _initContentPage;
47
30
  private _initEscape;
48
31
  static ɵfac: i0.ɵɵFactoryDeclaration<ContentPageEditorComponent, never>;
49
32
  static ɵcmp: i0.ɵɵComponentDeclaration<ContentPageEditorComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -1,47 +1,52 @@
1
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { OnInit } from '@angular/core';
2
2
  import { FsTextEditorConfig } from '@firestitch/text-editor';
3
+ import { Observable } from 'rxjs';
3
4
  import { EditorType } from '../../../../enums';
4
- import { FsContentConfig } from '../../../../interfaces';
5
+ import { FsContentConfig, FsContentStyle } from '../../../../interfaces';
5
6
  import * as i0 from "@angular/core";
6
- export declare class EditorComponent implements OnInit, OnDestroy {
7
- private _cdRef;
8
- private _message;
9
- showHtml: boolean;
10
- showScss: boolean;
11
- showJs: boolean;
12
- showGlobalScss: boolean;
13
- html: any;
14
- scss: any;
15
- js: any;
16
- contentConfig: FsContentConfig;
17
- changed: EventEmitter<{
18
- type: string;
19
- value: string;
20
- }>;
21
- focused: EventEmitter<string>;
22
- blured: EventEmitter<string>;
23
- changes: any;
7
+ type EditorValues = Partial<Record<EditorType, string>>;
8
+ export declare class EditorComponent implements OnInit {
9
+ showHtml: import("@angular/core").InputSignal<boolean>;
10
+ showScss: import("@angular/core").InputSignal<boolean>;
11
+ showJs: import("@angular/core").InputSignal<boolean>;
12
+ showGlobalScss: import("@angular/core").InputSignal<boolean>;
13
+ contentConfig: import("@angular/core").InputSignal<FsContentConfig>;
14
+ html: import("@angular/core").ModelSignal<string>;
15
+ scss: import("@angular/core").ModelSignal<string>;
16
+ js: import("@angular/core").ModelSignal<string>;
17
+ globalScss: import("@angular/core").WritableSignal<string>;
18
+ contentStyle: import("@angular/core").WritableSignal<FsContentStyle>;
19
+ focusedArea: import("@angular/core").WritableSignal<EditorType>;
20
+ saving: import("@angular/core").WritableSignal<boolean>;
21
+ changedTypes: import("@angular/core").Signal<EditorType[]>;
22
+ hasChanges: import("@angular/core").Signal<boolean>;
24
23
  EditorType: typeof EditorType;
25
- focusedArea: string;
26
- contentStyle: {
27
- scss?: string;
28
- };
29
- resizing: boolean;
30
- title: any;
31
24
  scssConfig: FsTextEditorConfig;
32
25
  globalScssConfig: FsTextEditorConfig;
33
26
  htmlConfig: FsTextEditorConfig;
34
27
  jsConfig: FsTextEditorConfig;
35
- private _destroy$;
28
+ private _saved;
29
+ private _message;
30
+ private _destroyRef;
36
31
  ngOnInit(): void;
37
- ngOnDestroy(): void;
38
- change(type: any, value: any): void;
39
- get hasChanges(): boolean;
40
- clearChange(type: any): void;
41
- initTextEditors(): void;
42
- initGlobalContentStyle(): void;
43
- saveGlobalScss(): import("rxjs").Observable<import("../../../../interfaces").FsContentStyle>;
44
- private _onFocus;
32
+ value(type: EditorType): string;
33
+ /**
34
+ * Saves every changed pane, not just the one last focused, and records what was sent as
35
+ * the new baseline, so anything typed while the request is in flight stays changed. With
36
+ * nothing changed it sends nothing and shows no toast. Ctrl+S reaches this through fsForm's
37
+ * [submit], so it shares the Save button's gate (IEB-T292).
38
+ *
39
+ * `fields` maps a pane to its property on the record (html → content); `saveRecord` posts
40
+ * those properties.
41
+ */
42
+ save$(fields: EditorValues, saveRecord: (values: Record<string, string>) => Observable<unknown>): Observable<unknown>;
43
+ private _saveRecord$;
44
+ private _saveGlobalScss$;
45
+ private _markSaved;
46
+ private _initTextEditors;
47
+ private _createTextEditorConfig;
48
+ private _initGlobalContentStyle;
45
49
  static ɵfac: i0.ɵɵFactoryDeclaration<EditorComponent, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<EditorComponent, "app-editor", never, { "showHtml": { "alias": "showHtml"; "required": false; }; "showScss": { "alias": "showScss"; "required": false; }; "showJs": { "alias": "showJs"; "required": false; }; "showGlobalScss": { "alias": "showGlobalScss"; "required": false; }; "html": { "alias": "html"; "required": false; }; "scss": { "alias": "scss"; "required": false; }; "js": { "alias": "js"; "required": false; }; "contentConfig": { "alias": "contentConfig"; "required": false; }; }, { "changed": "changed"; "focused": "focused"; "blured": "blured"; }, never, never, true, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<EditorComponent, "app-editor", never, { "showHtml": { "alias": "showHtml"; "required": false; "isSignal": true; }; "showScss": { "alias": "showScss"; "required": false; "isSignal": true; }; "showJs": { "alias": "showJs"; "required": false; "isSignal": true; }; "showGlobalScss": { "alias": "showGlobalScss"; "required": false; "isSignal": true; }; "contentConfig": { "alias": "contentConfig"; "required": false; "isSignal": true; }; "html": { "alias": "html"; "required": false; "isSignal": true; }; "scss": { "alias": "scss"; "required": false; "isSignal": true; }; "js": { "alias": "js"; "required": false; "isSignal": true; }; }, { "html": "htmlChange"; "scss": "scssChange"; "js": "jsChange"; }, never, never, true, never>;
47
51
  }
52
+ export {};
@@ -1,6 +1,10 @@
1
1
  import { PageType } from '../enums';
2
+ // Every type the server has, so the pages list labels every row. The Page dialog offers
3
+ // only the standard and not-found types (CC-T4102).
2
4
  export const PageTypes = [
3
5
  { name: 'Page', value: PageType.StandardPage },
4
6
  { name: 'Page (Not Found)', value: PageType.NotFoundPage },
7
+ { name: 'Page', value: PageType.HomePage },
8
+ { name: 'Blog Post', value: PageType.BlogPost },
5
9
  ];
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10eXBlcy5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvY29uc3RzL3BhZ2UtdHlwZXMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFO0lBQzlDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFO0NBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdlVHlwZSB9IGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGNvbnN0IFBhZ2VUeXBlcyA9IFtcbiAgeyBuYW1lOiAnUGFnZScsIHZhbHVlOiBQYWdlVHlwZS5TdGFuZGFyZFBhZ2UgfSxcbiAgeyBuYW1lOiAnUGFnZSAoTm90IEZvdW5kKScsIHZhbHVlOiBQYWdlVHlwZS5Ob3RGb3VuZFBhZ2UgfSxcbl07XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10eXBlcy5jb25zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvY29uc3RzL3BhZ2UtdHlwZXMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyx3RkFBd0Y7QUFDeEYsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUU7SUFDOUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUU7SUFDMUQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFO0lBQzFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRTtDQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZVR5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5cbi8vIEV2ZXJ5IHR5cGUgdGhlIHNlcnZlciBoYXMsIHNvIHRoZSBwYWdlcyBsaXN0IGxhYmVscyBldmVyeSByb3cuIFRoZSBQYWdlIGRpYWxvZyBvZmZlcnNcbi8vIG9ubHkgdGhlIHN0YW5kYXJkIGFuZCBub3QtZm91bmQgdHlwZXMgKENDLVQ0MTAyKS5cbmV4cG9ydCBjb25zdCBQYWdlVHlwZXMgPSBbXG4gIHsgbmFtZTogJ1BhZ2UnLCB2YWx1ZTogUGFnZVR5cGUuU3RhbmRhcmRQYWdlIH0sXG4gIHsgbmFtZTogJ1BhZ2UgKE5vdCBGb3VuZCknLCB2YWx1ZTogUGFnZVR5cGUuTm90Rm91bmRQYWdlIH0sXG4gIHsgbmFtZTogJ1BhZ2UnLCB2YWx1ZTogUGFnZVR5cGUuSG9tZVBhZ2UgfSxcbiAgeyBuYW1lOiAnQmxvZyBQb3N0JywgdmFsdWU6IFBhZ2VUeXBlLkJsb2dQb3N0IH0sXG5dO1xuIl19
@@ -1,9 +1,7 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, QueryList, ViewChildren, inject } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
2
2
  import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
3
3
  import { FsMessage } from '@firestitch/message';
4
- import { FsTextEditorComponent } from '@firestitch/text-editor';
5
- import { Subject, of } from 'rxjs';
6
- import { switchMap, takeUntil, tap } from 'rxjs/operators';
4
+ import { tap } from 'rxjs/operators';
7
5
  import { FS_CONTENT_CONFIG } from '../../../../injectors';
8
6
  import { FsSkeletonModule } from '@firestitch/skeleton';
9
7
  import { FormsModule } from '@angular/forms';
@@ -19,41 +17,29 @@ import * as i3 from "@firestitch/form";
19
17
  import * as i4 from "@angular/material/dialog";
20
18
  import * as i5 from "@firestitch/dialog";
21
19
  export class ContentLayoutComponent {
20
+ contentLayout = signal(null);
22
21
  _config = inject(FS_CONTENT_CONFIG);
23
22
  _data = inject(MAT_DIALOG_DATA);
24
23
  _dialogRef = inject(MatDialogRef);
25
24
  _message = inject(FsMessage);
26
- _cdRef = inject(ChangeDetectorRef);
27
- textEditors;
28
- contentLayout = null;
29
- editors = { content: true, styles: true };
30
- _destroy$ = new Subject();
31
- ngOnInit() {
32
- this._fetchData();
33
- }
34
- ngOnDestroy() {
35
- this._destroy$.next(null);
36
- this._destroy$.complete();
25
+ constructor() {
26
+ this._init();
37
27
  }
38
28
  save = () => {
39
- return this._config.saveContentLayout(this.contentLayout)
29
+ // Only the fields this dialog edits. Sending the whole layout re-sent the Layout Editor's
30
+ // copy of content and styles, which the server wrote over edits saved since (IEB-T292).
31
+ const { id, name, tag } = this.contentLayout();
32
+ return this._config.saveContentLayout({ id, name, tag })
40
33
  .pipe(tap((contentLayout) => {
41
34
  this._message.success('Saved Changes');
42
35
  this._dialogRef.close(contentLayout);
43
36
  }));
44
37
  };
45
- _fetchData() {
46
- of(this._data.contentLayout)
47
- .pipe(switchMap((contentLayout) => {
48
- return of(contentLayout);
49
- }), takeUntil(this._destroy$))
50
- .subscribe((contentLayout) => {
51
- this.contentLayout = { ...contentLayout };
52
- this._cdRef.markForCheck();
53
- });
38
+ _init() {
39
+ this.contentLayout.set({ ...this._data.contentLayout });
54
40
  }
55
41
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentLayoutComponent, isStandalone: true, 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 class=\"fs-column\">\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"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: [""], dependencies: [{ kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i3.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { kind: "component", type: i3.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "done", "closeData", "name"] }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ContentLayoutComponent, isStandalone: true, selector: "ng-component", 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 class=\"fs-column\">\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout().name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout().tag\"\n name=\"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: [""], dependencies: [{ kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i1.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i3.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { kind: "component", type: i3.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "done", "closeData", "name"] }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
43
  }
58
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ContentLayoutComponent, decorators: [{
59
45
  type: Component,
@@ -69,9 +55,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
69
55
  MatLabel,
70
56
  MatInput,
71
57
  MatDialogActions,
72
- ], 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 class=\"fs-column\">\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout.tag\"\n name=\"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" }]
73
- }], propDecorators: { textEditors: [{
74
- type: ViewChildren,
75
- args: [FsTextEditorComponent]
76
- }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2NvbnRlbnQtbGF5b3V0cy9jb21wb25lbnRzL2NvbnRlbnQtbGF5b3V0L2NvbnRlbnQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dC9jb250ZW50LWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxSSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBc0JuRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ3pCLE9BQU8sR0FBRyxNQUFNLENBQWtCLGlCQUFpQixDQUFDLENBQUM7SUFDckQsS0FBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoQyxVQUFVLEdBQUcsTUFBTSxDQUF1QyxZQUFZLENBQUMsQ0FBQztJQUN4RSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUlwQyxXQUFXLENBQW1DO0lBRTlDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDckIsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFFekMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFakMsUUFBUTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQ3RELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRU0sVUFBVTtRQUNoQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7YUFDekIsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzFCLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFFMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7dUdBaERVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLHdHQVFuQixxQkFBcUIsZ0RDaERyQyxxekJBNkJBLHlEREZRLGdCQUFnQix3S0FDaEIsV0FBVyxvd0NBQ1gsWUFBWSw0eENBQ1osY0FBYyxxb0JBSWQsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVE7OzJGQUlILHNCQUFzQjtrQkFuQmxDLFNBQVM7c0NBR1csdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixnQkFBZ0I7cUJBQ25COzhCQVdJLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZpcmVzdGl0Y2gvdGV4dC1lZGl0b3InO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRlNfQ09OVEVOVF9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbmplY3RvcnMnO1xuaW1wb3J0IHsgRnNDb250ZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGc1NrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2tlbGV0b24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29udGVudC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEZzRm9ybU1vZHVsZSxcbiAgICAgICAgRnNEaWFsb2dNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ1RpdGxlLFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxuICAgICAgICBNYXRGb3JtRmllbGQsXG4gICAgICAgIE1hdExhYmVsLFxuICAgICAgICBNYXRJbnB1dCxcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50TGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jb25maWcgPSBpbmplY3Q8RnNDb250ZW50Q29uZmlnPihGU19DT05URU5UX0NPTkZJRyk7XG4gIHByaXZhdGUgX2RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxDb250ZW50TGF5b3V0Q29tcG9uZW50Pj4oTWF0RGlhbG9nUmVmKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblxuICBAVmlld0NoaWxkcmVuKEZzVGV4dEVkaXRvckNvbXBvbmVudClcbiAgcHVibGljIHRleHRFZGl0b3JzOiBRdWVyeUxpc3Q8RnNUZXh0RWRpdG9yQ29tcG9uZW50PjtcblxuICBwdWJsaWMgY29udGVudExheW91dCA9IG51bGw7XG4gIHB1YmxpYyBlZGl0b3JzID0geyBjb250ZW50OiB0cnVlLCBzdHlsZXM6IHRydWUgfTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2ZldGNoRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuc2F2ZUNvbnRlbnRMYXlvdXQodGhpcy5jb250ZW50TGF5b3V0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoY29udGVudExheW91dCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU2F2ZWQgQ2hhbmdlcycpO1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShjb250ZW50TGF5b3V0KTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgX2ZldGNoRGF0YSgpOiB2b2lkIHtcbiAgICBvZih0aGlzLl9kYXRhLmNvbnRlbnRMYXlvdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChjb250ZW50TGF5b3V0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9mKGNvbnRlbnRMYXlvdXQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRlbnRMYXlvdXQpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZW50TGF5b3V0ID0geyAuLi5jb250ZW50TGF5b3V0IH07XG5cbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iLCI8Zm9ybSBmc0Zvcm0gW3N1Ym1pdF09XCJzYXZlXCIgKmZzU2tlbGV0b25Gb3JtPVwiY29udGVudExheW91dFwiPlxuICA8ZnMtZGlhbG9nPlxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlPnt7Y29udGVudExheW91dC5pZCA/ICdMYXlvdXQnIDogJ0xheW91dCBQYWdlJ319PC9oMT5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jb2x1bW5cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudExheW91dC5uYW1lXCJcbiAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5UYWc8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRMYXlvdXQudGFnXCJcbiAgICAgICAgICAgIG5hbWU9XCJ0YWdcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgICA8ZnMtZm9ybS1kaWFsb2ctYWN0aW9ucz5cbiAgICAgIDwvZnMtZm9ybS1kaWFsb2ctYWN0aW9ucz5cbiAgICA8L2Rpdj5cbiAgPC9mcy1kaWFsb2c+XG48L2Zvcm0+XG4iXX0=
58
+ ], 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 class=\"fs-column\">\n <mat-form-field>\n <mat-label>Name</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout().name\"\n name=\"name\"\n required>\n </mat-form-field>\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <input\n matInput\n [(ngModel)]=\"contentLayout().tag\"\n name=\"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" }]
59
+ }], ctorParameters: () => [] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2NvbnRlbnQtbGF5b3V0cy9jb21wb25lbnRzL2NvbnRlbnQtbGF5b3V0L2NvbnRlbnQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9jb250ZW50LWxheW91dHMvY29tcG9uZW50cy9jb250ZW50LWxheW91dC9jb250ZW50LWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFzQm5ELE1BQU0sT0FBTyxzQkFBc0I7SUFFMUIsYUFBYSxHQUFHLE1BQU0sQ0FBa0IsSUFBSSxDQUFDLENBQUM7SUFFN0MsT0FBTyxHQUFHLE1BQU0sQ0FBa0IsaUJBQWlCLENBQUMsQ0FBQztJQUNyRCxLQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQXVDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFckM7UUFDRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtRQUNqQiwwRkFBMEY7UUFDMUYsd0ZBQXdGO1FBQ3hGLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3JELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRU0sS0FBSztRQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQzt1R0E3QlUsc0JBQXNCOzJGQUF0QixzQkFBc0Isd0VDdENuQyw2ekJBNkJBLHlEREpRLGdCQUFnQix3S0FDaEIsV0FBVyxvd0NBQ1gsWUFBWSw0eENBQ1osY0FBYyxxb0JBSWQsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVE7OzJGQUlILHNCQUFzQjtrQkFuQmxDLFNBQVM7c0NBR1csdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixnQkFBZ0I7cUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZ1RpdGxlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dBY3Rpb25zIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRlNfQ09OVEVOVF9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi8uLi9pbmplY3RvcnMnO1xuaW1wb3J0IHsgRnNDb250ZW50Q29uZmlnLCBGc0NvbnRlbnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZzU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9za2VsZXRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kaWFsb2cnO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250ZW50LWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgRnNGb3JtTW9kdWxlLFxuICAgICAgICBGc0RpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0RGlhbG9nVGl0bGUsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcbiAgICAgICAgTWF0TGFiZWwsXG4gICAgICAgIE1hdElucHV0LFxuICAgICAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRMYXlvdXRDb21wb25lbnQge1xuXG4gIHB1YmxpYyBjb250ZW50TGF5b3V0ID0gc2lnbmFsPEZzQ29udGVudExheW91dD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBfY29uZmlnID0gaW5qZWN0PEZzQ29udGVudENvbmZpZz4oRlNfQ09OVEVOVF9DT05GSUcpO1xuICBwcml2YXRlIF9kYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdDxNYXREaWFsb2dSZWY8Q29udGVudExheW91dENvbXBvbmVudD4+KE1hdERpYWxvZ1JlZik7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoRnNNZXNzYWdlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pbml0KCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSA9ICgpID0+IHtcbiAgICAvLyBPbmx5IHRoZSBmaWVsZHMgdGhpcyBkaWFsb2cgZWRpdHMuIFNlbmRpbmcgdGhlIHdob2xlIGxheW91dCByZS1zZW50IHRoZSBMYXlvdXQgRWRpdG9yJ3NcbiAgICAvLyBjb3B5IG9mIGNvbnRlbnQgYW5kIHN0eWxlcywgd2hpY2ggdGhlIHNlcnZlciB3cm90ZSBvdmVyIGVkaXRzIHNhdmVkIHNpbmNlIChJRUItVDI5MikuXG4gICAgY29uc3QgeyBpZCwgbmFtZSwgdGFnIH0gPSB0aGlzLmNvbnRlbnRMYXlvdXQoKTtcblxuICAgIHJldHVybiB0aGlzLl9jb25maWcuc2F2ZUNvbnRlbnRMYXlvdXQoeyBpZCwgbmFtZSwgdGFnIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjb250ZW50TGF5b3V0KSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdTYXZlZCBDaGFuZ2VzJyk7XG4gICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKGNvbnRlbnRMYXlvdXQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRMYXlvdXQuc2V0KHsgLi4udGhpcy5fZGF0YS5jb250ZW50TGF5b3V0IH0pO1xuICB9XG5cbn1cbiIsIjxmb3JtIGZzRm9ybSBbc3VibWl0XT1cInNhdmVcIiAqZnNTa2VsZXRvbkZvcm09XCJjb250ZW50TGF5b3V0KClcIj5cbiAgPGZzLWRpYWxvZz5cbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT57e2NvbnRlbnRMYXlvdXQoKS5pZCA/ICdMYXlvdXQnIDogJ0xheW91dCBQYWdlJ319PC9oMT5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jb2x1bW5cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudExheW91dCgpLm5hbWVcIlxuICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPlRhZzwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudExheW91dCgpLnRhZ1wiXG4gICAgICAgICAgICBuYW1lPVwidGFnXCI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPGZzLWZvcm0tZGlhbG9nLWFjdGlvbnM+XG4gICAgICA8L2ZzLWZvcm0tZGlhbG9nLWFjdGlvbnM+XG4gICAgPC9kaXY+XG4gIDwvZnMtZGlhbG9nPlxuPC9mb3JtPlxuIl19