simpo-component-library 3.0.37 → 3.0.39
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/esm2022/lib/directive/contenteditable.directive.mjs +83 -0
- package/esm2022/lib/elements/text-editor/text-editor.component.mjs +215 -0
- package/esm2022/lib/sections/footer/footer.component.mjs +66 -0
- package/esm2022/lib/sections/footer/footer.modal.mjs +2 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/simpo-component-library.mjs +343 -3
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/contenteditable.directive.d.ts +22 -0
- package/lib/elements/text-editor/text-editor.component.d.ts +28 -0
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +1 -1
- package/lib/sections/footer/footer.component.d.ts +21 -0
- package/lib/sections/footer/footer.modal.d.ts +60 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/simpo-component-library-3.0.39.tgz +0 -0
- package/simpo-component-library-3.0.37.tgz +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
import * as i4 from '@angular/common';
|
2
2
|
import { CommonModule, NgStyle, NgFor, isPlatformBrowser } from '@angular/common';
|
3
3
|
import * as i0 from '@angular/core';
|
4
|
-
import { Component, Input, EventEmitter, Injectable, Directive, Pipe, HostListener, Output, NgModule, ViewChild, Optional, Inject, PLATFORM_ID } from '@angular/core';
|
4
|
+
import { Component, Input, EventEmitter, Injectable, Directive, Pipe, HostListener, Output, NgModule, ViewChild, Optional, Inject, PLATFORM_ID, ElementRef, Renderer2, forwardRef } from '@angular/core';
|
5
5
|
import { MatGridListModule } from '@angular/material/grid-list';
|
6
6
|
import * as i2 from '@angular/material/button';
|
7
7
|
import { MatButtonModule } from '@angular/material/button';
|
@@ -11,7 +11,7 @@ import { MatIconModule, MatIcon } from '@angular/material/icon';
|
|
11
11
|
import * as i5 from '@angular/material/dialog';
|
12
12
|
import { MatDialogModule, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
13
13
|
import * as i8 from '@angular/forms';
|
14
|
-
import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
|
14
|
+
import { FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
15
15
|
import * as i13$1 from 'ngx-skeleton-loader';
|
16
16
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
17
17
|
import * as i13 from '@angular/material/core';
|
@@ -9707,6 +9707,346 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
|
|
9707
9707
|
type: Input
|
9708
9708
|
}] } });
|
9709
9709
|
|
9710
|
+
class ContenteditableValueAccessor {
|
9711
|
+
constructor(elementRef, renderer) {
|
9712
|
+
this.elementRef = elementRef;
|
9713
|
+
this.renderer = renderer;
|
9714
|
+
this.onTouched = () => { };
|
9715
|
+
this.contenteditable = true; // Allow dynamic input
|
9716
|
+
this.onChange = (_value) => { };
|
9717
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'contenteditable', 'true');
|
9718
|
+
}
|
9719
|
+
ngAfterViewInit() {
|
9720
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'contenteditable', this.contenteditable ? 'true' : 'false');
|
9721
|
+
this.observer = new MutationObserver(() => {
|
9722
|
+
this.onChange(this.elementRef.nativeElement.innerHTML);
|
9723
|
+
});
|
9724
|
+
this.observer.observe(this.elementRef.nativeElement, {
|
9725
|
+
characterData: true,
|
9726
|
+
childList: true,
|
9727
|
+
subtree: true,
|
9728
|
+
});
|
9729
|
+
}
|
9730
|
+
ngOnDestroy() {
|
9731
|
+
this.observer?.disconnect();
|
9732
|
+
}
|
9733
|
+
onInput() {
|
9734
|
+
this.observer?.disconnect();
|
9735
|
+
this.onChange(this.elementRef.nativeElement.innerHTML);
|
9736
|
+
}
|
9737
|
+
onBlur() {
|
9738
|
+
this.onTouched();
|
9739
|
+
}
|
9740
|
+
writeValue(value) {
|
9741
|
+
this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', value || '');
|
9742
|
+
}
|
9743
|
+
registerOnChange(onChange) {
|
9744
|
+
this.onChange = onChange;
|
9745
|
+
}
|
9746
|
+
registerOnTouched(onTouched) {
|
9747
|
+
this.onTouched = onTouched;
|
9748
|
+
}
|
9749
|
+
setDisabledState(disabled) {
|
9750
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'contenteditable', String(!disabled));
|
9751
|
+
}
|
9752
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ContenteditableValueAccessor, deps: [{ token: ElementRef }, { token: Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
9753
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.4", type: ContenteditableValueAccessor, isStandalone: true, selector: "[contenteditable][ngModel]", inputs: { contenteditable: "contenteditable" }, host: { listeners: { "input": "onInput()", "blur": "onBlur()" } }, providers: [
|
9754
|
+
{
|
9755
|
+
provide: NG_VALUE_ACCESSOR,
|
9756
|
+
useExisting: forwardRef(() => ContenteditableValueAccessor),
|
9757
|
+
multi: true,
|
9758
|
+
},
|
9759
|
+
], ngImport: i0 }); }
|
9760
|
+
}
|
9761
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ContenteditableValueAccessor, decorators: [{
|
9762
|
+
type: Directive,
|
9763
|
+
args: [{
|
9764
|
+
selector: '[contenteditable][ngModel]',
|
9765
|
+
providers: [
|
9766
|
+
{
|
9767
|
+
provide: NG_VALUE_ACCESSOR,
|
9768
|
+
useExisting: forwardRef(() => ContenteditableValueAccessor),
|
9769
|
+
multi: true,
|
9770
|
+
},
|
9771
|
+
],
|
9772
|
+
standalone: true
|
9773
|
+
}]
|
9774
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
9775
|
+
type: Inject,
|
9776
|
+
args: [ElementRef]
|
9777
|
+
}] }, { type: i0.Renderer2, decorators: [{
|
9778
|
+
type: Inject,
|
9779
|
+
args: [Renderer2]
|
9780
|
+
}] }], propDecorators: { contenteditable: [{
|
9781
|
+
type: Input
|
9782
|
+
}], onInput: [{
|
9783
|
+
type: HostListener,
|
9784
|
+
args: ['input']
|
9785
|
+
}], onBlur: [{
|
9786
|
+
type: HostListener,
|
9787
|
+
args: ['blur']
|
9788
|
+
}] } });
|
9789
|
+
|
9790
|
+
class TextEditorComponent {
|
9791
|
+
constructor() {
|
9792
|
+
this.value = '<p>Hello this is palash makhija</p>';
|
9793
|
+
this.editable = false;
|
9794
|
+
this.show = false;
|
9795
|
+
this.toolbarX = 0;
|
9796
|
+
this.toolbarY = 0;
|
9797
|
+
this.toolbarData = {
|
9798
|
+
selectedHeading: '',
|
9799
|
+
isBold: false,
|
9800
|
+
isItalic: false,
|
9801
|
+
isUnderlined: false,
|
9802
|
+
selectedSize: '',
|
9803
|
+
selectedList: '',
|
9804
|
+
selectedAlignment: '',
|
9805
|
+
selectedColor: ''
|
9806
|
+
};
|
9807
|
+
}
|
9808
|
+
ngOnInit() {
|
9809
|
+
document.addEventListener('mousedown', this.hideToolbar.bind(this));
|
9810
|
+
}
|
9811
|
+
ngOnDestroy() {
|
9812
|
+
document.removeEventListener('mousedown', this.hideToolbar.bind(this));
|
9813
|
+
}
|
9814
|
+
showToolbar(event) {
|
9815
|
+
const selection = window.getSelection();
|
9816
|
+
if (selection && selection.toString().trim() !== '') {
|
9817
|
+
const range = selection.getRangeAt(0);
|
9818
|
+
const rect = range.getBoundingClientRect();
|
9819
|
+
// Toolbar dimensions (adjust if necessary)
|
9820
|
+
const toolbarWidth = 630; // Replace with actual width
|
9821
|
+
const toolbarHeight = 45; // Replace with actual height
|
9822
|
+
const margin = 10;
|
9823
|
+
// Get viewport dimensions
|
9824
|
+
const viewportWidth = window.innerWidth;
|
9825
|
+
// Always center horizontally on X-axis
|
9826
|
+
let newXViewport = rect.left + (rect.width / 2) - (toolbarWidth / 2); // Center horizontally
|
9827
|
+
// Prevent X-axis overflow
|
9828
|
+
if (newXViewport + toolbarWidth > viewportWidth) {
|
9829
|
+
newXViewport = Math.max(0, viewportWidth - toolbarWidth - margin); // Adjust for right overflow
|
9830
|
+
}
|
9831
|
+
else if (newXViewport < 0) {
|
9832
|
+
newXViewport = margin; // Adjust for left overflow
|
9833
|
+
}
|
9834
|
+
// Keep Y-axis position fixed above the selection by default
|
9835
|
+
let newYViewport = rect.top - toolbarHeight - margin;
|
9836
|
+
// Adjust Y-axis if there’s no space above the selection
|
9837
|
+
if (newYViewport < 0) {
|
9838
|
+
newYViewport = rect.bottom + margin; // Move below selection
|
9839
|
+
}
|
9840
|
+
// Convert to page coordinates
|
9841
|
+
this.toolbarX = newXViewport + window.scrollX;
|
9842
|
+
this.toolbarY = newYViewport + window.scrollY;
|
9843
|
+
this.reFormattingData();
|
9844
|
+
this.readFormattingProperties();
|
9845
|
+
this.show = true;
|
9846
|
+
}
|
9847
|
+
else {
|
9848
|
+
this.show = false;
|
9849
|
+
}
|
9850
|
+
}
|
9851
|
+
hideToolbar(event) {
|
9852
|
+
const clickedInsideEditor = this.editor?.nativeElement.contains(event.target);
|
9853
|
+
const clickedInsideToolbar = this.toolbar?.nativeElement.contains(event.target);
|
9854
|
+
// Hide the toolbar if the click is outside both the editor and toolbar
|
9855
|
+
if (!clickedInsideEditor && !clickedInsideToolbar) {
|
9856
|
+
this.show = false;
|
9857
|
+
}
|
9858
|
+
}
|
9859
|
+
formatText(command, value = '') {
|
9860
|
+
// if (command === 'formatBlock') {
|
9861
|
+
// const selection = window.getSelection();
|
9862
|
+
// if (!selection || selection.rangeCount === 0) return;
|
9863
|
+
// const range = selection.getRangeAt(0);
|
9864
|
+
// const selectedText = selection.toString();
|
9865
|
+
// if (selectedText) {
|
9866
|
+
// const newElement = document.createElement(value);
|
9867
|
+
// newElement.textContent = selectedText;
|
9868
|
+
// range.deleteContents();
|
9869
|
+
// range.insertNode(newElement);
|
9870
|
+
// this.toolbarData.selectedHeading = value;
|
9871
|
+
// return;
|
9872
|
+
// }
|
9873
|
+
// }
|
9874
|
+
document.execCommand(command, false, value);
|
9875
|
+
if (command === 'bold')
|
9876
|
+
this.toolbarData.isBold = !this.toolbarData.isBold;
|
9877
|
+
if (command === 'italic')
|
9878
|
+
this.toolbarData.isItalic = !this.toolbarData.isItalic;
|
9879
|
+
if (command === 'underline')
|
9880
|
+
this.toolbarData.isUnderlined = !this.toolbarData.isUnderlined;
|
9881
|
+
if (command === 'insertOrderedList' || command === 'insertUnorderedList')
|
9882
|
+
this.toolbarData.selectedList = command === this.toolbarData.selectedList ? '' : command;
|
9883
|
+
if (command === 'justifyLeft' || command === 'justifyCenter' || command === 'justifyRight')
|
9884
|
+
this.toolbarData.selectedAlignment = command === this.toolbarData.selectedAlignment ? '' : command;
|
9885
|
+
if (command === 'formatBlock')
|
9886
|
+
this.toolbarData.selectedHeading = value;
|
9887
|
+
}
|
9888
|
+
changeFontSize(event) {
|
9889
|
+
const size = event.target.value;
|
9890
|
+
// Apply a default size of 4 (needed for execCommand to work)
|
9891
|
+
document.execCommand('fontSize', false, '4');
|
9892
|
+
// Convert selected font elements to have actual font-size instead of "size" attribute
|
9893
|
+
const elements = document.querySelectorAll("font[size='4']");
|
9894
|
+
elements.forEach(el => {
|
9895
|
+
const htmlElement = el; // ✅ Explicitly cast to HTMLElement
|
9896
|
+
htmlElement.removeAttribute('size'); // Remove old size attribute
|
9897
|
+
htmlElement.style.fontSize = size; // Apply CSS font size
|
9898
|
+
});
|
9899
|
+
this.toolbarData.selectedSize = size;
|
9900
|
+
// this.show = false; // Hide toolbar after action
|
9901
|
+
}
|
9902
|
+
changeColor(event) {
|
9903
|
+
const color = event.target.value;
|
9904
|
+
document.execCommand('foreColor', false, color);
|
9905
|
+
this.toolbarData.selectedColor = color;
|
9906
|
+
// this.show = false;
|
9907
|
+
}
|
9908
|
+
updateText(event) {
|
9909
|
+
}
|
9910
|
+
onFormatChange(event) {
|
9911
|
+
const selectedValue = event.target.value;
|
9912
|
+
this.formatText('formatBlock', selectedValue);
|
9913
|
+
}
|
9914
|
+
openColorPicker() {
|
9915
|
+
this.colorPicker.nativeElement.click(); // Programmatically trigger input
|
9916
|
+
}
|
9917
|
+
readFormattingProperties() {
|
9918
|
+
const selection = window.getSelection();
|
9919
|
+
if (!selection)
|
9920
|
+
return;
|
9921
|
+
const node = selection.focusNode;
|
9922
|
+
// Check if node is null
|
9923
|
+
if (!node)
|
9924
|
+
return;
|
9925
|
+
let element = node.parentElement;
|
9926
|
+
while (element) {
|
9927
|
+
const nodeName = element.nodeName;
|
9928
|
+
if (nodeName === 'H1' || nodeName === 'H2' || nodeName === 'H3') {
|
9929
|
+
this.toolbarData.selectedHeading = nodeName;
|
9930
|
+
}
|
9931
|
+
else if (nodeName === 'B' || nodeName === 'STRONG') {
|
9932
|
+
this.toolbarData.isBold = true;
|
9933
|
+
}
|
9934
|
+
else if (nodeName === 'I' || nodeName === 'EM') {
|
9935
|
+
this.toolbarData.isItalic = true;
|
9936
|
+
}
|
9937
|
+
else if (nodeName === 'U') {
|
9938
|
+
this.toolbarData.isUnderlined = true;
|
9939
|
+
}
|
9940
|
+
else if (nodeName === 'OL') {
|
9941
|
+
this.toolbarData.selectedList = 'insertOrderedList';
|
9942
|
+
}
|
9943
|
+
else if (nodeName === 'UL') {
|
9944
|
+
this.toolbarData.selectedList = 'insertUnorderedList';
|
9945
|
+
}
|
9946
|
+
else if (element.style.textAlign) {
|
9947
|
+
this.toolbarData.selectedAlignment = `justify${element.style.textAlign.charAt(0).toUpperCase() + element.style.textAlign.slice(1)}`;
|
9948
|
+
}
|
9949
|
+
else if (element.style.fontSize) {
|
9950
|
+
this.toolbarData.selectedSize = element.style.fontSize;
|
9951
|
+
}
|
9952
|
+
else if (element.style.color) {
|
9953
|
+
this.toolbarData.selectedColor = element.style.color;
|
9954
|
+
}
|
9955
|
+
element = element.parentElement;
|
9956
|
+
}
|
9957
|
+
}
|
9958
|
+
reFormattingData() {
|
9959
|
+
this.toolbarData = {
|
9960
|
+
selectedHeading: '',
|
9961
|
+
isBold: false,
|
9962
|
+
isItalic: false,
|
9963
|
+
isUnderlined: false,
|
9964
|
+
selectedSize: '',
|
9965
|
+
selectedList: '',
|
9966
|
+
selectedAlignment: '',
|
9967
|
+
selectedColor: ''
|
9968
|
+
};
|
9969
|
+
}
|
9970
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
9971
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: TextEditorComponent, isStandalone: true, selector: "simpo-text-editor", inputs: { value: "value", editable: "editable" }, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }, { propertyName: "colorPicker", first: true, predicate: ["colorPicker"], descendants: true }], ngImport: i0, template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (input)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY, 'left.px': toolbarX}\" #toolbar >\r\n <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"18px\">Small</option>\r\n <option value=\"24px\">Medium</option>\r\n <option value=\"32px\">Large</option>\r\n <option value=\"48px\">Extra Large</option>\r\n <option value=\"72px\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n </div>\r\n\r\n</div>\r\n", styles: [".editor-container{display:inline-block;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;border-bottom:1px dashed #ccc;cursor:text}.toolbar{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background-color:#0496ff!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", 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]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ContenteditableValueAccessor, selector: "[contenteditable][ngModel]", inputs: ["contenteditable"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
9972
|
+
}
|
9973
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TextEditorComponent, decorators: [{
|
9974
|
+
type: Component,
|
9975
|
+
args: [{ selector: 'simpo-text-editor', standalone: true, imports: [
|
9976
|
+
CommonModule,
|
9977
|
+
FormsModule,
|
9978
|
+
ContenteditableValueAccessor,
|
9979
|
+
MatIconModule
|
9980
|
+
], template: "<div class=\"editor-container\" [ngClass]=\"{'border': editable}\">\r\n <div [contenteditable]=\"editable\" [(ngModel)]=\"value\" class=\"editable-text\" (mouseup)=\"showToolbar($event)\" #editor\r\n (input)=\"updateText($event)\" (mousedown)=\"hideToolbar($event)\">\r\n </div>\r\n\r\n <div class=\"toolbar\" *ngIf=\"editable && show\" [ngStyle]=\"{'top.px': toolbarY, 'left.px': toolbarX}\" #toolbar >\r\n <select class=\"tool\" (change)=\"onFormatChange($event)\" [(ngModel)]=\"toolbarData.selectedHeading\">\r\n <option value=\"H1\">Heading1</option>\r\n <option value=\"H2\">Heading2</option>\r\n <option value=\"H3\">Heading3</option>\r\n <option value=\"div\">Text</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('bold')\" [ngClass]=\"{'selectedTool': toolbarData.isBold}\"><mat-icon> format_bold</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('italic')\" [ngClass]=\"{'selectedTool': toolbarData.isItalic}\"><mat-icon> format_italic</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('underline')\" [ngClass]=\"{'selectedTool': toolbarData.isUnderlined}\"><mat-icon> format_underlined</mat-icon></button>\r\n\r\n <select class=\"tool\" (change)=\"changeFontSize($event)\" [(ngModel)]=\"toolbarData.selectedSize\">\r\n <option value=\"\" selected>Default</option>\r\n <option value=\"18px\">Small</option>\r\n <option value=\"24px\">Medium</option>\r\n <option value=\"32px\">Large</option>\r\n <option value=\"48px\">Extra Large</option>\r\n <option value=\"72px\">Huge</option>\r\n </select>\r\n\r\n <button class=\"tool\" (click)=\"formatText('insertOrderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertOrderedList'}\"><mat-icon>format_list_numbered</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('insertUnorderedList')\" [ngClass]=\"{'selectedTool': toolbarData.selectedList === 'insertUnorderedList'}\"><mat-icon> format_list_bulleted</mat-icon></button>\r\n\r\n <button class=\"tool\" (click)=\"formatText('justifyLeft')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyLeft'}\"><mat-icon> format_align_left</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyCenter')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyCenter'}\"><mat-icon> format_align_center</mat-icon></button>\r\n <button class=\"tool\" (click)=\"formatText('justifyRight')\" [ngClass]=\"{'selectedTool': toolbarData.selectedAlignment === 'justifyRight'}\"><mat-icon> format_align_right</mat-icon></button>\r\n\r\n <button class=\"tool color-picker-btn\" (click)=\"openColorPicker()\">\r\n <mat-icon>format_color_text</mat-icon>\r\n <input type=\"color\" #colorPicker class=\"hidden-color-picker\" (input)=\"changeColor($event)\" [(ngModel)]=\"toolbarData.selectedColor\">\r\n </button>\r\n </div>\r\n\r\n</div>\r\n", styles: [".editor-container{display:inline-block;width:100%}.editor-container div{outline:none}.editable-text{padding:4px;border-bottom:1px dashed #ccc;cursor:text}.toolbar{position:absolute;background:#fff;border:1px solid #ccc;box-shadow:0 2px 5px #0003;display:flex;gap:5px;align-items:center;z-index:100000;box-shadow:#00000029 0 1px 4px;padding:5px 15px;border-radius:22px}.toolbar button{background:none;border:none;padding:5px 8px;cursor:pointer;font-weight:700;display:flex;align-items:center}.toolbar button:hover{background:#ddd}.toolbar select{padding:3px;border:none;outline:none;font-size:14px;font-weight:600;cursor:pointer}.toolbar input[type=color]{border:none;width:30px;height:30px;padding:0;cursor:pointer}.color-picker-btn{position:relative;background:none;border:none;cursor:pointer;padding:5px}.hidden-color-picker{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;cursor:pointer}.border{border:1px solid #E9E9E9!important;border-radius:8px}.selectedTool{background-color:#0496ff!important;color:#fff;border-radius:5px}p{margin-bottom:0rem!important}\n"] }]
|
9981
|
+
}], ctorParameters: () => [], propDecorators: { toolbar: [{
|
9982
|
+
type: ViewChild,
|
9983
|
+
args: ['toolbar', { static: false }]
|
9984
|
+
}], editor: [{
|
9985
|
+
type: ViewChild,
|
9986
|
+
args: ['editor', { static: false }]
|
9987
|
+
}], colorPicker: [{
|
9988
|
+
type: ViewChild,
|
9989
|
+
args: ['colorPicker']
|
9990
|
+
}], value: [{
|
9991
|
+
type: Input
|
9992
|
+
}], editable: [{
|
9993
|
+
type: Input
|
9994
|
+
}] } });
|
9995
|
+
|
9996
|
+
class FooterComponent {
|
9997
|
+
constructor() {
|
9998
|
+
this.edit = true;
|
9999
|
+
this.delete = false;
|
10000
|
+
this.footerType = "1";
|
10001
|
+
this.screenWidth = 475;
|
10002
|
+
this.pageLink = "About Us";
|
10003
|
+
this.pages = ["Mission", "Our Team", "Awards", "Testimonials", "Privacy Policy"];
|
10004
|
+
this.getScreenSize();
|
10005
|
+
}
|
10006
|
+
async ngOnInit() {
|
10007
|
+
this.style = this.data?.styles;
|
10008
|
+
this.content = this.data?.content;
|
10009
|
+
}
|
10010
|
+
getScreenSize(event) {
|
10011
|
+
if (typeof window !== 'undefined') {
|
10012
|
+
this.screenWidth = window.innerWidth;
|
10013
|
+
}
|
10014
|
+
}
|
10015
|
+
get stylesLayout() {
|
10016
|
+
return { ...this.style?.layout };
|
10017
|
+
}
|
10018
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
10019
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FooterComponent, isStandalone: true, selector: "simpo-footer", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, ngImport: i0, template: "<section class=\"total-container\">\r\n <div [spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\">\r\n <ng-container *ngTemplateOutlet=\"footer1\"></ng-container>\r\n </div>\r\n</section>\r\n\r\n<ng-template #footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesVertical\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\" >\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"pagesVertical\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <simpo-text-editor [value]=\"content?.additionalDetails?.value || ''\" [editable]=\"edit || false\"></simpo-text-editor>\r\n <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\">\r\n {{pageLink}}\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #foldersHorizontal>\r\n <div class=\"pageType col-md-3 mb-3\" *ngFor=\"let folder of content?.folder\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\">\r\n {{folder.label}}\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\">{{page}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder\" [class.w-50]=\"screenWidth < 475\">\r\n <!-- <div class=\"pageType mb-3\">{{folder.label}}</div> -->\r\n <simpo-text-editor [value]=\"folder.label\" [editable]=\"edit || false\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links\">\r\n <div class=\"pages mb-2\">{{page.label}}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "component", type: SociaIconsComponent, selector: "simpo-socia-icons", inputs: ["socialIconData", "color", "sectionId", "iconColor"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
10020
|
+
//directives
|
10021
|
+
SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable"] }] }); }
|
10022
|
+
}
|
10023
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FooterComponent, decorators: [{
|
10024
|
+
type: Component,
|
10025
|
+
args: [{ selector: 'simpo-footer', standalone: true, imports: [
|
10026
|
+
CommonModule,
|
10027
|
+
ColorDirective,
|
10028
|
+
SociaIconsComponent,
|
10029
|
+
FormsModule,
|
10030
|
+
SanitizeHtmlPipe,
|
10031
|
+
//directives
|
10032
|
+
SpacingHorizontalDirective,
|
10033
|
+
BackgroundDirective,
|
10034
|
+
ContentFitDirective,
|
10035
|
+
TextEditorComponent
|
10036
|
+
], template: "<section class=\"total-container\">\r\n <div [spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\">\r\n <ng-container *ngTemplateOutlet=\"footer1\"></ng-container>\r\n </div>\r\n</section>\r\n\r\n<ng-template #footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesVertical\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\" >\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"pagesVertical\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"foldersHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <simpo-text-editor [value]=\"content?.additionalDetails?.value || ''\" [editable]=\"edit || false\"></simpo-text-editor>\r\n <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\">\r\n {{pageLink}}\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #foldersHorizontal>\r\n <div class=\"pageType col-md-3 mb-3\" *ngFor=\"let folder of content?.folder\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\">\r\n {{folder.label}}\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\">{{page}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder\" [class.w-50]=\"screenWidth < 475\">\r\n <!-- <div class=\"pageType mb-3\">{{folder.label}}</div> -->\r\n <simpo-text-editor [value]=\"folder.label\" [editable]=\"edit || false\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links\">\r\n <div class=\"pages mb-2\">{{page.label}}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}\n"] }]
|
10037
|
+
}], ctorParameters: () => [], propDecorators: { data: [{
|
10038
|
+
type: Input
|
10039
|
+
}], index: [{
|
10040
|
+
type: Input
|
10041
|
+
}], edit: [{
|
10042
|
+
type: Input
|
10043
|
+
}], delete: [{
|
10044
|
+
type: Input
|
10045
|
+
}], getScreenSize: [{
|
10046
|
+
type: HostListener,
|
10047
|
+
args: ['window:resize', ['$event']]
|
10048
|
+
}] } });
|
10049
|
+
|
9710
10050
|
class SimpoWrapComntainer {
|
9711
10051
|
constructor(eventService, el) {
|
9712
10052
|
this.eventService = eventService;
|
@@ -13160,5 +13500,5 @@ class Product {
|
|
13160
13500
|
* Generated bundle index. Do not edit.
|
13161
13501
|
*/
|
13162
13502
|
|
13163
|
-
export { AddNewSectionComponent, AlignContent, AnimationDirective, AppointmentFormComponent, AuthenticateUserComponent, AuthenticationRequiredComponent, BANNERALIGNMENT, BANNERHALIGN, BackgroundDirective, BannerCarouselComponent, BannerContentFitDirective, BannerGridSectionComponent, BannerSectionComponent, BlogListComponent, BorderDirective, ButtonDirectiveDirective, CarouselBannerComponent, Cart, CartComponent, Category, CategoryProductComponent, ChannelType, CheckoutComponent, ChooseUsSectionComponent, Collection, ColorDirective, ColumnDirectiveDirective, ContactUsComponent, ContainerFitDirective, ContentFitDirective, CornerDirective, Corners, CustomerReviewComponent, DeviderType, EndUserService, EventsService, FaqSectionComponent, FeaturedCategoryComponent, FeaturedCollectionComponent, FeaturedProductsComponent, FeaturesSectionComponent, FooterSectionComponent, FooterTypes, HALIGN, HEADER_STYLING, HeaderButtonStyle, HeaderTextComponent, HoverDirective, ImageCarouselSectionComponent, ImageDirectiveDirective, ImageFit, ImageGridSectionComponent, ImageRatio, ImageSectionComponent, LocationSectionComponent, LogoGalleryComponent, LogoShowcaseComponent, MapType, NavbarSectionComponent, ObjectPositionDirective, OverlayDirective, OverlayValue, Padding, PositionLayoutDirectiveDirective, PricingSectionComponent, ProcessModernComponent, ProcessSectionComponent, Product, ProductCardTheme, ProductCategoryListComponent, ProductDescComponent, ProductListComponent, PropertyComponentComponent, PropertyListComponent, RecentBlogPostSectionComponent, RedirectionLinkType, RegistrationFormComponent, RemoveCarouselDirective, SPACING$1 as SPACING, SPACINGALIGN, SanitizeHtmlPipe, ServiceSectionComponent, SimpoContainerAligment, SimpoFooterLayoutDirective, SimpoStickyDirective, SkeletonLoaderSectionComponent, SpacingAroundDirective, Style, TEXT_SIZE, TeamMemberSectionComponent, TestimonialFullwidthComponent, TestimonialSectionComponent, TestimonialVideoComponent, TextBackgroundDirectiveDirective, TextImageSectionComponent, TextPosition, TextSectionComponent, UserProfileComponent, UspVideoSectionComponent, VALIGN, VerifyComponent, VideoSectionComponent, ViewBlogComponent, WhislistComponent, animation, applySpacing, applyStyle, cartType, contentAlignment, fitContent, fitScreen, fontSize, logoDirection, logoSpeed, logoType, mapStyle, showCaseType, simpoConetenAlignmentDirective, svgData };
|
13503
|
+
export { AddNewSectionComponent, AlignContent, AnimationDirective, AppointmentFormComponent, AuthenticateUserComponent, AuthenticationRequiredComponent, BANNERALIGNMENT, BANNERHALIGN, BackgroundDirective, BannerCarouselComponent, BannerContentFitDirective, BannerGridSectionComponent, BannerSectionComponent, BlogListComponent, BorderDirective, ButtonDirectiveDirective, CarouselBannerComponent, Cart, CartComponent, Category, CategoryProductComponent, ChannelType, CheckoutComponent, ChooseUsSectionComponent, Collection, ColorDirective, ColumnDirectiveDirective, ContactUsComponent, ContainerFitDirective, ContentFitDirective, CornerDirective, Corners, CustomerReviewComponent, DeviderType, EndUserService, EventsService, FaqSectionComponent, FeaturedCategoryComponent, FeaturedCollectionComponent, FeaturedProductsComponent, FeaturesSectionComponent, FooterComponent, FooterSectionComponent, FooterTypes, HALIGN, HEADER_STYLING, HeaderButtonStyle, HeaderTextComponent, HoverDirective, ImageCarouselSectionComponent, ImageDirectiveDirective, ImageFit, ImageGridSectionComponent, ImageRatio, ImageSectionComponent, LocationSectionComponent, LogoGalleryComponent, LogoShowcaseComponent, MapType, NavbarSectionComponent, ObjectPositionDirective, OverlayDirective, OverlayValue, Padding, PositionLayoutDirectiveDirective, PricingSectionComponent, ProcessModernComponent, ProcessSectionComponent, Product, ProductCardTheme, ProductCategoryListComponent, ProductDescComponent, ProductListComponent, PropertyComponentComponent, PropertyListComponent, RecentBlogPostSectionComponent, RedirectionLinkType, RegistrationFormComponent, RemoveCarouselDirective, SPACING$1 as SPACING, SPACINGALIGN, SanitizeHtmlPipe, ServiceSectionComponent, SimpoContainerAligment, SimpoFooterLayoutDirective, SimpoStickyDirective, SkeletonLoaderSectionComponent, SpacingAroundDirective, Style, TEXT_SIZE, TeamMemberSectionComponent, TestimonialFullwidthComponent, TestimonialSectionComponent, TestimonialVideoComponent, TextBackgroundDirectiveDirective, TextImageSectionComponent, TextPosition, TextSectionComponent, UserProfileComponent, UspVideoSectionComponent, VALIGN, VerifyComponent, VideoSectionComponent, ViewBlogComponent, WhislistComponent, animation, applySpacing, applyStyle, cartType, contentAlignment, fitContent, fitScreen, fontSize, logoDirection, logoSpeed, logoType, mapStyle, showCaseType, simpoConetenAlignmentDirective, svgData };
|
13164
13504
|
//# sourceMappingURL=simpo-component-library.mjs.map
|