@firestitch/content-widget 12.1.1 → 12.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.d.ts +16 -0
- package/app/content-widget/components/content-widget-renderer/index.d.ts +1 -0
- package/app/content-widget/fs-content-widget.module.d.ts +5 -4
- package/bundles/firestitch-content-widget.umd.js +77 -23
- package/bundles/firestitch-content-widget.umd.js.map +1 -1
- package/esm2015/app/content-widget/components/content-widget/content-widget.component.js +3 -3
- package/esm2015/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.js +52 -0
- package/esm2015/app/content-widget/components/content-widget-renderer/index.js +2 -0
- package/esm2015/app/content-widget/fs-content-widget.module.js +5 -2
- package/esm2015/app/content-widgets/components/content-widget/content-widget.component.js +4 -4
- package/fesm2015/firestitch-content-widget.js +54 -6
- package/fesm2015/firestitch-content-widget.js.map +1 -1
- package/package.json +1 -1
package/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AfterViewChecked, ElementRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class FsContentWidgetRendererComponent implements OnDestroy, AfterViewChecked {
|
|
5
|
+
private _router;
|
|
6
|
+
private _el;
|
|
7
|
+
content: any;
|
|
8
|
+
private destroy$;
|
|
9
|
+
constructor(_router: Router, _el: ElementRef);
|
|
10
|
+
ngAfterViewChecked(): void;
|
|
11
|
+
get el(): any;
|
|
12
|
+
registerHrefs(): void;
|
|
13
|
+
ngOnDestroy(): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FsContentWidgetRendererComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsContentWidgetRendererComponent, "fs-content-widget-renderer", never, { "content": "content"; }, {}, never, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './content-widget-renderer.component';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ModuleWithProviders } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./components/content-widget/content-widget.component";
|
|
4
|
-
import * as i2 from "
|
|
5
|
-
import * as i3 from "@
|
|
3
|
+
import * as i1 from "./components/content-widget-renderer/content-widget-renderer.component";
|
|
4
|
+
import * as i2 from "./components/content-widget/content-widget.component";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "@firestitch/html-editor";
|
|
6
7
|
export declare class FsContentWidgetModule {
|
|
7
8
|
static forRoot(): ModuleWithProviders<FsContentWidgetModule>;
|
|
8
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsContentWidgetModule, never>;
|
|
9
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FsContentWidgetModule, [typeof i1.FsContentWidgetComponent], [typeof
|
|
10
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FsContentWidgetModule, [typeof i1.FsContentWidgetRendererComponent, typeof i2.FsContentWidgetComponent], [typeof i3.CommonModule, typeof i4.FsHtmlEditorModule], [typeof i2.FsContentWidgetComponent]>;
|
|
10
11
|
static ɵinj: i0.ɵɵInjectorDeclaration<FsContentWidgetModule>;
|
|
11
12
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/material/button'), require('@angular/material/tabs'), require('@angular/material/dialog'), require('@angular/forms'), require('@angular/material/input'), require('@angular/material/form-field'), require('@firestitch/list'), require('@firestitch/date'), require('@firestitch/dialog'), require('@firestitch/form'), require('@firestitch/html-editor'), require('@firestitch/text-editor'), require('rxjs/operators'), require('@firestitch/message'), require('@firestitch/filter'), require('rxjs')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@firestitch/content-widget', ['exports', '@angular/core', '@angular/common', '@angular/material/button', '@angular/material/tabs', '@angular/material/dialog', '@angular/forms', '@angular/material/input', '@angular/material/form-field', '@firestitch/list', '@firestitch/date', '@firestitch/dialog', '@firestitch/form', '@firestitch/html-editor', '@firestitch/text-editor', 'rxjs/operators', '@firestitch/message', '@firestitch/filter', 'rxjs'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch["content-widget"] = {}), global.ng.core, global.ng.common, global.ng.material.button, global.ng.material.tabs, global.ng.material.dialog, global.ng.forms, global.ng.material.input, global.ng.material.formField, global.i2$1, global.i3$1, global.i2, global.i9, global.
|
|
5
|
-
})(this, (function (exports, i0,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/material/button'), require('@angular/material/tabs'), require('@angular/material/dialog'), require('@angular/forms'), require('@angular/material/input'), require('@angular/material/form-field'), require('@firestitch/list'), require('@firestitch/date'), require('@firestitch/dialog'), require('@firestitch/form'), require('@firestitch/html-editor'), require('@firestitch/text-editor'), require('rxjs/operators'), require('@firestitch/message'), require('@firestitch/filter'), require('rxjs'), require('@angular/router')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@firestitch/content-widget', ['exports', '@angular/core', '@angular/common', '@angular/material/button', '@angular/material/tabs', '@angular/material/dialog', '@angular/forms', '@angular/material/input', '@angular/material/form-field', '@firestitch/list', '@firestitch/date', '@firestitch/dialog', '@firestitch/form', '@firestitch/html-editor', '@firestitch/text-editor', 'rxjs/operators', '@firestitch/message', '@firestitch/filter', 'rxjs', '@angular/router'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch["content-widget"] = {}), global.ng.core, global.ng.common, global.ng.material.button, global.ng.material.tabs, global.ng.material.dialog, global.ng.forms, global.ng.material.input, global.ng.material.formField, global.i2$1, global.i3$1, global.i2, global.i9, global.i5, global.i4, global.rxjs.operators, global.i1, global.filter, global.rxjs, global.ng.router));
|
|
5
|
+
})(this, (function (exports, i0, i3$2, i7, i3, i10, i8, i11, i6, i2$1, i3$1, i2, i9, i5, i4, operators, i1, filter, rxjs, i1$1) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopNamespace(e) {
|
|
8
8
|
if (e && e.__esModule) return e;
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
|
|
26
|
-
var
|
|
26
|
+
var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$2);
|
|
27
27
|
var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
|
|
28
28
|
var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
|
|
29
29
|
var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
|
|
@@ -34,9 +34,10 @@
|
|
|
34
34
|
var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
|
|
35
35
|
var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
|
|
36
36
|
var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
|
|
37
|
-
var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
|
|
38
37
|
var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
|
|
38
|
+
var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
|
|
39
39
|
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
|
40
|
+
var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
|
|
40
41
|
|
|
41
42
|
var FsContentWidgetComponent$1 = /** @class */ (function () {
|
|
42
43
|
function FsContentWidgetComponent(_message, _data) {
|
|
@@ -59,7 +60,7 @@
|
|
|
59
60
|
return FsContentWidgetComponent;
|
|
60
61
|
}());
|
|
61
62
|
FsContentWidgetComponent$1.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetComponent$1, deps: [{ token: i1__namespace.FsMessage }, { token: i10.MAT_DIALOG_DATA }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
62
|
-
FsContentWidgetComponent$1.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent$1, selector: "ng-component", ngImport: i0__namespace, template: "\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"
|
|
63
|
+
FsContentWidgetComponent$1.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent$1, selector: "ng-component", ngImport: i0__namespace, template: "\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n", styles: ["mat-form-field{width:100%}fs-html-editor{min-height:400px;display:block;overflow:hidden}.subtitle{font-size:60%;line-height:normal}\n"], components: [{ type: i2__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3__namespace.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i4__namespace.FsTextEditorComponent, selector: "fs-text-editor", inputs: ["config", "scrollable"], outputs: ["init", "blur"] }, { type: i5__namespace.FsHtmlEditorComponent, selector: "fs-html-editor", inputs: ["config"] }, { type: i6__namespace.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i7__namespace.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9__namespace.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: i10__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i10__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3__namespace.MatTabContent, selector: "[matTabContent]" }, { type: i8__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11__namespace.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: i8__namespace.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__namespace.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i8__namespace.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
|
|
63
64
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetComponent$1, decorators: [{
|
|
64
65
|
type: i0.Component,
|
|
65
66
|
args: [{
|
|
@@ -149,7 +150,7 @@
|
|
|
149
150
|
}());
|
|
150
151
|
FsContentWidgetsModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetsModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
151
152
|
FsContentWidgetsModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetsModule, declarations: [FsContentWidgetsComponent,
|
|
152
|
-
FsContentWidgetComponent$1], imports: [
|
|
153
|
+
FsContentWidgetComponent$1], imports: [i3$2.CommonModule,
|
|
153
154
|
i8.FormsModule,
|
|
154
155
|
i10.MatDialogModule,
|
|
155
156
|
i11.MatInputModule,
|
|
@@ -159,11 +160,11 @@
|
|
|
159
160
|
i2$1.FsListModule,
|
|
160
161
|
i3$1.FsDateModule,
|
|
161
162
|
i9.FsFormModule,
|
|
162
|
-
|
|
163
|
+
i5.FsHtmlEditorModule,
|
|
163
164
|
i2.FsDialogModule,
|
|
164
|
-
|
|
165
|
+
i4.FsTextEditorModule], exports: [FsContentWidgetsComponent] });
|
|
165
166
|
FsContentWidgetsModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetsModule, imports: [[
|
|
166
|
-
|
|
167
|
+
i3$2.CommonModule,
|
|
167
168
|
i8.FormsModule,
|
|
168
169
|
i10.MatDialogModule,
|
|
169
170
|
i11.MatInputModule,
|
|
@@ -173,15 +174,15 @@
|
|
|
173
174
|
i2$1.FsListModule,
|
|
174
175
|
i3$1.FsDateModule,
|
|
175
176
|
i9.FsFormModule,
|
|
176
|
-
|
|
177
|
+
i5.FsHtmlEditorModule,
|
|
177
178
|
i2.FsDialogModule,
|
|
178
|
-
|
|
179
|
+
i4.FsTextEditorModule,
|
|
179
180
|
]] });
|
|
180
181
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetsModule, decorators: [{
|
|
181
182
|
type: i0.NgModule,
|
|
182
183
|
args: [{
|
|
183
184
|
imports: [
|
|
184
|
-
|
|
185
|
+
i3$2.CommonModule,
|
|
185
186
|
i8.FormsModule,
|
|
186
187
|
i10.MatDialogModule,
|
|
187
188
|
i11.MatInputModule,
|
|
@@ -191,9 +192,9 @@
|
|
|
191
192
|
i2$1.FsListModule,
|
|
192
193
|
i3$1.FsDateModule,
|
|
193
194
|
i9.FsFormModule,
|
|
194
|
-
|
|
195
|
+
i5.FsHtmlEditorModule,
|
|
195
196
|
i2.FsDialogModule,
|
|
196
|
-
|
|
197
|
+
i4.FsTextEditorModule,
|
|
197
198
|
],
|
|
198
199
|
exports: [
|
|
199
200
|
FsContentWidgetsComponent,
|
|
@@ -207,6 +208,57 @@
|
|
|
207
208
|
|
|
208
209
|
var FS_CONTENT_WIDGET_CONFIG = new i0.InjectionToken('fs-content-widget-config');
|
|
209
210
|
|
|
211
|
+
var FsContentWidgetRendererComponent = /** @class */ (function () {
|
|
212
|
+
function FsContentWidgetRendererComponent(_router, _el) {
|
|
213
|
+
this._router = _router;
|
|
214
|
+
this._el = _el;
|
|
215
|
+
this.destroy$ = new rxjs.Subject();
|
|
216
|
+
}
|
|
217
|
+
FsContentWidgetRendererComponent.prototype.ngAfterViewChecked = function () {
|
|
218
|
+
this.registerHrefs();
|
|
219
|
+
};
|
|
220
|
+
Object.defineProperty(FsContentWidgetRendererComponent.prototype, "el", {
|
|
221
|
+
get: function () {
|
|
222
|
+
return this._el.nativeElement;
|
|
223
|
+
},
|
|
224
|
+
enumerable: false,
|
|
225
|
+
configurable: true
|
|
226
|
+
});
|
|
227
|
+
FsContentWidgetRendererComponent.prototype.registerHrefs = function () {
|
|
228
|
+
var _this = this;
|
|
229
|
+
Array.from(this.el.querySelectorAll('a[href]'))
|
|
230
|
+
.filter(function (el) {
|
|
231
|
+
return el.getAttribute('href').match(/^\//);
|
|
232
|
+
})
|
|
233
|
+
.forEach(function (el) {
|
|
234
|
+
el.addEventListener('click', function (event) {
|
|
235
|
+
if (!event.shiftKey && !event.ctrlKey) {
|
|
236
|
+
event.preventDefault();
|
|
237
|
+
var href = el.getAttribute('href');
|
|
238
|
+
_this._router.navigateByUrl(href);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
};
|
|
243
|
+
FsContentWidgetRendererComponent.prototype.ngOnDestroy = function () {
|
|
244
|
+
this.destroy$.next();
|
|
245
|
+
this.destroy$.complete();
|
|
246
|
+
};
|
|
247
|
+
return FsContentWidgetRendererComponent;
|
|
248
|
+
}());
|
|
249
|
+
FsContentWidgetRendererComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetRendererComponent, deps: [{ token: i1__namespace$1.Router }, { token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
250
|
+
FsContentWidgetRendererComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetRendererComponent, selector: "fs-content-widget-renderer", inputs: { content: "content" }, ngImport: i0__namespace, template: "<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>", styles: [":host ::ng-deep img{max-width:100%}\n"], components: [{ type: i5__namespace.FsHtmlRendererComponent, selector: "fs-html-renderer", inputs: ["html"] }], directives: [{ type: i3__namespace$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
251
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetRendererComponent, decorators: [{
|
|
252
|
+
type: i0.Component,
|
|
253
|
+
args: [{
|
|
254
|
+
selector: 'fs-content-widget-renderer',
|
|
255
|
+
templateUrl: './content-widget-renderer.component.html',
|
|
256
|
+
styleUrls: ['./content-widget-renderer.component.scss'],
|
|
257
|
+
}]
|
|
258
|
+
}], ctorParameters: function () { return [{ type: i1__namespace$1.Router }, { type: i0__namespace.ElementRef }]; }, propDecorators: { content: [{
|
|
259
|
+
type: i0.Input
|
|
260
|
+
}] } });
|
|
261
|
+
|
|
210
262
|
var FsContentWidgetComponent = /** @class */ (function () {
|
|
211
263
|
function FsContentWidgetComponent(config, _cdRef) {
|
|
212
264
|
this.config = config;
|
|
@@ -229,7 +281,7 @@
|
|
|
229
281
|
return FsContentWidgetComponent;
|
|
230
282
|
}());
|
|
231
283
|
FsContentWidgetComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetComponent, deps: [{ token: FS_CONTENT_WIDGET_CONFIG }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
232
|
-
FsContentWidgetComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "fs-content-widget", inputs: { tag: "tag" }, ngImport: i0__namespace, template: "<fs-
|
|
284
|
+
FsContentWidgetComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "fs-content-widget", inputs: { tag: "tag" }, ngImport: i0__namespace, template: "<fs-content-widget-renderer *ngIf=\"content\" [content]=\"content\"></fs-content-widget-renderer>", styles: [":host ::ng-deep img{max-width:100%}\n"], components: [{ type: FsContentWidgetRendererComponent, selector: "fs-content-widget-renderer", inputs: ["content"] }], directives: [{ type: i3__namespace$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
233
285
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetComponent, decorators: [{
|
|
234
286
|
type: i0.Component,
|
|
235
287
|
args: [{
|
|
@@ -257,23 +309,25 @@
|
|
|
257
309
|
return FsContentWidgetModule;
|
|
258
310
|
}());
|
|
259
311
|
FsContentWidgetModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
260
|
-
FsContentWidgetModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetModule, declarations: [
|
|
261
|
-
|
|
312
|
+
FsContentWidgetModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetModule, declarations: [FsContentWidgetRendererComponent,
|
|
313
|
+
FsContentWidgetComponent], imports: [i3$2.CommonModule,
|
|
314
|
+
i5.FsHtmlEditorModule], exports: [FsContentWidgetComponent] });
|
|
262
315
|
FsContentWidgetModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetModule, imports: [[
|
|
263
|
-
|
|
264
|
-
|
|
316
|
+
i3$2.CommonModule,
|
|
317
|
+
i5.FsHtmlEditorModule,
|
|
265
318
|
]] });
|
|
266
319
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsContentWidgetModule, decorators: [{
|
|
267
320
|
type: i0.NgModule,
|
|
268
321
|
args: [{
|
|
269
322
|
imports: [
|
|
270
|
-
|
|
271
|
-
|
|
323
|
+
i3$2.CommonModule,
|
|
324
|
+
i5.FsHtmlEditorModule,
|
|
272
325
|
],
|
|
273
326
|
exports: [
|
|
274
327
|
FsContentWidgetComponent,
|
|
275
328
|
],
|
|
276
329
|
declarations: [
|
|
330
|
+
FsContentWidgetRendererComponent,
|
|
277
331
|
FsContentWidgetComponent,
|
|
278
332
|
],
|
|
279
333
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-content-widget.umd.js","sources":["../../src/app/content-widgets/components/content-widget/content-widget.component.ts","../../src/app/content-widgets/components/content-widget/content-widget.component.html","../../src/app/content-widgets/components/content-widgets/content-widgets.component.ts","../../src/app/content-widgets/components/content-widgets/content-widgets.component.html","../../src/app/content-widgets/fs-content-widgets.module.ts","../../src/app/content-widget/injectors/content-wiget.injector.ts","../../src/app/content-widget/components/content-widget/content-widget.component.ts","../../src/app/content-widget/components/content-widget/content-widget.component.html","../../src/app/content-widget/fs-content-widget.module.ts","../../src/firestitch-content-widget.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\n\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { FsMessage } from '@firestitch/message';\nimport { Observable } from 'rxjs';\n\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnInit {\n\n public contentWidget;\n public htmlEditorConfig: FsHtmlEditorConfig;\n \n private _saveContentWidget: (contentWidget: any) => Observable<any>;\n\n public constructor(\n private _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n ) {\n }\n\n public ngOnInit(): void {\n this._saveContentWidget = this._data.saveContentWidget;\n this.htmlEditorConfig = this._data.htmlEditorConfig || {};\n this.contentWidget = { ...this._data.contentWidget };\n }\n\n public save = () => {\n return this._saveContentWidget(this.contentWidget)\n .pipe(\n tap((contentWidget) => {\n this.contentWidget = { ...this.contentWidget, ...contentWidget };\n this._message.success('Saved Changes');\n }),\n );\n }\n\n}\n","\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Component, ViewChild, OnInit, OnDestroy, Input } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { FsContentWidgetComponent } from '../content-widget/content-widget.component';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\n\n@Component({\n selector: 'fs-content-widgets',\n templateUrl: './content-widgets.component.html',\n styleUrls: ['./content-widgets.component.scss'],\n})\nexport class FsContentWidgetsComponent implements OnInit, OnDestroy {\n\n @Input() public fetchContentWidgets: (query?: string) => Observable<{ contentWigets: any[], paging?: any }>;\n @Input() public saveContentWidget: (contentWidget: any) => Observable<any>;\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent, { static: true })\n public list: FsListComponent;\n\n public config: FsListConfig;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this.config = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n fetch: (query) => {\n return this.fetchContentWidgets(query.keyword)\n .pipe(\n map((data: any) => ({ data: data.contentWidgets })),\n );\n },\n };\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public open(contentWidget): void {\n const dialogRef = this._dialog.open(FsContentWidgetComponent, {\n width: '90%',\n data: { \n contentWidget,\n htmlEditorConfig: this.htmlEditorConfig,\n saveContentWidget: this.saveContentWidget,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.list.reload();\n });\n }\n\n}\n","<fs-list [config]=\"config\">\n <fs-list-column class=\"name\">\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Preview</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"preview-container\">\n <div class=\"preview-content\">\n <div [innerHTML]=\"row.content\"></div>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"modified\">\n <ng-template fs-list-header>Modified</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.modifiedDate\"></fs-date-ago>\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 { FsContentWidgetComponent } from './components/content-widget';\nimport { FsContentWidgetsComponent } from './components/content-widgets';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n FsContentWidgetsComponent,\n ],\n declarations: [\n FsContentWidgetsComponent,\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetsModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetsModule> {\n return {\n ngModule: FsContentWidgetsModule,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_WIDGET_CONFIG = new InjectionToken<any>('fs-content-widget-config');\n","import { ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FS_CONTENT_WIDGET_CONFIG } from '../../injectors';\nimport { FsContentWidgetConfig } from '../../interfaces/content-widget-config';\n\n\n@Component({\n selector: 'fs-content-widget',\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnDestroy, OnInit {\n\n public content;\n\n private destroy$ = new Subject();\n\n @Input() public tag: string;\n\n constructor(\n @Inject(FS_CONTENT_WIDGET_CONFIG) public config: FsContentWidgetConfig,\n private _cdRef: ChangeDetectorRef,\n ) { }\n \n public ngOnInit(): void {\n this.config.fetchContentWidget(this.tag)\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((content) => {\n this.content = content;\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentWidgetComponent } from './components/content-widget';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentWidgetComponent,\n ],\n declarations: [\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetModule> {\n return {\n ngModule: FsContentWidgetModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["tap","FsContentWidgetComponent","MAT_DIALOG_DATA","Component","Inject","Subject","ItemType","map","takeUntil","FsListComponent","Input","ViewChild","CommonModule","FormsModule","MatDialogModule","MatInputModule","MatFormFieldModule","MatButtonModule","MatTabsModule","FsListModule","FsDateModule","FsFormModule","FsHtmlEditorModule","FsDialogModule","FsTextEditorModule","NgModule","InjectionToken"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-content-widget.umd.js","sources":["../../src/app/content-widgets/components/content-widget/content-widget.component.ts","../../src/app/content-widgets/components/content-widget/content-widget.component.html","../../src/app/content-widgets/components/content-widgets/content-widgets.component.ts","../../src/app/content-widgets/components/content-widgets/content-widgets.component.html","../../src/app/content-widgets/fs-content-widgets.module.ts","../../src/app/content-widget/injectors/content-wiget.injector.ts","../../src/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.ts","../../src/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.html","../../src/app/content-widget/components/content-widget/content-widget.component.ts","../../src/app/content-widget/components/content-widget/content-widget.component.html","../../src/app/content-widget/fs-content-widget.module.ts","../../src/firestitch-content-widget.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\n\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { FsMessage } from '@firestitch/message';\nimport { Observable } from 'rxjs';\n\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnInit {\n\n public contentWidget;\n public htmlEditorConfig: FsHtmlEditorConfig;\n \n private _saveContentWidget: (contentWidget: any) => Observable<any>;\n\n public constructor(\n private _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n ) {\n }\n\n public ngOnInit(): void {\n this._saveContentWidget = this._data.saveContentWidget;\n this.htmlEditorConfig = this._data.htmlEditorConfig || {};\n this.contentWidget = { ...this._data.contentWidget };\n }\n\n public save = () => {\n return this._saveContentWidget(this.contentWidget)\n .pipe(\n tap((contentWidget) => {\n this.contentWidget = { ...this.contentWidget, ...contentWidget };\n this._message.success('Saved Changes');\n }),\n );\n }\n\n}\n","\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Component, ViewChild, OnInit, OnDestroy, Input } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { FsContentWidgetComponent } from '../content-widget/content-widget.component';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\n\n@Component({\n selector: 'fs-content-widgets',\n templateUrl: './content-widgets.component.html',\n styleUrls: ['./content-widgets.component.scss'],\n})\nexport class FsContentWidgetsComponent implements OnInit, OnDestroy {\n\n @Input() public fetchContentWidgets: (query?: string) => Observable<{ contentWigets: any[], paging?: any }>;\n @Input() public saveContentWidget: (contentWidget: any) => Observable<any>;\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent, { static: true })\n public list: FsListComponent;\n\n public config: FsListConfig;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this.config = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n fetch: (query) => {\n return this.fetchContentWidgets(query.keyword)\n .pipe(\n map((data: any) => ({ data: data.contentWidgets })),\n );\n },\n };\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public open(contentWidget): void {\n const dialogRef = this._dialog.open(FsContentWidgetComponent, {\n width: '90%',\n data: { \n contentWidget,\n htmlEditorConfig: this.htmlEditorConfig,\n saveContentWidget: this.saveContentWidget,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.list.reload();\n });\n }\n\n}\n","<fs-list [config]=\"config\">\n <fs-list-column class=\"name\">\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Preview</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"preview-container\">\n <div class=\"preview-content\">\n <div [innerHTML]=\"row.content\"></div>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"modified\">\n <ng-template fs-list-header>Modified</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.modifiedDate\"></fs-date-ago>\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 { FsContentWidgetComponent } from './components/content-widget';\nimport { FsContentWidgetsComponent } from './components/content-widgets';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n FsContentWidgetsComponent,\n ],\n declarations: [\n FsContentWidgetsComponent,\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetsModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetsModule> {\n return {\n ngModule: FsContentWidgetsModule,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_WIDGET_CONFIG = new InjectionToken<any>('fs-content-widget-config');\n","import { AfterViewChecked, Component, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-content-widget-renderer',\n templateUrl: './content-widget-renderer.component.html',\n styleUrls: ['./content-widget-renderer.component.scss'],\n})\nexport class FsContentWidgetRendererComponent implements OnDestroy, AfterViewChecked {\n\n @Input() public content;\n\n private destroy$ = new Subject();\n\n constructor(\n private _router: Router,\n private _el: ElementRef,\n ) { }\n \n public ngAfterViewChecked(): void {\n this.registerHrefs();\n }\n\n public get el(): any {\n return this._el.nativeElement;\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 ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>","import { ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FS_CONTENT_WIDGET_CONFIG } from '../../injectors';\nimport { FsContentWidgetConfig } from '../../interfaces/content-widget-config';\n\n\n@Component({\n selector: 'fs-content-widget',\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnDestroy, OnInit {\n\n public content;\n\n private destroy$ = new Subject();\n\n @Input() public tag: string;\n\n constructor(\n @Inject(FS_CONTENT_WIDGET_CONFIG) public config: FsContentWidgetConfig,\n private _cdRef: ChangeDetectorRef,\n ) { }\n \n public ngOnInit(): void {\n this.config.fetchContentWidget(this.tag)\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((content) => {\n this.content = content;\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","<fs-content-widget-renderer *ngIf=\"content\" [content]=\"content\"></fs-content-widget-renderer>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentWidgetComponent } from './components/content-widget';\nimport { FsContentWidgetRendererComponent } from './components/content-widget-renderer';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentWidgetComponent,\n ],\n declarations: [\n FsContentWidgetRendererComponent,\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetModule> {\n return {\n ngModule: FsContentWidgetModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["tap","FsContentWidgetComponent","MAT_DIALOG_DATA","Component","Inject","Subject","ItemType","map","takeUntil","FsListComponent","Input","ViewChild","CommonModule","FormsModule","MatDialogModule","MatInputModule","MatFormFieldModule","MatButtonModule","MatTabsModule","FsListModule","FsDateModule","FsFormModule","FsHtmlEditorModule","FsDialogModule","FsTextEditorModule","NgModule","InjectionToken"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Subject } from 'rxjs';
|
|
|
3
3
|
import { takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { FS_CONTENT_WIDGET_CONFIG } from '../../injectors';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
6
|
+
import * as i1 from "../content-widget-renderer/content-widget-renderer.component";
|
|
7
7
|
import * as i2 from "@angular/common";
|
|
8
8
|
export class FsContentWidgetComponent {
|
|
9
9
|
constructor(config, _cdRef) {
|
|
@@ -25,7 +25,7 @@ export class FsContentWidgetComponent {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
FsContentWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent, deps: [{ token: FS_CONTENT_WIDGET_CONFIG }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
FsContentWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "fs-content-widget", inputs: { tag: "tag" }, ngImport: i0, template: "<fs-
|
|
28
|
+
FsContentWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "fs-content-widget", inputs: { tag: "tag" }, ngImport: i0, template: "<fs-content-widget-renderer *ngIf=\"content\" [content]=\"content\"></fs-content-widget-renderer>", styles: [":host ::ng-deep img{max-width:100%}\n"], components: [{ type: i1.FsContentWidgetRendererComponent, selector: "fs-content-widget-renderer", inputs: ["content"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
39
39
|
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tag: [{
|
|
40
40
|
type: Input
|
|
41
41
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb250ZW50LXdpZGdldC9jb21wb25lbnRzL2NvbnRlbnQtd2lkZ2V0L2NvbnRlbnQtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29udGVudC13aWRnZXQvY29tcG9uZW50cy9jb250ZW50LXdpZGdldC9jb250ZW50LXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBUzNELE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFDMkMsTUFBNkIsRUFDOUQsTUFBeUI7UUFEUSxXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUM5RCxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQU4zQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQU83QixDQUFDO0lBRUUsUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUN2QyxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekI7YUFDQSxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3NIQTNCVSx3QkFBd0Isa0JBU3pCLHdCQUF3QjswR0FUdkIsd0JBQXdCLGlGQ2JyQyxtR0FBNkY7NEZEYWhGLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0M7OzBCQVVJLE1BQU07MkJBQUMsd0JBQXdCOzRFQUhsQixHQUFHO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRlNfQ09OVEVOVF9XSURHRVRfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IEZzQ29udGVudFdpZGdldENvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29udGVudC13aWRnZXQtY29uZmlnJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1jb250ZW50LXdpZGdldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZzQ29udGVudFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICBwdWJsaWMgY29udGVudDtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBASW5wdXQoKSBwdWJsaWMgdGFnOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGU19DT05URU5UX1dJREdFVF9DT05GSUcpIHB1YmxpYyBjb25maWc6IEZzQ29udGVudFdpZGdldENvbmZpZyxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkgeyB9XG4gIFxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcuZmV0Y2hDb250ZW50V2lkZ2V0KHRoaXMudGFnKVxuICAgIC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgIClcbiAgICAuc3Vic2NyaWJlKChjb250ZW50KSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbn1cbiIsIjxmcy1jb250ZW50LXdpZGdldC1yZW5kZXJlciAqbmdJZj1cImNvbnRlbnRcIiBbY29udGVudF09XCJjb250ZW50XCI+PC9mcy1jb250ZW50LXdpZGdldC1yZW5kZXJlcj4iXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, ElementRef, Input } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
import * as i2 from "@firestitch/html-editor";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
export class FsContentWidgetRendererComponent {
|
|
9
|
+
constructor(_router, _el) {
|
|
10
|
+
this._router = _router;
|
|
11
|
+
this._el = _el;
|
|
12
|
+
this.destroy$ = new Subject();
|
|
13
|
+
}
|
|
14
|
+
ngAfterViewChecked() {
|
|
15
|
+
this.registerHrefs();
|
|
16
|
+
}
|
|
17
|
+
get el() {
|
|
18
|
+
return this._el.nativeElement;
|
|
19
|
+
}
|
|
20
|
+
registerHrefs() {
|
|
21
|
+
Array.from(this.el.querySelectorAll('a[href]'))
|
|
22
|
+
.filter((el) => {
|
|
23
|
+
return el.getAttribute('href').match(/^\//);
|
|
24
|
+
})
|
|
25
|
+
.forEach((el) => {
|
|
26
|
+
el.addEventListener('click', (event) => {
|
|
27
|
+
if (!event.shiftKey && !event.ctrlKey) {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
const href = el.getAttribute('href');
|
|
30
|
+
this._router.navigateByUrl(href);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.destroy$.next();
|
|
37
|
+
this.destroy$.complete();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
FsContentWidgetRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetRendererComponent, deps: [{ token: i1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
FsContentWidgetRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetRendererComponent, selector: "fs-content-widget-renderer", inputs: { content: "content" }, ngImport: i0, template: "<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>", styles: [":host ::ng-deep img{max-width:100%}\n"], components: [{ type: i2.FsHtmlRendererComponent, selector: "fs-html-renderer", inputs: ["html"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetRendererComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: 'fs-content-widget-renderer',
|
|
46
|
+
templateUrl: './content-widget-renderer.component.html',
|
|
47
|
+
styleUrls: ['./content-widget-renderer.component.scss'],
|
|
48
|
+
}]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i0.ElementRef }]; }, propDecorators: { content: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC13aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb250ZW50LXdpZGdldC9jb21wb25lbnRzL2NvbnRlbnQtd2lkZ2V0LXJlbmRlcmVyL2NvbnRlbnQtd2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29udGVudC13aWRnZXQvY29tcG9uZW50cy9jb250ZW50LXdpZGdldC1yZW5kZXJlci9jb250ZW50LXdpZGdldC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVEvQixNQUFNLE9BQU8sZ0NBQWdDO0lBTTNDLFlBQ1UsT0FBZSxFQUNmLEdBQWU7UUFEZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUpqQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUs3QixDQUFDO0lBRUUsa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUMsTUFBTSxDQUFDLENBQUMsRUFBVyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsQ0FBQyxFQUFXLEVBQUUsRUFBRTtZQUN2QixFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dCQUNoRCxJQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7b0JBQ3BDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs4SEF0Q1UsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0Msa0dDWDdDLDRFQUFzRTs0RkRXekQsZ0NBQWdDO2tCQUw1QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSwwQ0FBMEM7b0JBQ3ZELFNBQVMsRUFBRSxDQUFDLDBDQUEwQyxDQUFDO2lCQUN4RDtzSEFHaUIsT0FBTztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWNvbnRlbnQtd2lkZ2V0LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtd2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGVudC13aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNDb250ZW50V2lkZ2V0UmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb250ZW50O1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLFxuICApIHsgfVxuICBcbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVySHJlZnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckhyZWZzKCk6IHZvaWQge1xuICAgIEFycmF5LmZyb20odGhpcy5lbC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdJykpXG4gICAgICAuZmlsdGVyKChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWwuZ2V0QXR0cmlidXRlKCdocmVmJykubWF0Y2goL15cXC8vKTtcbiAgICAgIH0pXG4gICAgICAuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIGlmKCFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBlbC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKGhyZWYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiPGZzLWh0bWwtcmVuZGVyZXIgKm5nSWY9XCJjb250ZW50XCIgW2h0bWxdPVwiY29udGVudFwiPjwvZnMtaHRtbC1yZW5kZXJlcj4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './content-widget-renderer.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbnRlbnQtd2lkZ2V0L2NvbXBvbmVudHMvY29udGVudC13aWRnZXQtcmVuZGVyZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGVudC13aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FsHtmlEditorModule } from '@firestitch/html-editor';
|
|
4
4
|
import { FsContentWidgetComponent } from './components/content-widget';
|
|
5
|
+
import { FsContentWidgetRendererComponent } from './components/content-widget-renderer';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export class FsContentWidgetModule {
|
|
7
8
|
static forRoot() {
|
|
@@ -11,7 +12,8 @@ export class FsContentWidgetModule {
|
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
FsContentWidgetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
-
FsContentWidgetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, declarations: [
|
|
15
|
+
FsContentWidgetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, declarations: [FsContentWidgetRendererComponent,
|
|
16
|
+
FsContentWidgetComponent], imports: [CommonModule,
|
|
15
17
|
FsHtmlEditorModule], exports: [FsContentWidgetComponent] });
|
|
16
18
|
FsContentWidgetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, imports: [[
|
|
17
19
|
CommonModule,
|
|
@@ -28,8 +30,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
28
30
|
FsContentWidgetComponent,
|
|
29
31
|
],
|
|
30
32
|
declarations: [
|
|
33
|
+
FsContentWidgetRendererComponent,
|
|
31
34
|
FsContentWidgetComponent,
|
|
32
35
|
],
|
|
33
36
|
}]
|
|
34
37
|
}] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtY29udGVudC13aWRnZXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jb250ZW50LXdpZGdldC9mcy1jb250ZW50LXdpZGdldC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQWlCeEYsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUscUJBQXFCO1NBQ2hDLENBQUM7SUFDSixDQUFDOzttSEFMVSxxQkFBcUI7b0hBQXJCLHFCQUFxQixpQkFKOUIsZ0NBQWdDO1FBQ2hDLHdCQUF3QixhQVR4QixZQUFZO1FBRVosa0JBQWtCLGFBR2xCLHdCQUF3QjtvSEFPZixxQkFBcUIsWUFidkI7WUFDUCxZQUFZO1lBRVosa0JBQWtCO1NBQ25COzRGQVNVLHFCQUFxQjtrQkFkakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFFWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7cUJBQ3pCO29CQUNELFlBQVksRUFBRTt3QkFDWixnQ0FBZ0M7d0JBQ2hDLHdCQUF3QjtxQkFDekI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRnNIdG1sRWRpdG9yTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvaHRtbC1lZGl0b3InO1xuXG5pbXBvcnQgeyBGc0NvbnRlbnRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29udGVudC13aWRnZXQnO1xuaW1wb3J0IHsgRnNDb250ZW50V2lkZ2V0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29udGVudC13aWRnZXQtcmVuZGVyZXInO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG5cbiAgICBGc0h0bWxFZGl0b3JNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc0NvbnRlbnRXaWRnZXRDb21wb25lbnQsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzQ29udGVudFdpZGdldFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEZzQ29udGVudFdpZGdldENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNDb250ZW50V2lkZ2V0TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGc0NvbnRlbnRXaWRnZXRNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZzQ29udGVudFdpZGdldE1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -6,8 +6,8 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "@firestitch/message";
|
|
7
7
|
import * as i2 from "@firestitch/dialog";
|
|
8
8
|
import * as i3 from "@angular/material/tabs";
|
|
9
|
-
import * as i4 from "@firestitch/
|
|
10
|
-
import * as i5 from "@firestitch/
|
|
9
|
+
import * as i4 from "@firestitch/text-editor";
|
|
10
|
+
import * as i5 from "@firestitch/html-editor";
|
|
11
11
|
import * as i6 from "@angular/material/form-field";
|
|
12
12
|
import * as i7 from "@angular/material/button";
|
|
13
13
|
import * as i8 from "@angular/forms";
|
|
@@ -33,7 +33,7 @@ export class FsContentWidgetComponent {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
FsContentWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent, deps: [{ token: i1.FsMessage }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
-
FsContentWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "ng-component", ngImport: i0, template: "\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"
|
|
36
|
+
FsContentWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "ng-component", ngImport: i0, template: "\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n", styles: ["mat-form-field{width:100%}fs-html-editor{min-height:400px;display:block;overflow:hidden}.subtitle{font-size:60%;line-height:normal}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i4.FsTextEditorComponent, selector: "fs-text-editor", inputs: ["config", "scrollable"], outputs: ["init", "blur"] }, { type: i5.FsHtmlEditorComponent, selector: "fs-html-editor", inputs: ["config"] }, { type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.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: i10.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i10.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3.MatTabContent, selector: "[matTabContent]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.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: i8.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.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
39
39
|
args: [{
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
44
44
|
type: Inject,
|
|
45
45
|
args: [MAT_DIALOG_DATA]
|
|
46
46
|
}] }]; } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb250ZW50LXdpZGdldHMvY29tcG9uZW50cy9jb250ZW50LXdpZGdldC9jb250ZW50LXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbnRlbnQtd2lkZ2V0cy9jb21wb25lbnRzL2NvbnRlbnQtd2lkZ2V0L2NvbnRlbnQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBT3JDLE1BQU0sT0FBTyx3QkFBd0I7SUFPbkMsWUFDVSxRQUFtQixFQUNNLEtBQVU7UUFEbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNNLFVBQUssR0FBTCxLQUFLLENBQUs7UUFVdEMsU0FBSSxHQUFHLEdBQUcsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2lCQUMvQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLG1DQUFRLElBQUksQ0FBQyxhQUFhLEdBQUssYUFBYSxDQUFFLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDTixDQUFDLENBQUE7SUFoQkQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLGFBQWEscUJBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUUsQ0FBQztJQUN2RCxDQUFDOztzSEFqQlUsd0JBQXdCLDJDQVN6QixlQUFlOzBHQVRkLHdCQUF3QixvRENmckMscTFEQWdFQTs0RkRqRGEsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUMvQzs7MEJBVUksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvaHRtbC1lZGl0b3InO1xuXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRlbnRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBjb250ZW50V2lkZ2V0O1xuICBwdWJsaWMgaHRtbEVkaXRvckNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnO1xuICBcbiAgcHJpdmF0ZSBfc2F2ZUNvbnRlbnRXaWRnZXQ6IChjb250ZW50V2lkZ2V0OiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVDb250ZW50V2lkZ2V0ID0gdGhpcy5fZGF0YS5zYXZlQ29udGVudFdpZGdldDtcbiAgICB0aGlzLmh0bWxFZGl0b3JDb25maWcgPSB0aGlzLl9kYXRhLmh0bWxFZGl0b3JDb25maWcgfHwge307XG4gICAgdGhpcy5jb250ZW50V2lkZ2V0ID0geyAuLi50aGlzLl9kYXRhLmNvbnRlbnRXaWRnZXQgfTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlQ29udGVudFdpZGdldCh0aGlzLmNvbnRlbnRXaWRnZXQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjb250ZW50V2lkZ2V0KSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250ZW50V2lkZ2V0ID0geyAuLi50aGlzLmNvbnRlbnRXaWRnZXQsIC4uLmNvbnRlbnRXaWRnZXQgfTtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1NhdmVkIENoYW5nZXMnKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbn1cbiIsIlxuPGZvcm0gZnNGb3JtIFtzdWJtaXRdPVwic2F2ZVwiPlxuICA8ZnMtZGlhbG9nPlxuICAgIDxkaXYgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAgIENvbnRlbnQgV2lkZ2V0XG4gICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIj57e2NvbnRlbnRXaWRnZXQubmFtZX19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cblxuICAgICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiSFRNTFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRXaWRnZXQuY29udGVudFwiIFxuICAgICAgICAgICAgICBbY29uZmlnXT1cInsgbGFuZ3VhZ2U6ICdodG1sJywgdGFiU2l6ZTogMiB9XCJcbiAgICAgICAgICAgICAgbmFtZT1cImh0bWxcIj5cbiAgICAgICAgICAgIDwvZnMtdGV4dC1lZGl0b3I+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlJpY2ggVGV4dFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPGZzLWh0bWwtZWRpdG9yXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudFdpZGdldC5jb250ZW50XCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJodG1sRWRpdG9yQ29uZmlnXCJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIDwvZnMtaHRtbC1lZGl0b3I+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlN0eWxlc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPGZzLXRleHQtZWRpdG9yIFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRXaWRnZXQuc3R5bGVzXCIgXG4gICAgICAgICAgICAgIFtjb25maWddPVwieyBsYW5ndWFnZTogJ3Njc3MnLCB0YWJTaXplOiAyIH1cIlxuICAgICAgICAgICAgICBuYW1lPVwic3R5bGVzXCI+XG4gICAgICAgICAgICA8L2ZzLXRleHQtZWRpdG9yPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJTZXR0aW5nc1wiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgbWF0SW5wdXQgXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZVwiIFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRXaWRnZXQubmFtZVwiIFxuICAgICAgICAgICAgICBuYW1lPVwibmFtZVwiIFxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICBtYXQtYnV0dG9uIFxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICBTYXZlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gXG4gICAgICAgICAgbWF0LWJ1dHRvbiBcbiAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCIgXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICBDYW5jZWxcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, Inject, Input, ViewChild, NgModule, InjectionToken } from '@angular/core';
|
|
3
|
-
import * as
|
|
3
|
+
import * as i3$2 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i7 from '@angular/material/button';
|
|
6
6
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -22,14 +22,15 @@ import * as i2 from '@firestitch/dialog';
|
|
|
22
22
|
import { FsDialogModule } from '@firestitch/dialog';
|
|
23
23
|
import * as i9 from '@firestitch/form';
|
|
24
24
|
import { FsFormModule } from '@firestitch/form';
|
|
25
|
-
import * as
|
|
25
|
+
import * as i5 from '@firestitch/html-editor';
|
|
26
26
|
import { FsHtmlEditorModule } from '@firestitch/html-editor';
|
|
27
|
-
import * as
|
|
27
|
+
import * as i4 from '@firestitch/text-editor';
|
|
28
28
|
import { FsTextEditorModule } from '@firestitch/text-editor';
|
|
29
29
|
import * as i1 from '@firestitch/message';
|
|
30
30
|
import { tap, map, takeUntil } from 'rxjs/operators';
|
|
31
31
|
import { ItemType } from '@firestitch/filter';
|
|
32
32
|
import { Subject } from 'rxjs';
|
|
33
|
+
import * as i1$1 from '@angular/router';
|
|
33
34
|
|
|
34
35
|
class FsContentWidgetComponent$1 {
|
|
35
36
|
constructor(_message, _data) {
|
|
@@ -50,7 +51,7 @@ class FsContentWidgetComponent$1 {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
FsContentWidgetComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent$1, deps: [{ token: i1.FsMessage }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
FsContentWidgetComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent$1, selector: "ng-component", ngImport: i0, template: "\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"
|
|
54
|
+
FsContentWidgetComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent$1, selector: "ng-component", ngImport: i0, template: "\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n", styles: ["mat-form-field{width:100%}fs-html-editor{min-height:400px;display:block;overflow:hidden}.subtitle{font-size:60%;line-height:normal}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby"], exportAs: ["matTab"] }, { type: i4.FsTextEditorComponent, selector: "fs-text-editor", inputs: ["config", "scrollable"], outputs: ["init", "blur"] }, { type: i5.FsHtmlEditorComponent, selector: "fs-html-editor", inputs: ["config"] }, { type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.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: i10.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i10.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3.MatTabContent, selector: "[matTabContent]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i11.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: i8.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.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i10.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
|
|
54
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent$1, decorators: [{
|
|
55
56
|
type: Component,
|
|
56
57
|
args: [{
|
|
@@ -190,6 +191,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
190
191
|
|
|
191
192
|
const FS_CONTENT_WIDGET_CONFIG = new InjectionToken('fs-content-widget-config');
|
|
192
193
|
|
|
194
|
+
class FsContentWidgetRendererComponent {
|
|
195
|
+
constructor(_router, _el) {
|
|
196
|
+
this._router = _router;
|
|
197
|
+
this._el = _el;
|
|
198
|
+
this.destroy$ = new Subject();
|
|
199
|
+
}
|
|
200
|
+
ngAfterViewChecked() {
|
|
201
|
+
this.registerHrefs();
|
|
202
|
+
}
|
|
203
|
+
get el() {
|
|
204
|
+
return this._el.nativeElement;
|
|
205
|
+
}
|
|
206
|
+
registerHrefs() {
|
|
207
|
+
Array.from(this.el.querySelectorAll('a[href]'))
|
|
208
|
+
.filter((el) => {
|
|
209
|
+
return el.getAttribute('href').match(/^\//);
|
|
210
|
+
})
|
|
211
|
+
.forEach((el) => {
|
|
212
|
+
el.addEventListener('click', (event) => {
|
|
213
|
+
if (!event.shiftKey && !event.ctrlKey) {
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
const href = el.getAttribute('href');
|
|
216
|
+
this._router.navigateByUrl(href);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
ngOnDestroy() {
|
|
222
|
+
this.destroy$.next();
|
|
223
|
+
this.destroy$.complete();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
FsContentWidgetRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetRendererComponent, deps: [{ token: i1$1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
227
|
+
FsContentWidgetRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetRendererComponent, selector: "fs-content-widget-renderer", inputs: { content: "content" }, ngImport: i0, template: "<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>", styles: [":host ::ng-deep img{max-width:100%}\n"], components: [{ type: i5.FsHtmlRendererComponent, selector: "fs-html-renderer", inputs: ["html"] }], directives: [{ type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetRendererComponent, decorators: [{
|
|
229
|
+
type: Component,
|
|
230
|
+
args: [{
|
|
231
|
+
selector: 'fs-content-widget-renderer',
|
|
232
|
+
templateUrl: './content-widget-renderer.component.html',
|
|
233
|
+
styleUrls: ['./content-widget-renderer.component.scss'],
|
|
234
|
+
}]
|
|
235
|
+
}], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i0.ElementRef }]; }, propDecorators: { content: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}] } });
|
|
238
|
+
|
|
193
239
|
class FsContentWidgetComponent {
|
|
194
240
|
constructor(config, _cdRef) {
|
|
195
241
|
this.config = config;
|
|
@@ -210,7 +256,7 @@ class FsContentWidgetComponent {
|
|
|
210
256
|
}
|
|
211
257
|
}
|
|
212
258
|
FsContentWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent, deps: [{ token: FS_CONTENT_WIDGET_CONFIG }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
213
|
-
FsContentWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "fs-content-widget", inputs: { tag: "tag" }, ngImport: i0, template: "<fs-
|
|
259
|
+
FsContentWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsContentWidgetComponent, selector: "fs-content-widget", inputs: { tag: "tag" }, ngImport: i0, template: "<fs-content-widget-renderer *ngIf=\"content\" [content]=\"content\"></fs-content-widget-renderer>", styles: [":host ::ng-deep img{max-width:100%}\n"], components: [{ type: FsContentWidgetRendererComponent, selector: "fs-content-widget-renderer", inputs: ["content"] }], directives: [{ type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
214
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetComponent, decorators: [{
|
|
215
261
|
type: Component,
|
|
216
262
|
args: [{
|
|
@@ -233,7 +279,8 @@ class FsContentWidgetModule {
|
|
|
233
279
|
}
|
|
234
280
|
}
|
|
235
281
|
FsContentWidgetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
236
|
-
FsContentWidgetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, declarations: [
|
|
282
|
+
FsContentWidgetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, declarations: [FsContentWidgetRendererComponent,
|
|
283
|
+
FsContentWidgetComponent], imports: [CommonModule,
|
|
237
284
|
FsHtmlEditorModule], exports: [FsContentWidgetComponent] });
|
|
238
285
|
FsContentWidgetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsContentWidgetModule, imports: [[
|
|
239
286
|
CommonModule,
|
|
@@ -250,6 +297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
250
297
|
FsContentWidgetComponent,
|
|
251
298
|
],
|
|
252
299
|
declarations: [
|
|
300
|
+
FsContentWidgetRendererComponent,
|
|
253
301
|
FsContentWidgetComponent,
|
|
254
302
|
],
|
|
255
303
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-content-widget.js","sources":["../../src/app/content-widgets/components/content-widget/content-widget.component.ts","../../src/app/content-widgets/components/content-widget/content-widget.component.html","../../src/app/content-widgets/components/content-widgets/content-widgets.component.ts","../../src/app/content-widgets/components/content-widgets/content-widgets.component.html","../../src/app/content-widgets/fs-content-widgets.module.ts","../../src/app/content-widget/injectors/content-wiget.injector.ts","../../src/app/content-widget/components/content-widget/content-widget.component.ts","../../src/app/content-widget/components/content-widget/content-widget.component.html","../../src/app/content-widget/fs-content-widget.module.ts","../../src/firestitch-content-widget.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\n\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { FsMessage } from '@firestitch/message';\nimport { Observable } from 'rxjs';\n\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnInit {\n\n public contentWidget;\n public htmlEditorConfig: FsHtmlEditorConfig;\n \n private _saveContentWidget: (contentWidget: any) => Observable<any>;\n\n public constructor(\n private _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n ) {\n }\n\n public ngOnInit(): void {\n this._saveContentWidget = this._data.saveContentWidget;\n this.htmlEditorConfig = this._data.htmlEditorConfig || {};\n this.contentWidget = { ...this._data.contentWidget };\n }\n\n public save = () => {\n return this._saveContentWidget(this.contentWidget)\n .pipe(\n tap((contentWidget) => {\n this.contentWidget = { ...this.contentWidget, ...contentWidget };\n this._message.success('Saved Changes');\n }),\n );\n }\n\n}\n","\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n\n\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Component, ViewChild, OnInit, OnDestroy, Input } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { FsContentWidgetComponent } from '../content-widget/content-widget.component';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\n\n@Component({\n selector: 'fs-content-widgets',\n templateUrl: './content-widgets.component.html',\n styleUrls: ['./content-widgets.component.scss'],\n})\nexport class FsContentWidgetsComponent implements OnInit, OnDestroy {\n\n @Input() public fetchContentWidgets: (query?: string) => Observable<{ contentWigets: any[], paging?: any }>;\n @Input() public saveContentWidget: (contentWidget: any) => Observable<any>;\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent, { static: true })\n public list: FsListComponent;\n\n public config: FsListConfig;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this.config = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n fetch: (query) => {\n return this.fetchContentWidgets(query.keyword)\n .pipe(\n map((data: any) => ({ data: data.contentWidgets })),\n );\n },\n };\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public open(contentWidget): void {\n const dialogRef = this._dialog.open(FsContentWidgetComponent, {\n width: '90%',\n data: { \n contentWidget,\n htmlEditorConfig: this.htmlEditorConfig,\n saveContentWidget: this.saveContentWidget,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.list.reload();\n });\n }\n\n}\n","<fs-list [config]=\"config\">\n <fs-list-column class=\"name\">\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Preview</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"preview-container\">\n <div class=\"preview-content\">\n <div [innerHTML]=\"row.content\"></div>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"modified\">\n <ng-template fs-list-header>Modified</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.modifiedDate\"></fs-date-ago>\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 { FsContentWidgetComponent } from './components/content-widget';\nimport { FsContentWidgetsComponent } from './components/content-widgets';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n FsContentWidgetsComponent,\n ],\n declarations: [\n FsContentWidgetsComponent,\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetsModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetsModule> {\n return {\n ngModule: FsContentWidgetsModule,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_WIDGET_CONFIG = new InjectionToken<any>('fs-content-widget-config');\n","import { ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FS_CONTENT_WIDGET_CONFIG } from '../../injectors';\nimport { FsContentWidgetConfig } from '../../interfaces/content-widget-config';\n\n\n@Component({\n selector: 'fs-content-widget',\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnDestroy, OnInit {\n\n public content;\n\n private destroy$ = new Subject();\n\n @Input() public tag: string;\n\n constructor(\n @Inject(FS_CONTENT_WIDGET_CONFIG) public config: FsContentWidgetConfig,\n private _cdRef: ChangeDetectorRef,\n ) { }\n \n public ngOnInit(): void {\n this.config.fetchContentWidget(this.tag)\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((content) => {\n this.content = content;\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentWidgetComponent } from './components/content-widget';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentWidgetComponent,\n ],\n declarations: [\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetModule> {\n return {\n ngModule: FsContentWidgetModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["FsContentWidgetComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-content-widget.js","sources":["../../src/app/content-widgets/components/content-widget/content-widget.component.ts","../../src/app/content-widgets/components/content-widget/content-widget.component.html","../../src/app/content-widgets/components/content-widgets/content-widgets.component.ts","../../src/app/content-widgets/components/content-widgets/content-widgets.component.html","../../src/app/content-widgets/fs-content-widgets.module.ts","../../src/app/content-widget/injectors/content-wiget.injector.ts","../../src/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.ts","../../src/app/content-widget/components/content-widget-renderer/content-widget-renderer.component.html","../../src/app/content-widget/components/content-widget/content-widget.component.ts","../../src/app/content-widget/components/content-widget/content-widget.component.html","../../src/app/content-widget/fs-content-widget.module.ts","../../src/firestitch-content-widget.ts"],"sourcesContent":["import { Component, Inject, OnInit } from '@angular/core';\n\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\nimport { FsMessage } from '@firestitch/message';\nimport { Observable } from 'rxjs';\n\nimport { tap } from 'rxjs/operators';\n\n\n@Component({\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnInit {\n\n public contentWidget;\n public htmlEditorConfig: FsHtmlEditorConfig;\n \n private _saveContentWidget: (contentWidget: any) => Observable<any>;\n\n public constructor(\n private _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n ) {\n }\n\n public ngOnInit(): void {\n this._saveContentWidget = this._data.saveContentWidget;\n this.htmlEditorConfig = this._data.htmlEditorConfig || {};\n this.contentWidget = { ...this._data.contentWidget };\n }\n\n public save = () => {\n return this._saveContentWidget(this.contentWidget)\n .pipe(\n tap((contentWidget) => {\n this.contentWidget = { ...this.contentWidget, ...contentWidget };\n this._message.success('Saved Changes');\n }),\n );\n }\n\n}\n","\n<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>\n Content Widget\n <div class=\"subtitle\">{{contentWidget.name}}</div>\n </div>\n <mat-dialog-content>\n\n <mat-tab-group>\n <mat-tab label=\"HTML\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.content\" \n [config]=\"{ language: 'html', tabSize: 2 }\"\n name=\"html\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Rich Text\">\n <ng-template matTabContent>\n <fs-html-editor\n [(ngModel)]=\"contentWidget.content\"\n [config]=\"htmlEditorConfig\"\n name=\"content\">\n </fs-html-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Styles\">\n <ng-template matTabContent>\n <fs-text-editor \n [(ngModel)]=\"contentWidget.styles\" \n [config]=\"{ language: 'scss', tabSize: 2 }\"\n name=\"styles\">\n </fs-text-editor>\n </ng-template>\n </mat-tab>\n <mat-tab label=\"Settings\">\n <mat-form-field>\n <input \n matInput \n placeholder=\"Name\" \n [(ngModel)]=\"contentWidget.name\" \n name=\"name\" \n [required]=\"true\">\n </mat-form-field>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button \n mat-button \n color=\"primary\">\n Save\n </button>\n <button \n mat-button \n [mat-dialog-close]=\"null\" \n type=\"button\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Component, ViewChild, OnInit, OnDestroy, Input } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\n\nimport { Observable, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { FsContentWidgetComponent } from '../content-widget/content-widget.component';\nimport { FsHtmlEditorConfig } from '@firestitch/html-editor';\n\n\n@Component({\n selector: 'fs-content-widgets',\n templateUrl: './content-widgets.component.html',\n styleUrls: ['./content-widgets.component.scss'],\n})\nexport class FsContentWidgetsComponent implements OnInit, OnDestroy {\n\n @Input() public fetchContentWidgets: (query?: string) => Observable<{ contentWigets: any[], paging?: any }>;\n @Input() public saveContentWidget: (contentWidget: any) => Observable<any>;\n @Input() public htmlEditorConfig: FsHtmlEditorConfig;\n\n @ViewChild(FsListComponent, { static: true })\n public list: FsListComponent;\n\n public config: FsListConfig;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public ngOnInit(): void {\n this.config = {\n paging: false,\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n ],\n fetch: (query) => {\n return this.fetchContentWidgets(query.keyword)\n .pipe(\n map((data: any) => ({ data: data.contentWidgets })),\n );\n },\n };\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public open(contentWidget): void {\n const dialogRef = this._dialog.open(FsContentWidgetComponent, {\n width: '90%',\n data: { \n contentWidget,\n htmlEditorConfig: this.htmlEditorConfig,\n saveContentWidget: this.saveContentWidget,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.list.reload();\n });\n }\n\n}\n","<fs-list [config]=\"config\">\n <fs-list-column class=\"name\">\n <ng-template fs-list-header>Name</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"open(row)\">{{row.name}}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column>\n <ng-template fs-list-header>Preview</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"preview-container\">\n <div class=\"preview-content\">\n <div [innerHTML]=\"row.content\"></div>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"modified\">\n <ng-template fs-list-header>Modified</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <fs-date-ago [date]=\"row.modifiedDate\"></fs-date-ago>\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 { FsContentWidgetComponent } from './components/content-widget';\nimport { FsContentWidgetsComponent } from './components/content-widgets';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatInputModule,\n MatFormFieldModule,\n MatButtonModule,\n MatTabsModule,\n\n FsListModule,\n FsDateModule,\n FsFormModule,\n FsHtmlEditorModule,\n FsDialogModule,\n FsTextEditorModule,\n ],\n exports: [\n FsContentWidgetsComponent,\n ],\n declarations: [\n FsContentWidgetsComponent,\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetsModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetsModule> {\n return {\n ngModule: FsContentWidgetsModule,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_CONTENT_WIDGET_CONFIG = new InjectionToken<any>('fs-content-widget-config');\n","import { AfterViewChecked, Component, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\n\n@Component({\n selector: 'fs-content-widget-renderer',\n templateUrl: './content-widget-renderer.component.html',\n styleUrls: ['./content-widget-renderer.component.scss'],\n})\nexport class FsContentWidgetRendererComponent implements OnDestroy, AfterViewChecked {\n\n @Input() public content;\n\n private destroy$ = new Subject();\n\n constructor(\n private _router: Router,\n private _el: ElementRef,\n ) { }\n \n public ngAfterViewChecked(): void {\n this.registerHrefs();\n }\n\n public get el(): any {\n return this._el.nativeElement;\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 ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","<fs-html-renderer *ngIf=\"content\" [html]=\"content\"></fs-html-renderer>","import { ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FS_CONTENT_WIDGET_CONFIG } from '../../injectors';\nimport { FsContentWidgetConfig } from '../../interfaces/content-widget-config';\n\n\n@Component({\n selector: 'fs-content-widget',\n templateUrl: './content-widget.component.html',\n styleUrls: ['./content-widget.component.scss'],\n})\nexport class FsContentWidgetComponent implements OnDestroy, OnInit {\n\n public content;\n\n private destroy$ = new Subject();\n\n @Input() public tag: string;\n\n constructor(\n @Inject(FS_CONTENT_WIDGET_CONFIG) public config: FsContentWidgetConfig,\n private _cdRef: ChangeDetectorRef,\n ) { }\n \n public ngOnInit(): void {\n this.config.fetchContentWidget(this.tag)\n .pipe(\n takeUntil(this.destroy$),\n )\n .subscribe((content) => {\n this.content = content;\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","<fs-content-widget-renderer *ngIf=\"content\" [content]=\"content\"></fs-content-widget-renderer>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsHtmlEditorModule } from '@firestitch/html-editor';\n\nimport { FsContentWidgetComponent } from './components/content-widget';\nimport { FsContentWidgetRendererComponent } from './components/content-widget-renderer';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n FsHtmlEditorModule,\n ],\n exports: [\n FsContentWidgetComponent,\n ],\n declarations: [\n FsContentWidgetRendererComponent,\n FsContentWidgetComponent,\n ],\n})\nexport class FsContentWidgetModule {\n static forRoot(): ModuleWithProviders<FsContentWidgetModule> {\n return {\n ngModule: FsContentWidgetModule,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["FsContentWidgetComponent"],"mappings":"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"}
|