@pobuca/email-builder 1.0.0 → 1.1.0
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/README.md +1 -1
- package/bundles/pobuca-email-builder.umd.js +4464 -4414
- package/bundles/pobuca-email-builder.umd.js.map +1 -1
- package/bundles/pobuca-email-builder.umd.min.js +1 -1
- package/bundles/pobuca-email-builder.umd.min.js.map +1 -1
- package/esm2015/lib/classes/DefaultEmail.js +54 -53
- package/esm2015/lib/classes/Elements.js +229 -229
- package/esm2015/lib/classes/Structure.js +89 -89
- package/esm2015/lib/components/block/block.component.js +89 -89
- package/esm2015/lib/components/block-settings/block-settings.component.js +53 -53
- package/esm2015/lib/components/builder-container/builder-container.component.js +114 -114
- package/esm2015/lib/components/dialog.component.js +30 -30
- package/esm2015/lib/components/general-settings/general-settings.component.js +25 -25
- package/esm2015/lib/components/import-dialog/import-dialog.component.js +62 -62
- package/esm2015/lib/components/preview.component.js +89 -89
- package/esm2015/lib/components/structure/structure.component.js +163 -163
- package/esm2015/lib/components/structure-settings/structure-settings.component.js +31 -31
- package/esm2015/lib/components/template-list-dialog/template-list-dialog.component.js +45 -45
- package/esm2015/lib/directives/dynamic-component.directive.js +46 -46
- package/esm2015/lib/elements/abstract-block.js +23 -23
- package/esm2015/lib/elements/button/button.component.js +29 -29
- package/esm2015/lib/elements/divider/divider.component.js +30 -30
- package/esm2015/lib/elements/image/image.component.js +54 -54
- package/esm2015/lib/elements/social/social.component.js +42 -42
- package/esm2015/lib/elements/spacer/spacer.component.js +30 -30
- package/esm2015/lib/elements/text-element/text-element.component.js +80 -80
- package/esm2015/lib/groups/align.js +79 -79
- package/esm2015/lib/groups/back-repeat.js +55 -55
- package/esm2015/lib/groups/border.js +102 -102
- package/esm2015/lib/groups/color.js +139 -139
- package/esm2015/lib/groups/direction.js +63 -63
- package/esm2015/lib/groups/font-styles.js +127 -112
- package/esm2015/lib/groups/gaps.js +45 -45
- package/esm2015/lib/groups/line-height.js +68 -68
- package/esm2015/lib/groups/link.js +67 -67
- package/esm2015/lib/groups/margin.js +45 -45
- package/esm2015/lib/groups/padding.js +53 -53
- package/esm2015/lib/groups/upload-image.js +112 -112
- package/esm2015/lib/groups/width-height.js +94 -94
- package/esm2015/lib/interceptors/pb-interceptor.interceptor.js +51 -51
- package/esm2015/lib/interfaces/interfaces.js +13 -13
- package/esm2015/lib/pb-email-builder.component.js +258 -246
- package/esm2015/lib/pb-email-builder.module.js +291 -291
- package/esm2015/lib/pb-email-builder.service.js +134 -134
- package/esm2015/lib/pipes/slugify.pipe.js +39 -39
- package/esm2015/lib/services/internals/pb-email-object-store/pb-email-object-store.service.js +175 -165
- package/esm2015/lib/services/internals/user-interfaces/user-interface.service.js +122 -122
- package/esm2015/lib/services/pb-storage/FreeUsersStorage.class.js +11 -11
- package/esm2015/lib/services/pb-storage/index.js +7 -7
- package/esm2015/lib/services/pb-storage/pb-storage.service.js +79 -79
- package/esm2015/lib/services/user-image-uploader-service/free-users-image-uploader.service.js +26 -26
- package/esm2015/lib/services/user-image-uploader-service/index.js +8 -8
- package/esm2015/lib/services/user-image-uploader-service/paid-users-image-uploader.service.js +30 -30
- package/esm2015/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.js +112 -112
- package/esm2015/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.js +91 -91
- package/esm2015/lib/services/user-image-uploader-service/user-image-uploader.service.js +26 -26
- package/esm2015/lib/services/user-middleware-service/FreeUsersMiddleware.js +31 -31
- package/esm2015/lib/services/user-middleware-service/PaidUsersMiddleware.js +12 -12
- package/esm2015/lib/services/user-middleware-service/index.js +8 -8
- package/esm2015/lib/services/user-middleware-service/pb-middlewares.service.js +195 -195
- package/esm2015/lib/services/user-rest-api-service/free-users-rest-api.service.js +16 -16
- package/esm2015/lib/services/user-rest-api-service/index.js +7 -7
- package/esm2015/lib/services/user-rest-api-service/user-rest-api.service.js +116 -116
- package/esm2015/lib/tokens/private-tokens.js +17 -17
- package/esm2015/lib/tokens/tokens.js +159 -159
- package/esm2015/lib/utils.js +147 -147
- package/esm2015/pobuca-email-builder.js +42 -42
- package/esm2015/public_api.js +26 -26
- package/fesm2015/pobuca-email-builder.js +4206 -4168
- package/fesm2015/pobuca-email-builder.js.map +1 -1
- package/lib/classes/DefaultEmail.d.ts +10 -9
- package/lib/classes/Elements.d.ts +62 -62
- package/lib/classes/Structure.d.ts +11 -11
- package/lib/components/block/block.component.d.ts +25 -25
- package/lib/components/block-settings/block-settings.component.d.ts +18 -18
- package/lib/components/builder-container/builder-container.component.d.ts +36 -36
- package/lib/components/dialog.component.d.ts +10 -10
- package/lib/components/general-settings/general-settings.component.d.ts +6 -6
- package/lib/components/import-dialog/import-dialog.component.d.ts +16 -16
- package/lib/components/preview.component.d.ts +18 -18
- package/lib/components/structure/structure.component.d.ts +43 -43
- package/lib/components/structure-settings/structure-settings.component.d.ts +9 -9
- package/lib/components/template-list-dialog/template-list-dialog.component.d.ts +15 -15
- package/lib/directives/dynamic-component.directive.d.ts +13 -13
- package/lib/elements/abstract-block.d.ts +8 -8
- package/lib/elements/button/button.component.d.ts +18 -18
- package/lib/elements/divider/divider.component.d.ts +10 -10
- package/lib/elements/image/image.component.d.ts +19 -19
- package/lib/elements/social/social.component.d.ts +21 -21
- package/lib/elements/spacer/spacer.component.d.ts +5 -5
- package/lib/elements/text-element/text-element.component.d.ts +52 -52
- package/lib/groups/align.d.ts +17 -17
- package/lib/groups/back-repeat.d.ts +8 -8
- package/lib/groups/border.d.ts +13 -13
- package/lib/groups/color.d.ts +26 -26
- package/lib/groups/direction.d.ts +13 -13
- package/lib/groups/font-styles.d.ts +21 -17
- package/lib/groups/gaps.d.ts +7 -7
- package/lib/groups/line-height.d.ts +12 -12
- package/lib/groups/link.d.ts +11 -11
- package/lib/groups/margin.d.ts +8 -8
- package/lib/groups/padding.d.ts +8 -8
- package/lib/groups/upload-image.d.ts +19 -19
- package/lib/groups/width-height.d.ts +19 -19
- package/lib/interceptors/pb-interceptor.interceptor.d.ts +10 -10
- package/lib/interfaces/interfaces.d.ts +430 -422
- package/lib/pb-email-builder.component.d.ts +67 -67
- package/lib/pb-email-builder.module.d.ts +51 -51
- package/lib/pb-email-builder.service.d.ts +83 -83
- package/lib/pipes/slugify.pipe.d.ts +9 -9
- package/lib/services/internals/pb-email-object-store/pb-email-object-store.service.d.ts +50 -50
- package/lib/services/internals/user-interfaces/user-interface.service.d.ts +46 -46
- package/lib/services/pb-storage/FreeUsersStorage.class.d.ts +6 -6
- package/lib/services/pb-storage/index.d.ts +2 -2
- package/lib/services/pb-storage/pb-storage.service.d.ts +54 -54
- package/lib/services/user-image-uploader-service/free-users-image-uploader.service.d.ts +12 -12
- package/lib/services/user-image-uploader-service/index.d.ts +3 -3
- package/lib/services/user-image-uploader-service/paid-users-image-uploader.service.d.ts +14 -14
- package/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.d.ts +28 -28
- package/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.d.ts +27 -27
- package/lib/services/user-image-uploader-service/user-image-uploader.service.d.ts +26 -26
- package/lib/services/user-middleware-service/FreeUsersMiddleware.d.ts +15 -15
- package/lib/services/user-middleware-service/PaidUsersMiddleware.d.ts +7 -7
- package/lib/services/user-middleware-service/index.d.ts +3 -3
- package/lib/services/user-middleware-service/pb-middlewares.service.d.ts +190 -190
- package/lib/services/user-rest-api-service/free-users-rest-api.service.d.ts +10 -10
- package/lib/services/user-rest-api-service/index.d.ts +2 -2
- package/lib/services/user-rest-api-service/user-rest-api.service.d.ts +82 -82
- package/lib/tokens/private-tokens.d.ts +5 -5
- package/lib/tokens/tokens.d.ts +70 -70
- package/lib/utils.d.ts +88 -88
- package/package.json +8 -3
- package/pobuca-email-builder.d.ts +42 -42
- package/pobuca-email-builder.metadata.json +1 -1
- package/public_api.d.ts +16 -16
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Pobuca.
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*/
|
|
5
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
-
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
-
export class AlignComponent {
|
|
8
|
-
constructor(emailObject) {
|
|
9
|
-
this.emailObject = emailObject;
|
|
10
|
-
this.mode = 'horizontal';
|
|
11
|
-
this.labels = new Map([
|
|
12
|
-
['left', $localize `:@@horizontal_align_left:Left`],
|
|
13
|
-
['center', $localize `:@@horizontal_align_center:Center`],
|
|
14
|
-
['right', $localize `:@@horizontal_align_right:Right`],
|
|
15
|
-
['top', $localize `:@@vertical_align_top:Top`],
|
|
16
|
-
['middle', $localize `:@@vertical_align_middle:Middle`],
|
|
17
|
-
['bottom', $localize `:@@vertical_align_bottom:Bottom`]
|
|
18
|
-
]);
|
|
19
|
-
}
|
|
20
|
-
get currentModel() {
|
|
21
|
-
return this.model.align || this.model.verticalAlign;
|
|
22
|
-
}
|
|
23
|
-
set currentModel(value) {
|
|
24
|
-
if (this.model.align) {
|
|
25
|
-
this.model.align = value;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.model.verticalAlign = value;
|
|
29
|
-
}
|
|
30
|
-
this.emailObject.markForCheck();
|
|
31
|
-
}
|
|
32
|
-
getLabel(key) {
|
|
33
|
-
return this.labels.get(key);
|
|
34
|
-
}
|
|
35
|
-
getPositions() {
|
|
36
|
-
if (this.mode === 'vertical') {
|
|
37
|
-
return ['top', 'middle', 'bottom'];
|
|
38
|
-
}
|
|
39
|
-
return ['left', 'center', 'right'];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
AlignComponent.decorators = [
|
|
43
|
-
{ type: Component, args: [{
|
|
44
|
-
selector: 'pb-align',
|
|
45
|
-
template: `
|
|
46
|
-
<mat-form-field appearance="outline">
|
|
47
|
-
<mat-label [ngSwitch]="mode">
|
|
48
|
-
<ng-container *ngSwitchCase="'vertical'" i18n="Align Settings|Vertical Align">Vertical Align</ng-container>
|
|
49
|
-
<ng-container *ngSwitchDefault i18n="Align Settings|Align">Align</ng-container>
|
|
50
|
-
</mat-label>
|
|
51
|
-
<mat-select [(ngModel)]="currentModel" disableRipple [disabled]="disabled">
|
|
52
|
-
<mat-option *ngFor="let position of getPositions()" [value]="position">
|
|
53
|
-
{{ getLabel(position) }}
|
|
54
|
-
</mat-option>
|
|
55
|
-
</mat-select>
|
|
56
|
-
</mat-form-field>
|
|
57
|
-
`,
|
|
58
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
59
|
-
styles: [`
|
|
60
|
-
:host {
|
|
61
|
-
display: block;
|
|
62
|
-
width: 100%;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
mat-form-field {
|
|
66
|
-
width: 100%;
|
|
67
|
-
}
|
|
68
|
-
`]
|
|
69
|
-
},] }
|
|
70
|
-
];
|
|
71
|
-
AlignComponent.ctorParameters = () => [
|
|
72
|
-
{ type: PbEmailObjectStoreService }
|
|
73
|
-
];
|
|
74
|
-
AlignComponent.propDecorators = {
|
|
75
|
-
model: [{ type: Input }],
|
|
76
|
-
mode: [{ type: Input }],
|
|
77
|
-
disabled: [{ type: Input }]
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
+
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
+
export class AlignComponent {
|
|
8
|
+
constructor(emailObject) {
|
|
9
|
+
this.emailObject = emailObject;
|
|
10
|
+
this.mode = 'horizontal';
|
|
11
|
+
this.labels = new Map([
|
|
12
|
+
['left', $localize `:@@horizontal_align_left:Left`],
|
|
13
|
+
['center', $localize `:@@horizontal_align_center:Center`],
|
|
14
|
+
['right', $localize `:@@horizontal_align_right:Right`],
|
|
15
|
+
['top', $localize `:@@vertical_align_top:Top`],
|
|
16
|
+
['middle', $localize `:@@vertical_align_middle:Middle`],
|
|
17
|
+
['bottom', $localize `:@@vertical_align_bottom:Bottom`]
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
get currentModel() {
|
|
21
|
+
return this.model.align || this.model.verticalAlign;
|
|
22
|
+
}
|
|
23
|
+
set currentModel(value) {
|
|
24
|
+
if (this.model.align) {
|
|
25
|
+
this.model.align = value;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.model.verticalAlign = value;
|
|
29
|
+
}
|
|
30
|
+
this.emailObject.markForCheck();
|
|
31
|
+
}
|
|
32
|
+
getLabel(key) {
|
|
33
|
+
return this.labels.get(key);
|
|
34
|
+
}
|
|
35
|
+
getPositions() {
|
|
36
|
+
if (this.mode === 'vertical') {
|
|
37
|
+
return ['top', 'middle', 'bottom'];
|
|
38
|
+
}
|
|
39
|
+
return ['left', 'center', 'right'];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
AlignComponent.decorators = [
|
|
43
|
+
{ type: Component, args: [{
|
|
44
|
+
selector: 'pb-align',
|
|
45
|
+
template: `
|
|
46
|
+
<mat-form-field appearance="outline">
|
|
47
|
+
<mat-label [ngSwitch]="mode">
|
|
48
|
+
<ng-container *ngSwitchCase="'vertical'" i18n="Align Settings|Vertical Align">Vertical Align</ng-container>
|
|
49
|
+
<ng-container *ngSwitchDefault i18n="Align Settings|Align">Align</ng-container>
|
|
50
|
+
</mat-label>
|
|
51
|
+
<mat-select [(ngModel)]="currentModel" disableRipple [disabled]="disabled">
|
|
52
|
+
<mat-option *ngFor="let position of getPositions()" [value]="position">
|
|
53
|
+
{{ getLabel(position) }}
|
|
54
|
+
</mat-option>
|
|
55
|
+
</mat-select>
|
|
56
|
+
</mat-form-field>
|
|
57
|
+
`,
|
|
58
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
59
|
+
styles: [`
|
|
60
|
+
:host {
|
|
61
|
+
display: block;
|
|
62
|
+
width: 100%;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
mat-form-field {
|
|
66
|
+
width: 100%;
|
|
67
|
+
}
|
|
68
|
+
`]
|
|
69
|
+
},] }
|
|
70
|
+
];
|
|
71
|
+
AlignComponent.ctorParameters = () => [
|
|
72
|
+
{ type: PbEmailObjectStoreService }
|
|
73
|
+
];
|
|
74
|
+
AlignComponent.propDecorators = {
|
|
75
|
+
model: [{ type: Input }],
|
|
76
|
+
mode: [{ type: Input }],
|
|
77
|
+
disabled: [{ type: Input }]
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2FsaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBK0J0SCxNQUFNLE9BQU8sY0FBYztJQWN6QixZQUFvQixXQUFzQztRQUF0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFaakQsU0FBSSxHQUE4QixZQUFZLENBQUM7UUFHaEQsV0FBTSxHQUFHLElBQUksR0FBRyxDQUFrQztZQUN4RCxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUEsK0JBQStCLENBQUM7WUFDbEQsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLG1DQUFtQyxDQUFDO1lBQ3hELENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQSxpQ0FBaUMsQ0FBQztZQUNyRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUEsMkJBQTJCLENBQUM7WUFDN0MsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLGlDQUFpQyxDQUFDO1lBQ3RELENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSxpQ0FBaUMsQ0FBQztTQUN2RCxDQUFDLENBQUM7SUFFMEQsQ0FBQztJQUU5RCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxLQUE4QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQWUsQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBdUIsQ0FBQztTQUNwRDtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUE0QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1QixPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OztZQW5FRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0dBWVQ7Z0JBYUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBWDdDOzs7Ozs7Ozs7S0FTQzthQUdKOzs7WUE5QlEseUJBQXlCOzs7b0JBZ0MvQixLQUFLO21CQUNMLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVEFsaWduLCBUVmVydGljYWxBbGlnbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGItYWxpZ24nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbCBbbmdTd2l0Y2hdPVwibW9kZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid2ZXJ0aWNhbCdcIiBpMThuPVwiQWxpZ24gU2V0dGluZ3N8VmVydGljYWwgQWxpZ25cIj5WZXJ0aWNhbCBBbGlnbjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdCBpMThuPVwiQWxpZ24gU2V0dGluZ3N8QWxpZ25cIj5BbGlnbjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJjdXJyZW50TW9kZWxcIiBkaXNhYmxlUmlwcGxlIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBwb3NpdGlvbiBvZiBnZXRQb3NpdGlvbnMoKVwiIFt2YWx1ZV09XCJwb3NpdGlvblwiPlxyXG4gICAgICAgICAge3sgZ2V0TGFiZWwocG9zaXRpb24pIH19XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIDpob3N0IHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbWF0LWZvcm0tZmllbGQge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICBgXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWxpZ25Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIG1vZGVsOiB7IGFsaWduPzogVEFsaWduOyB2ZXJ0aWNhbEFsaWduPzogVFZlcnRpY2FsQWxpZ24gfTtcclxuICBASW5wdXQoKSBtb2RlOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGxhYmVscyA9IG5ldyBNYXA8VEFsaWduIHwgVFZlcnRpY2FsQWxpZ24sIHN0cmluZz4oW1xyXG4gICAgWydsZWZ0JywgJGxvY2FsaXplYDpAQGhvcml6b250YWxfYWxpZ25fbGVmdDpMZWZ0YF0sXHJcbiAgICBbJ2NlbnRlcicsICRsb2NhbGl6ZWA6QEBob3Jpem9udGFsX2FsaWduX2NlbnRlcjpDZW50ZXJgXSxcclxuICAgIFsncmlnaHQnLCAkbG9jYWxpemVgOkBAaG9yaXpvbnRhbF9hbGlnbl9yaWdodDpSaWdodGBdLFxyXG4gICAgWyd0b3AnLCAkbG9jYWxpemVgOkBAdmVydGljYWxfYWxpZ25fdG9wOlRvcGBdLFxyXG4gICAgWydtaWRkbGUnLCAkbG9jYWxpemVgOkBAdmVydGljYWxfYWxpZ25fbWlkZGxlOk1pZGRsZWBdLFxyXG4gICAgWydib3R0b20nLCAkbG9jYWxpemVgOkBAdmVydGljYWxfYWxpZ25fYm90dG9tOkJvdHRvbWBdXHJcbiAgXSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW1haWxPYmplY3Q6IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UpIHt9XHJcblxyXG4gIGdldCBjdXJyZW50TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5hbGlnbiB8fCB0aGlzLm1vZGVsLnZlcnRpY2FsQWxpZ247XHJcbiAgfVxyXG5cclxuICBzZXQgY3VycmVudE1vZGVsKHZhbHVlOiBUQWxpZ24gfCBUVmVydGljYWxBbGlnbikge1xyXG4gICAgaWYgKHRoaXMubW9kZWwuYWxpZ24pIHtcclxuICAgICAgdGhpcy5tb2RlbC5hbGlnbiA9IHZhbHVlIGFzIFRBbGlnbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kZWwudmVydGljYWxBbGlnbiA9IHZhbHVlIGFzIFRWZXJ0aWNhbEFsaWduO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsKGtleTogVEFsaWduIHwgVFZlcnRpY2FsQWxpZ24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmdldChrZXkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zaXRpb25zKCk6IFRBbGlnbltdIHwgVFZlcnRpY2FsQWxpZ25bXSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAndmVydGljYWwnKSB7XHJcbiAgICAgIHJldHVybiBbJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJ107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Pobuca.
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*/
|
|
5
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
-
export class BackRepatComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.disabled = false;
|
|
9
|
-
this.repeatLabels = new Map([
|
|
10
|
-
['no-repeat', $localize `:@@no_repeat:No`],
|
|
11
|
-
['repeat', $localize `:@@repeat:Repeat`],
|
|
12
|
-
['repeat-x', $localize `:@@repeat_x:X`],
|
|
13
|
-
['repeat-y', $localize `:@@repeat_y:Y`],
|
|
14
|
-
['round', $localize `:@@repeat_round:Round`],
|
|
15
|
-
['space', $localize `:@@repeat_space:Space`]
|
|
16
|
-
]);
|
|
17
|
-
}
|
|
18
|
-
getRepeats() {
|
|
19
|
-
return ['no-repeat', 'repeat', 'repeat-x', 'repeat-y'];
|
|
20
|
-
}
|
|
21
|
-
getRepeatLabel(repeat) {
|
|
22
|
-
return this.repeatLabels.get(repeat);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
BackRepatComponent.decorators = [
|
|
26
|
-
{ type: Component, args: [{
|
|
27
|
-
selector: 'pb-back-repeat',
|
|
28
|
-
template: `
|
|
29
|
-
<mat-form-field appearance="outline">
|
|
30
|
-
<mat-label i18n="settings|Background Repeat">Repeat</mat-label>
|
|
31
|
-
<mat-select [(value)]="model.repeat" [disabled]="disabled" disableRipple>
|
|
32
|
-
<mat-option *ngFor="let repeat of getRepeats()" [value]="repeat">
|
|
33
|
-
{{ getRepeatLabel(repeat) }}
|
|
34
|
-
</mat-option>
|
|
35
|
-
</mat-select>
|
|
36
|
-
</mat-form-field>
|
|
37
|
-
`,
|
|
38
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
39
|
-
styles: [`
|
|
40
|
-
:host {
|
|
41
|
-
display: block;
|
|
42
|
-
width: 100%;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
mat-form-field {
|
|
46
|
-
width: 100%;
|
|
47
|
-
}
|
|
48
|
-
`]
|
|
49
|
-
},] }
|
|
50
|
-
];
|
|
51
|
-
BackRepatComponent.propDecorators = {
|
|
52
|
-
model: [{ type: Input }],
|
|
53
|
-
disabled: [{ type: Input }]
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
+
export class BackRepatComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.repeatLabels = new Map([
|
|
10
|
+
['no-repeat', $localize `:@@no_repeat:No`],
|
|
11
|
+
['repeat', $localize `:@@repeat:Repeat`],
|
|
12
|
+
['repeat-x', $localize `:@@repeat_x:X`],
|
|
13
|
+
['repeat-y', $localize `:@@repeat_y:Y`],
|
|
14
|
+
['round', $localize `:@@repeat_round:Round`],
|
|
15
|
+
['space', $localize `:@@repeat_space:Space`]
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
getRepeats() {
|
|
19
|
+
return ['no-repeat', 'repeat', 'repeat-x', 'repeat-y'];
|
|
20
|
+
}
|
|
21
|
+
getRepeatLabel(repeat) {
|
|
22
|
+
return this.repeatLabels.get(repeat);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
BackRepatComponent.decorators = [
|
|
26
|
+
{ type: Component, args: [{
|
|
27
|
+
selector: 'pb-back-repeat',
|
|
28
|
+
template: `
|
|
29
|
+
<mat-form-field appearance="outline">
|
|
30
|
+
<mat-label i18n="settings|Background Repeat">Repeat</mat-label>
|
|
31
|
+
<mat-select [(value)]="model.repeat" [disabled]="disabled" disableRipple>
|
|
32
|
+
<mat-option *ngFor="let repeat of getRepeats()" [value]="repeat">
|
|
33
|
+
{{ getRepeatLabel(repeat) }}
|
|
34
|
+
</mat-option>
|
|
35
|
+
</mat-select>
|
|
36
|
+
</mat-form-field>
|
|
37
|
+
`,
|
|
38
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
39
|
+
styles: [`
|
|
40
|
+
:host {
|
|
41
|
+
display: block;
|
|
42
|
+
width: 100%;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
mat-form-field {
|
|
46
|
+
width: 100%;
|
|
47
|
+
}
|
|
48
|
+
`]
|
|
49
|
+
},] }
|
|
50
|
+
];
|
|
51
|
+
BackRepatComponent.propDecorators = {
|
|
52
|
+
model: [{ type: Input }],
|
|
53
|
+
disabled: [{ type: Input }]
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1yZXBlYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2JhY2stcmVwZWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNkIxRSxNQUFNLE9BQU8sa0JBQWtCO0lBMUIvQjtRQTRCVyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDN0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFBLGlCQUFpQixDQUFDO1lBQ3pDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSxrQkFBa0IsQ0FBQztZQUN2QyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUEsZUFBZSxDQUFDO1lBQ3RDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQSxlQUFlLENBQUM7WUFDdEMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFBLHVCQUF1QixDQUFDO1lBQzNDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQSx1QkFBdUIsQ0FBQztTQUM1QyxDQUFDLENBQUM7SUFTTCxDQUFDO0lBUEMsVUFBVTtRQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXlCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7O1lBN0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2dCQWFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVg3Qzs7Ozs7Ozs7O0tBU0M7YUFHSjs7O29CQUVFLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUJhY2tncm91bmQsIFRCYWNrZ3JvdW5kUmVwZWF0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGItYmFjay1yZXBlYXQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwic2V0dGluZ3N8QmFja2dyb3VuZCBSZXBlYXRcIj5SZXBlYXQ8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwibW9kZWwucmVwZWF0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgZGlzYWJsZVJpcHBsZT5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcmVwZWF0IG9mIGdldFJlcGVhdHMoKVwiIFt2YWx1ZV09XCJyZXBlYXRcIj5cclxuICAgICAgICAgIHt7IGdldFJlcGVhdExhYmVsKHJlcGVhdCkgfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtcclxuICAgIGBcclxuICAgICAgOmhvc3Qge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBtYXQtZm9ybS1maWVsZCB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIGBcclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYWNrUmVwYXRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIG1vZGVsOiBJQmFja2dyb3VuZDtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlcGVhdExhYmVscyA9IG5ldyBNYXAoW1xyXG4gICAgWyduby1yZXBlYXQnLCAkbG9jYWxpemVgOkBAbm9fcmVwZWF0Ok5vYF0sXHJcbiAgICBbJ3JlcGVhdCcsICRsb2NhbGl6ZWA6QEByZXBlYXQ6UmVwZWF0YF0sXHJcbiAgICBbJ3JlcGVhdC14JywgJGxvY2FsaXplYDpAQHJlcGVhdF94OlhgXSxcclxuICAgIFsncmVwZWF0LXknLCAkbG9jYWxpemVgOkBAcmVwZWF0X3k6WWBdLFxyXG4gICAgWydyb3VuZCcsICRsb2NhbGl6ZWA6QEByZXBlYXRfcm91bmQ6Um91bmRgXSxcclxuICAgIFsnc3BhY2UnLCAkbG9jYWxpemVgOkBAcmVwZWF0X3NwYWNlOlNwYWNlYF1cclxuICBdKTtcclxuXHJcbiAgZ2V0UmVwZWF0cygpOiBUQmFja2dyb3VuZFJlcGVhdFtdIHtcclxuICAgIHJldHVybiBbJ25vLXJlcGVhdCcsICdyZXBlYXQnLCAncmVwZWF0LXgnLCAncmVwZWF0LXknXTtcclxuICB9XHJcblxyXG4gIGdldFJlcGVhdExhYmVsKHJlcGVhdDogVEJhY2tncm91bmRSZXBlYXQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmVwZWF0TGFiZWxzLmdldChyZXBlYXQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Pobuca.
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*/
|
|
5
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
-
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
-
export class BorderComponent {
|
|
8
|
-
constructor(emailObject) {
|
|
9
|
-
this.emailObject = emailObject;
|
|
10
|
-
this._styleLabels = new Map([
|
|
11
|
-
['solid', $localize `:@@border_style_solid:Solid`],
|
|
12
|
-
['dotted', $localize `:@@border_style_dotted:Dotted`],
|
|
13
|
-
['dashed', $localize `:@@border_style_dashed:Dashed`],
|
|
14
|
-
['double', $localize `:@@border_style_double:Double`],
|
|
15
|
-
['groove', $localize `:@@border_style_groove:Groove`]
|
|
16
|
-
]);
|
|
17
|
-
}
|
|
18
|
-
get styleLabels() {
|
|
19
|
-
return [...this._styleLabels.keys()];
|
|
20
|
-
}
|
|
21
|
-
getStyleLabel(style) {
|
|
22
|
-
// tslint:disable-next-line:no-non-null-assertion
|
|
23
|
-
return this._styleLabels.get(style);
|
|
24
|
-
}
|
|
25
|
-
markForCheck() {
|
|
26
|
-
this.emailObject.markForCheck();
|
|
27
|
-
}
|
|
28
|
-
isEven() {
|
|
29
|
-
return Object.keys(this.border).length % 2 === 0;
|
|
30
|
-
}
|
|
31
|
-
hasOwnProperty(property) {
|
|
32
|
-
return this.border.hasOwnProperty(property);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
BorderComponent.decorators = [
|
|
36
|
-
{ type: Component, args: [{
|
|
37
|
-
selector: 'pb-border',
|
|
38
|
-
template: `
|
|
39
|
-
<div class="group" [class.three]="isEven()">
|
|
40
|
-
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('width')">
|
|
41
|
-
<mat-label i18n="Border Settings|Change Border Width">Width</mat-label>
|
|
42
|
-
<input
|
|
43
|
-
matInput
|
|
44
|
-
[(ngModel)]="border.width"
|
|
45
|
-
type="number"
|
|
46
|
-
min="0"
|
|
47
|
-
step="1"
|
|
48
|
-
(input)="markForCheck()"
|
|
49
|
-
i18n-placeholder
|
|
50
|
-
placeholder="Border Settings|Change Border Width"
|
|
51
|
-
/>
|
|
52
|
-
</mat-form-field>
|
|
53
|
-
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('radius')">
|
|
54
|
-
<mat-label i18n="Border Settings|Change Border Radius">Radius</mat-label>
|
|
55
|
-
<input
|
|
56
|
-
matInput
|
|
57
|
-
[(ngModel)]="border.radius"
|
|
58
|
-
type="number"
|
|
59
|
-
min="0"
|
|
60
|
-
step="1"
|
|
61
|
-
(input)="markForCheck()"
|
|
62
|
-
i18n-placeholder
|
|
63
|
-
placeholder="Border Settings|Change Border Radius"
|
|
64
|
-
/>
|
|
65
|
-
</mat-form-field>
|
|
66
|
-
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('style')" style="min-width: 90px">
|
|
67
|
-
<mat-label i18n="Border Settings|Change Border Style">Style</mat-label>
|
|
68
|
-
<mat-select
|
|
69
|
-
placeholder="Style"
|
|
70
|
-
[disabled]="!border.width"
|
|
71
|
-
[(value)]="border.style"
|
|
72
|
-
(selectionChange)="markForCheck()"
|
|
73
|
-
disableRipple
|
|
74
|
-
>
|
|
75
|
-
<mat-option *ngFor="let style of styleLabels" [value]="style">
|
|
76
|
-
{{ getStyleLabel(style) }}
|
|
77
|
-
</mat-option>
|
|
78
|
-
</mat-select>
|
|
79
|
-
</mat-form-field>
|
|
80
|
-
</div>
|
|
81
|
-
<pb-color [options]="border" [disabled]="!border.width" *ngIf="hasOwnProperty('color')" key="color"></pb-color>
|
|
82
|
-
`,
|
|
83
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84
|
-
styles: [`
|
|
85
|
-
:host {
|
|
86
|
-
display: block;
|
|
87
|
-
width: 100%;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
mat-form-field {
|
|
91
|
-
width: 100%;
|
|
92
|
-
}
|
|
93
|
-
`]
|
|
94
|
-
},] }
|
|
95
|
-
];
|
|
96
|
-
BorderComponent.ctorParameters = () => [
|
|
97
|
-
{ type: PbEmailObjectStoreService }
|
|
98
|
-
];
|
|
99
|
-
BorderComponent.propDecorators = {
|
|
100
|
-
border: [{ type: Input }]
|
|
101
|
-
};
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
+
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
+
export class BorderComponent {
|
|
8
|
+
constructor(emailObject) {
|
|
9
|
+
this.emailObject = emailObject;
|
|
10
|
+
this._styleLabels = new Map([
|
|
11
|
+
['solid', $localize `:@@border_style_solid:Solid`],
|
|
12
|
+
['dotted', $localize `:@@border_style_dotted:Dotted`],
|
|
13
|
+
['dashed', $localize `:@@border_style_dashed:Dashed`],
|
|
14
|
+
['double', $localize `:@@border_style_double:Double`],
|
|
15
|
+
['groove', $localize `:@@border_style_groove:Groove`]
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
get styleLabels() {
|
|
19
|
+
return [...this._styleLabels.keys()];
|
|
20
|
+
}
|
|
21
|
+
getStyleLabel(style) {
|
|
22
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
23
|
+
return this._styleLabels.get(style);
|
|
24
|
+
}
|
|
25
|
+
markForCheck() {
|
|
26
|
+
this.emailObject.markForCheck();
|
|
27
|
+
}
|
|
28
|
+
isEven() {
|
|
29
|
+
return Object.keys(this.border).length % 2 === 0;
|
|
30
|
+
}
|
|
31
|
+
hasOwnProperty(property) {
|
|
32
|
+
return this.border.hasOwnProperty(property);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
BorderComponent.decorators = [
|
|
36
|
+
{ type: Component, args: [{
|
|
37
|
+
selector: 'pb-border',
|
|
38
|
+
template: `
|
|
39
|
+
<div class="group" [class.three]="isEven()">
|
|
40
|
+
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('width')">
|
|
41
|
+
<mat-label i18n="Border Settings|Change Border Width">Width</mat-label>
|
|
42
|
+
<input
|
|
43
|
+
matInput
|
|
44
|
+
[(ngModel)]="border.width"
|
|
45
|
+
type="number"
|
|
46
|
+
min="0"
|
|
47
|
+
step="1"
|
|
48
|
+
(input)="markForCheck()"
|
|
49
|
+
i18n-placeholder
|
|
50
|
+
placeholder="Border Settings|Change Border Width"
|
|
51
|
+
/>
|
|
52
|
+
</mat-form-field>
|
|
53
|
+
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('radius')">
|
|
54
|
+
<mat-label i18n="Border Settings|Change Border Radius">Radius</mat-label>
|
|
55
|
+
<input
|
|
56
|
+
matInput
|
|
57
|
+
[(ngModel)]="border.radius"
|
|
58
|
+
type="number"
|
|
59
|
+
min="0"
|
|
60
|
+
step="1"
|
|
61
|
+
(input)="markForCheck()"
|
|
62
|
+
i18n-placeholder
|
|
63
|
+
placeholder="Border Settings|Change Border Radius"
|
|
64
|
+
/>
|
|
65
|
+
</mat-form-field>
|
|
66
|
+
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('style')" style="min-width: 90px">
|
|
67
|
+
<mat-label i18n="Border Settings|Change Border Style">Style</mat-label>
|
|
68
|
+
<mat-select
|
|
69
|
+
placeholder="Style"
|
|
70
|
+
[disabled]="!border.width"
|
|
71
|
+
[(value)]="border.style"
|
|
72
|
+
(selectionChange)="markForCheck()"
|
|
73
|
+
disableRipple
|
|
74
|
+
>
|
|
75
|
+
<mat-option *ngFor="let style of styleLabels" [value]="style">
|
|
76
|
+
{{ getStyleLabel(style) }}
|
|
77
|
+
</mat-option>
|
|
78
|
+
</mat-select>
|
|
79
|
+
</mat-form-field>
|
|
80
|
+
</div>
|
|
81
|
+
<pb-color [options]="border" [disabled]="!border.width" *ngIf="hasOwnProperty('color')" key="color"></pb-color>
|
|
82
|
+
`,
|
|
83
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84
|
+
styles: [`
|
|
85
|
+
:host {
|
|
86
|
+
display: block;
|
|
87
|
+
width: 100%;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
mat-form-field {
|
|
91
|
+
width: 100%;
|
|
92
|
+
}
|
|
93
|
+
`]
|
|
94
|
+
},] }
|
|
95
|
+
];
|
|
96
|
+
BorderComponent.ctorParameters = () => [
|
|
97
|
+
{ type: PbEmailObjectStoreService }
|
|
98
|
+
];
|
|
99
|
+
BorderComponent.propDecorators = {
|
|
100
|
+
border: [{ type: Input }]
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2dyb3Vwcy9ib3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUErRHRILE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLFdBQXNDO1FBQXRDLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtRQUVsRCxpQkFBWSxHQUFHLElBQUksR0FBRyxDQUEyQjtZQUN2RCxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUEsNkJBQTZCLENBQUM7WUFDakQsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLCtCQUErQixDQUFDO1lBQ3BELENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSwrQkFBK0IsQ0FBQztZQUNwRCxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUEsK0JBQStCLENBQUM7WUFDcEQsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLCtCQUErQixDQUFDO1NBQ3JELENBQUMsQ0FBQztJQVIwRCxDQUFDO0lBVTlELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXVCO1FBQ25DLGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OztZQTdGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7Z0JBYUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBWDdDOzs7Ozs7Ozs7S0FTQzthQUdKOzs7WUE5RFEseUJBQXlCOzs7cUJBZ0UvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cclxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJQm9yZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVybmFscy9wYi1lbWFpbC1vYmplY3Qtc3RvcmUvcGItZW1haWwtb2JqZWN0LXN0b3JlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYi1ib3JkZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiBbY2xhc3MudGhyZWVdPVwiaXNFdmVuKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJoYXNPd25Qcm9wZXJ0eSgnd2lkdGgnKVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cIkJvcmRlciBTZXR0aW5nc3xDaGFuZ2UgQm9yZGVyIFdpZHRoXCI+V2lkdGg8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImJvcmRlci53aWR0aFwiXHJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgIG1pbj1cIjBcIlxyXG4gICAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm1hcmtGb3JDaGVjaygpXCJcclxuICAgICAgICAgIGkxOG4tcGxhY2Vob2xkZXJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQm9yZGVyIFNldHRpbmdzfENoYW5nZSBCb3JkZXIgV2lkdGhcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzT3duUHJvcGVydHkoJ3JhZGl1cycpXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwiQm9yZGVyIFNldHRpbmdzfENoYW5nZSBCb3JkZXIgUmFkaXVzXCI+UmFkaXVzPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJib3JkZXIucmFkaXVzXCJcclxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgbWluPVwiMFwiXHJcbiAgICAgICAgICBzdGVwPVwiMVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwibWFya0ZvckNoZWNrKClcIlxyXG4gICAgICAgICAgaTE4bi1wbGFjZWhvbGRlclxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJCb3JkZXIgU2V0dGluZ3N8Q2hhbmdlIEJvcmRlciBSYWRpdXNcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzT3duUHJvcGVydHkoJ3N0eWxlJylcIiBzdHlsZT1cIm1pbi13aWR0aDogOTBweFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cIkJvcmRlciBTZXR0aW5nc3xDaGFuZ2UgQm9yZGVyIFN0eWxlXCI+U3R5bGU8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTdHlsZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWJvcmRlci53aWR0aFwiXHJcbiAgICAgICAgICBbKHZhbHVlKV09XCJib3JkZXIuc3R5bGVcIlxyXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJtYXJrRm9yQ2hlY2soKVwiXHJcbiAgICAgICAgICBkaXNhYmxlUmlwcGxlXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHN0eWxlIG9mIHN0eWxlTGFiZWxzXCIgW3ZhbHVlXT1cInN0eWxlXCI+XHJcbiAgICAgICAgICAgIHt7IGdldFN0eWxlTGFiZWwoc3R5bGUpIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8cGItY29sb3IgW29wdGlvbnNdPVwiYm9yZGVyXCIgW2Rpc2FibGVkXT1cIiFib3JkZXIud2lkdGhcIiAqbmdJZj1cImhhc093blByb3BlcnR5KCdjb2xvcicpXCIga2V5PVwiY29sb3JcIj48L3BiLWNvbG9yPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIDpob3N0IHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbWF0LWZvcm0tZmllbGQge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICBgXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm9yZGVyQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBib3JkZXI6IElCb3JkZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW1haWxPYmplY3Q6IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UpIHt9XHJcblxyXG4gIHByaXZhdGUgX3N0eWxlTGFiZWxzID0gbmV3IE1hcDxJQm9yZGVyWydzdHlsZSddLCBzdHJpbmc+KFtcclxuICAgIFsnc29saWQnLCAkbG9jYWxpemVgOkBAYm9yZGVyX3N0eWxlX3NvbGlkOlNvbGlkYF0sXHJcbiAgICBbJ2RvdHRlZCcsICRsb2NhbGl6ZWA6QEBib3JkZXJfc3R5bGVfZG90dGVkOkRvdHRlZGBdLFxyXG4gICAgWydkYXNoZWQnLCAkbG9jYWxpemVgOkBAYm9yZGVyX3N0eWxlX2Rhc2hlZDpEYXNoZWRgXSxcclxuICAgIFsnZG91YmxlJywgJGxvY2FsaXplYDpAQGJvcmRlcl9zdHlsZV9kb3VibGU6RG91YmxlYF0sXHJcbiAgICBbJ2dyb292ZScsICRsb2NhbGl6ZWA6QEBib3JkZXJfc3R5bGVfZ3Jvb3ZlOkdyb292ZWBdXHJcbiAgXSk7XHJcblxyXG4gIGdldCBzdHlsZUxhYmVscygpOiBJQm9yZGVyWydzdHlsZSddW10ge1xyXG4gICAgcmV0dXJuIFsuLi50aGlzLl9zdHlsZUxhYmVscy5rZXlzKCldO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3R5bGVMYWJlbChzdHlsZTogSUJvcmRlclsnc3R5bGUnXSk6IHN0cmluZyB7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5fc3R5bGVMYWJlbHMuZ2V0KHN0eWxlKSE7XHJcbiAgfVxyXG5cclxuICBtYXJrRm9yQ2hlY2soKSB7XHJcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaXNFdmVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYm9yZGVyKS5sZW5ndGggJSAyID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaGFzT3duUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyLmhhc093blByb3BlcnR5KHByb3BlcnR5KTtcclxuICB9XHJcbn1cclxuIl19
|