@adlfe/campaign-management-library 2.11.1 → 2.11.4
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/adlfe-campaign-management-library.d.ts +14 -9
- package/adlfe-campaign-management-library.metadata.json +1 -1
- package/bundles/adlfe-campaign-management-library.umd.js +372 -109
- package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
- package/bundles/adlfe-campaign-management-library.umd.min.js +1 -1
- package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
- package/esm2015/adlfe-campaign-management-library.js +15 -10
- package/esm2015/environments/environment.js +3 -3
- package/esm2015/lib/campaign-management/campaign-management.module.js +4 -2
- package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.component.js +113 -0
- package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.module.js +18 -0
- package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +12 -2
- package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +45 -43
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +64 -5
- package/esm2015/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
- package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +45 -41
- package/esm2015/lib/campaign-management/validators/index.js +12 -0
- package/esm2015/lib/campaign-management/validators/max.validator.js +14 -0
- package/esm2015/lib/campaign-management/validators/min.validator.js +14 -0
- package/esm2015/lib/campaign-management/validators/required.validator.js +10 -0
- package/esm2015/lib/core/const/constants.const.js +6 -6
- package/esm2015/lib/core/const/validation-message.const.js +5 -2
- package/esm2015/public-api.js +1 -6
- package/esm5/adlfe-campaign-management-library.js +15 -10
- package/esm5/environments/environment.js +3 -3
- package/esm5/lib/campaign-management/campaign-management.module.js +4 -2
- package/esm5/lib/campaign-management/components/input-numeric/input-numeric.component.js +127 -0
- package/esm5/lib/campaign-management/components/input-numeric/input-numeric.module.js +21 -0
- package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +12 -2
- package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +44 -40
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +68 -5
- package/esm5/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
- package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +45 -41
- package/esm5/lib/campaign-management/validators/index.js +12 -0
- package/esm5/lib/campaign-management/validators/max.validator.js +14 -0
- package/esm5/lib/campaign-management/validators/min.validator.js +14 -0
- package/esm5/lib/campaign-management/validators/required.validator.js +10 -0
- package/esm5/lib/core/const/constants.const.js +6 -6
- package/esm5/lib/core/const/validation-message.const.js +5 -2
- package/esm5/public-api.js +1 -6
- package/fesm2015/adlfe-campaign-management-library.js +419 -179
- package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
- package/fesm5/adlfe-campaign-management-library.js +439 -176
- package/fesm5/adlfe-campaign-management-library.js.map +1 -1
- package/lib/campaign-management/components/input-numeric/input-numeric.component.d.ts +30 -0
- package/lib/campaign-management/components/input-numeric/input-numeric.module.d.ts +2 -0
- package/lib/campaign-management/models/general-information-wa-req.model.d.ts +3 -0
- package/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.d.ts +7 -0
- package/lib/campaign-management/validators/index.d.ts +8 -0
- package/lib/campaign-management/validators/max.validator.d.ts +2 -0
- package/lib/campaign-management/validators/min.validator.d.ts +2 -0
- package/lib/campaign-management/validators/required.validator.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +0 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __param } from 'tslib';
|
|
2
|
-
import { Component, EventEmitter, Output, Input, NgModule, NgZone, Directive, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, Output, Input, NgModule, ContentChild, forwardRef, NgZone, Directive, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, ViewChild } from '@angular/core';
|
|
3
3
|
import { MapsAPILoader, AgmCoreModule } from '@agm/core';
|
|
4
4
|
import { CommonModule, DatePipe } from '@angular/common';
|
|
5
5
|
import { HttpHeaders, HttpClient, HttpParams, HttpClientModule } from '@angular/common/http';
|
|
@@ -8,7 +8,7 @@ import { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginato
|
|
|
8
8
|
import { NgxEchartsModule } from 'ngx-echarts';
|
|
9
9
|
import { ToastrService, ToastrModule } from 'ngx-toastr';
|
|
10
10
|
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
11
|
-
import { FormControl, FormsModule, ReactiveFormsModule, FormGroup, Validators, FormArray } from '@angular/forms';
|
|
11
|
+
import { FormControl, FormsModule, ReactiveFormsModule, ControlContainer, NG_VALUE_ACCESSOR, FormGroup, Validators as Validators$1, FormArray } from '@angular/forms';
|
|
12
12
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
13
13
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
14
14
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -159,6 +159,125 @@ CampaignManagementComponent = __decorate([
|
|
|
159
159
|
})
|
|
160
160
|
], CampaignManagementComponent);
|
|
161
161
|
|
|
162
|
+
var InputNumericComponent_1;
|
|
163
|
+
let InputNumericComponent = InputNumericComponent_1 = class InputNumericComponent {
|
|
164
|
+
constructor(controlContainer) {
|
|
165
|
+
this.controlContainer = controlContainer;
|
|
166
|
+
this.allowDecimal = true;
|
|
167
|
+
}
|
|
168
|
+
handleInput(event) {
|
|
169
|
+
const inputElement = event.target;
|
|
170
|
+
const value = inputElement.value || '';
|
|
171
|
+
let numeric = this.allowDecimal ? value.replace(/[^0-9.]/g, '') : value.replace(/\D/g, '');
|
|
172
|
+
if (this.allowDecimal) {
|
|
173
|
+
const parts = numeric.split('.');
|
|
174
|
+
if (parts.length > 2) {
|
|
175
|
+
numeric = parts[0] + '.' + parts.slice(1).join('');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (this.disallowLeadingZero &&
|
|
179
|
+
numeric.startsWith('0') &&
|
|
180
|
+
numeric.length > 1 &&
|
|
181
|
+
numeric[1] !== '.') {
|
|
182
|
+
numeric = numeric.replace(/^0+/, '');
|
|
183
|
+
}
|
|
184
|
+
let finalValue = numeric;
|
|
185
|
+
if (this.trimLeadingZeros && numeric !== '' && !numeric.includes('.')) {
|
|
186
|
+
finalValue = +numeric;
|
|
187
|
+
}
|
|
188
|
+
this.formControl.patchValue(finalValue, { emitEvent: false });
|
|
189
|
+
}
|
|
190
|
+
ngOnInit() {
|
|
191
|
+
this.setBaseStateInitialization();
|
|
192
|
+
}
|
|
193
|
+
setBaseStateInitialization() {
|
|
194
|
+
if (!this.formControlName)
|
|
195
|
+
return;
|
|
196
|
+
const formGroup = this.controlContainer.control;
|
|
197
|
+
this.formControl = formGroup.get(this.formControlName);
|
|
198
|
+
}
|
|
199
|
+
get isValid() {
|
|
200
|
+
var _a, _b;
|
|
201
|
+
return !!(((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.touched) && ((_b = this.formControl) === null || _b === void 0 ? void 0 : _b.valid));
|
|
202
|
+
}
|
|
203
|
+
get isInvalid() {
|
|
204
|
+
var _a, _b;
|
|
205
|
+
return !!(((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.touched) && ((_b = this.formControl) === null || _b === void 0 ? void 0 : _b.invalid));
|
|
206
|
+
}
|
|
207
|
+
get errors() {
|
|
208
|
+
return this.formControl.errors;
|
|
209
|
+
}
|
|
210
|
+
writeValue(value) {
|
|
211
|
+
this._value = value;
|
|
212
|
+
}
|
|
213
|
+
registerOnChange(fn) {
|
|
214
|
+
this._onBaseChange = fn;
|
|
215
|
+
}
|
|
216
|
+
registerOnTouched(fn) {
|
|
217
|
+
this._onBaseTouched = fn;
|
|
218
|
+
}
|
|
219
|
+
setDisabledState(isDisabled) {
|
|
220
|
+
this._isDisabled = isDisabled;
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
InputNumericComponent.ctorParameters = () => [
|
|
224
|
+
{ type: ControlContainer }
|
|
225
|
+
];
|
|
226
|
+
__decorate([
|
|
227
|
+
Input()
|
|
228
|
+
], InputNumericComponent.prototype, "formControlName", void 0);
|
|
229
|
+
__decorate([
|
|
230
|
+
Input()
|
|
231
|
+
], InputNumericComponent.prototype, "formControl", void 0);
|
|
232
|
+
__decorate([
|
|
233
|
+
Input()
|
|
234
|
+
], InputNumericComponent.prototype, "trimLeadingZeros", void 0);
|
|
235
|
+
__decorate([
|
|
236
|
+
Input()
|
|
237
|
+
], InputNumericComponent.prototype, "disallowLeadingZero", void 0);
|
|
238
|
+
__decorate([
|
|
239
|
+
Input()
|
|
240
|
+
], InputNumericComponent.prototype, "allowDecimal", void 0);
|
|
241
|
+
__decorate([
|
|
242
|
+
Input()
|
|
243
|
+
], InputNumericComponent.prototype, "identifier", void 0);
|
|
244
|
+
__decorate([
|
|
245
|
+
Input()
|
|
246
|
+
], InputNumericComponent.prototype, "placeholder", void 0);
|
|
247
|
+
__decorate([
|
|
248
|
+
Input()
|
|
249
|
+
], InputNumericComponent.prototype, "label", void 0);
|
|
250
|
+
__decorate([
|
|
251
|
+
Input()
|
|
252
|
+
], InputNumericComponent.prototype, "maxLength", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
ContentChild('suffix')
|
|
255
|
+
], InputNumericComponent.prototype, "suffixTmpl", void 0);
|
|
256
|
+
InputNumericComponent = InputNumericComponent_1 = __decorate([
|
|
257
|
+
Component({
|
|
258
|
+
selector: 'app-input[type=numeric]',
|
|
259
|
+
template: "<div class=\"grid\">\r\n <mat-form-field class=\"w-full\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label *ngIf=\"label\">\r\n <span>{{ label }}</span>\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n [id]=\"identifier\"\r\n [attr.data-testid]=\"identifier\"\r\n matInput\r\n [placeholder]=\"placeholder\"\r\n [formControl]=\"formControl\"\r\n (input)=\"handleInput($event)\"\r\n [attr.maxlength]=\"maxLength\"\r\n />\r\n <span *ngIf=\"suffixTmpl\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"suffixTmpl\"></ng-container>\r\n </span>\r\n </mat-form-field>\r\n <mat-error align=\"end\" class=\"leading-zero\" *ngIf=\"isInvalid\">\r\n <small class=\"text-xs\">\r\n {{ errors?.message }}\r\n </small>\r\n </mat-error>\r\n</div>\r\n",
|
|
260
|
+
providers: [
|
|
261
|
+
{
|
|
262
|
+
provide: NG_VALUE_ACCESSOR,
|
|
263
|
+
useExisting: forwardRef(() => InputNumericComponent_1),
|
|
264
|
+
multi: true,
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
styles: [":host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-prefix,:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-suffix{top:0}"]
|
|
268
|
+
})
|
|
269
|
+
], InputNumericComponent);
|
|
270
|
+
|
|
271
|
+
let InputNumericModule = class InputNumericModule {
|
|
272
|
+
};
|
|
273
|
+
InputNumericModule = __decorate([
|
|
274
|
+
NgModule({
|
|
275
|
+
imports: [MatFormFieldModule, MatInputModule, ReactiveFormsModule, CommonModule],
|
|
276
|
+
declarations: [InputNumericComponent],
|
|
277
|
+
exports: [InputNumericComponent],
|
|
278
|
+
})
|
|
279
|
+
], InputNumericModule);
|
|
280
|
+
|
|
162
281
|
let MatSelectInfiniteScrollDirective = class MatSelectInfiniteScrollDirective {
|
|
163
282
|
constructor(matSelect, ngZone) {
|
|
164
283
|
this.matSelect = matSelect;
|
|
@@ -645,11 +764,11 @@ else if (origin.includes('dashboard-qa')) {
|
|
|
645
764
|
}
|
|
646
765
|
// 4. Cek Demo Dev secara spesifik
|
|
647
766
|
else if (origin.includes('demo-dev')) {
|
|
648
|
-
API_CONST = 'https://
|
|
767
|
+
API_CONST = 'https://apibsp-dev.adlsandbox.net';
|
|
649
768
|
}
|
|
650
769
|
// 5. Default (Localhost atau lainnya)
|
|
651
770
|
else {
|
|
652
|
-
API_CONST = 'https://
|
|
771
|
+
API_CONST = 'https://apibsp-dev.adlsandbox.net';
|
|
653
772
|
}
|
|
654
773
|
const environment = {
|
|
655
774
|
production: false,
|
|
@@ -1053,6 +1172,10 @@ const MsgTypeWAOptionConst = [
|
|
|
1053
1172
|
name: 'Template',
|
|
1054
1173
|
code: 'TEMPLATE',
|
|
1055
1174
|
},
|
|
1175
|
+
{
|
|
1176
|
+
name: 'Text - Utility',
|
|
1177
|
+
code: 'utility',
|
|
1178
|
+
},
|
|
1056
1179
|
];
|
|
1057
1180
|
const MsgTypeEmailOptionConst = [
|
|
1058
1181
|
{
|
|
@@ -1134,11 +1257,7 @@ const CampaignPerformanceChartConfig = {
|
|
|
1134
1257
|
{ type: 'bar', color: '#35CDF3' },
|
|
1135
1258
|
],
|
|
1136
1259
|
};
|
|
1137
|
-
const ɵ0 = [
|
|
1138
|
-
'Delivery Rate of Campaigns',
|
|
1139
|
-
'Total Number of Campaigns',
|
|
1140
|
-
'Cost Distribution',
|
|
1141
|
-
], ɵ1 = [], ɵ2 = [], ɵ3 = [], ɵ4 = [];
|
|
1260
|
+
const ɵ0 = ['Delivery Rate of Campaigns', 'Total Number of Campaigns', 'Cost Distribution'], ɵ1 = [], ɵ2 = [], ɵ3 = [], ɵ4 = [];
|
|
1142
1261
|
const ConversationInsightsChartConfig = {
|
|
1143
1262
|
tooltip: {
|
|
1144
1263
|
trigger: 'axis',
|
|
@@ -1250,7 +1369,10 @@ const GeneralInformationMessageValidationConst = {
|
|
|
1250
1369
|
const GeneralInformationWAMessageValidationConst = {
|
|
1251
1370
|
channel: [{ type: 'required', message: 'Message Type is required' }],
|
|
1252
1371
|
from: [{ type: 'required', message: 'From is required' }],
|
|
1253
|
-
text: [
|
|
1372
|
+
text: [
|
|
1373
|
+
{ type: 'required', message: 'Text is required' },
|
|
1374
|
+
{ type: 'maxlength', message: 'Maximum character 1024' },
|
|
1375
|
+
],
|
|
1254
1376
|
media: [{ type: 'required', message: 'Media Type is required' }],
|
|
1255
1377
|
fileName: [{ type: 'required', message: 'File is required' }],
|
|
1256
1378
|
template: [{ type: 'required', message: 'Template is required' }],
|
|
@@ -1540,7 +1662,7 @@ FilterInListOfCampaignComponent = __decorate([
|
|
|
1540
1662
|
Component({
|
|
1541
1663
|
selector: 'lib-filter-in-list-of-campaign',
|
|
1542
1664
|
template: "<p class=\"font-16px font-bold\">Filter</p>\r\n\r\n<form [formGroup]=\"form\" class=\"contact-filter\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-70\">\r\n <mat-label>Business Name</mat-label>\r\n <mat-select placeholder=\"Select Business Name\" formControlName=\"businessName\">\r\n <div class=\"select-search\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n (searchRes)=\"businessNameSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option value=\"\"> --- select none --- </mat-option>\r\n <mat-option\r\n *ngFor=\"let option of filteredBusinessNameOption\"\r\n [value]=\"option.id\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"!filteredBusinessNameOption.length\" disabled>\r\n No data found\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-70\">\r\n <mat-label>Channel</mat-label>\r\n\r\n <mat-select placeholder=\"Select the Channel\" formControlName=\"medium\">\r\n <mat-option value=\"\"> --- select none --- </mat-option>\r\n <mat-option\r\n *ngFor=\"let option of filteredChannelOption\"\r\n [value]=\"option.value\"\r\n (click)=\"getTemplateOptionService()\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n <mat-option *ngIf=\"!filteredChannelOption.length\" disabled>\r\n No data found\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template Name</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"templateName\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('templateName').value?.name\"\r\n (searchRes)=\"templateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-70\">\r\n <mat-label>Status</mat-label>\r\n\r\n <mat-select placeholder=\"Select the Status\" formControlName=\"status\">\r\n <div class=\"select-search\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n (searchRes)=\"statusSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option value=\"\"> --- select none --- </mat-option>\r\n <mat-option\r\n *ngFor=\"let option of filteredStatusOption\"\r\n [value]=\"option.value\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n <mat-option *ngIf=\"!filteredStatusOption.length\" disabled>\r\n No data found\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> Start Date </mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"startDatePicker\"\r\n formControlName=\"startDate\"\r\n class=\"mat-datepicker-input\"\r\n (dateChange)=\"validateBackDate()\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"startDatePicker\">\r\n </mat-datepicker-toggle>\r\n <mat-icon\r\n *ngIf=\"form.get('startDate').value\"\r\n matDatepickerToggleIcon\r\n (click)=\"clearDate()\"\r\n >clear</mat-icon\r\n >\r\n <mat-datepicker #startDatePicker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> End Date </mat-label>\r\n <input\r\n matInput\r\n [min]=\"form.get('startDate').value\"\r\n [matDatepicker]=\"endDatePicker\"\r\n formControlName=\"endDate\"\r\n class=\"mat-datepicker-input\"\r\n (dateChange)=\"validateBackDate()\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"endDatePicker\"> </mat-datepicker-toggle>\r\n <mat-icon\r\n *ngIf=\"form.get('endDate').value\"\r\n matDatepickerToggleIcon\r\n (click)=\"clearDate()\"\r\n >clear</mat-icon\r\n >\r\n <mat-datepicker #endDatePicker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div style=\"display: flex; flex: 1; width: 100%\">\r\n <button\r\n mat-stroked-button\r\n color=\"primary-telin\"\r\n class=\"telin-font-color w-48\"\r\n style=\"width: 100%; margin-bottom: 10px\"\r\n (click)=\"onReset()\"\r\n >\r\n Reset\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <button mat-stroked-button color=\"secondary-telin\" class=\"w-48\" (click)=\"onCancel()\">\r\n Cancel\r\n </button>\r\n\r\n <button mat-flat-button color=\"primary-telin-blue2\" class=\"w-48\" (click)=\"onApply()\">\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n",
|
|
1543
|
-
styles: [".contact-filter .platform{display:grid;grid-gap:5px;grid-template-columns:auto 1fr auto}.button-row{margin:8px 8px 8px 0}.mat-datepicker-input{width:85%}.mat-icon{position:relative;float:right;top:-7px;cursor:pointer;color:rgba(0,0,0,.54)}.select-search{margin:20px}"]
|
|
1665
|
+
styles: [".contact-filter .platform{display:-ms-grid;display:grid;grid-gap:5px;-ms-grid-columns:auto 1fr auto;grid-template-columns:auto 1fr auto}.button-row{margin:8px 8px 8px 0}.mat-datepicker-input{width:85%}.mat-icon{position:relative;float:right;top:-7px;cursor:pointer;color:rgba(0,0,0,.54)}.select-search{margin:20px}"]
|
|
1544
1666
|
}),
|
|
1545
1667
|
Injectable({
|
|
1546
1668
|
providedIn: 'root',
|
|
@@ -1622,7 +1744,7 @@ let PendingApprovalDialogViewComponent = class PendingApprovalDialogViewComponen
|
|
|
1622
1744
|
const subs = this.apiAdapterService
|
|
1623
1745
|
.executeApiRequest([], `/campaign/${(_d = (_c = this.getCampaignStorage) === null || _c === void 0 ? void 0 : _c.generalInformation) === null || _d === void 0 ? void 0 : _d.id}`, 'GET')
|
|
1624
1746
|
.subscribe((resp) => {
|
|
1625
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60;
|
|
1747
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67;
|
|
1626
1748
|
if (!resp)
|
|
1627
1749
|
return;
|
|
1628
1750
|
const generalInformation = {
|
|
@@ -1630,63 +1752,65 @@ let PendingApprovalDialogViewComponent = class PendingApprovalDialogViewComponen
|
|
|
1630
1752
|
medium: (_b = resp.data) === null || _b === void 0 ? void 0 : _b.platform,
|
|
1631
1753
|
channel: ['image', 'video', 'document'].includes((_c = resp.data) === null || _c === void 0 ? void 0 : _c.type)
|
|
1632
1754
|
? 'MEDIA'
|
|
1633
|
-
: (
|
|
1634
|
-
|
|
1755
|
+
: ((_d = resp.data) === null || _d === void 0 ? void 0 : _d.isDirectSend) ? 'utility'
|
|
1756
|
+
: (_f = (_e = resp.data) === null || _e === void 0 ? void 0 : _e.type) === null || _f === void 0 ? void 0 : _f.toUpperCase(),
|
|
1757
|
+
media: (_h = (_g = resp.data) === null || _g === void 0 ? void 0 : _g.type) === null || _h === void 0 ? void 0 : _h.toUpperCase(),
|
|
1758
|
+
isPrevTemplate: (_k = (_j = resp) === null || _j === void 0 ? void 0 : _j.data) === null || _k === void 0 ? void 0 : _k.isPrevTemplate,
|
|
1759
|
+
templateName: (_m = (_l = resp) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.templateName,
|
|
1760
|
+
ttl: (_p = (_o = resp) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.ttlSeconds,
|
|
1635
1761
|
from: {
|
|
1636
|
-
id: (
|
|
1637
|
-
name: (
|
|
1638
|
-
platform: (
|
|
1639
|
-
clientId: (
|
|
1640
|
-
clientName: (
|
|
1641
|
-
accountNo: (
|
|
1642
|
-
wabaId: (
|
|
1762
|
+
id: (_q = resp.data) === null || _q === void 0 ? void 0 : _q.accountId,
|
|
1763
|
+
name: (_r = resp.data) === null || _r === void 0 ? void 0 : _r.accountName,
|
|
1764
|
+
platform: (_s = resp.data) === null || _s === void 0 ? void 0 : _s.platform,
|
|
1765
|
+
clientId: (_t = resp.data) === null || _t === void 0 ? void 0 : _t.clientId,
|
|
1766
|
+
clientName: (_u = resp.data) === null || _u === void 0 ? void 0 : _u.clientName,
|
|
1767
|
+
accountNo: (_v = resp.data) === null || _v === void 0 ? void 0 : _v.accountNo,
|
|
1768
|
+
wabaId: (_x = (_w = resp.data) === null || _w === void 0 ? void 0 : _w.wabaId, (_x !== null && _x !== void 0 ? _x : '')),
|
|
1643
1769
|
},
|
|
1644
|
-
text: (
|
|
1645
|
-
targetURL: (
|
|
1646
|
-
paramHeader: (
|
|
1647
|
-
paramBody: (
|
|
1648
|
-
paramButton: (
|
|
1649
|
-
otpValue: (
|
|
1650
|
-
...(_20 = (_19 = (_18 = (_17 = resp.data) === null || _17 === void 0 ? void 0 : _17.details) === null || _18 === void 0 ? void 0 : _18.template) === null || _19 === void 0 ? void 0 : _19.data, (_20 !== null && _20 !== void 0 ? _20 : [])),
|
|
1651
|
-
]) === null || _21 === void 0 ? void 0 : _21.pop(),
|
|
1770
|
+
text: (_z = (_y = resp.data) === null || _y === void 0 ? void 0 : _y.details) === null || _z === void 0 ? void 0 : _z.text,
|
|
1771
|
+
targetURL: (_11 = (_7 = (_3 = (_2 = (_1 = (_0 = resp.data) === null || _0 === void 0 ? void 0 : _0.details) === null || _1 === void 0 ? void 0 : _1.image) === null || _2 === void 0 ? void 0 : _2.url, (_3 !== null && _3 !== void 0 ? _3 : (_6 = (_5 = (_4 = resp.data) === null || _4 === void 0 ? void 0 : _4.details) === null || _5 === void 0 ? void 0 : _5.document) === null || _6 === void 0 ? void 0 : _6.url)), (_7 !== null && _7 !== void 0 ? _7 : (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.video) === null || _10 === void 0 ? void 0 : _10.url)), (_11 !== null && _11 !== void 0 ? _11 : (_14 = (_13 = (_12 = resp.data) === null || _12 === void 0 ? void 0 : _12.details) === null || _13 === void 0 ? void 0 : _13.template) === null || _14 === void 0 ? void 0 : _14.headerURL)),
|
|
1772
|
+
paramHeader: (_17 = (_16 = (_15 = resp.data) === null || _15 === void 0 ? void 0 : _15.details) === null || _16 === void 0 ? void 0 : _16.template) === null || _17 === void 0 ? void 0 : _17.header,
|
|
1773
|
+
paramBody: (_20 = (_19 = (_18 = resp.data) === null || _18 === void 0 ? void 0 : _18.details) === null || _19 === void 0 ? void 0 : _19.template) === null || _20 === void 0 ? void 0 : _20.data,
|
|
1774
|
+
paramButton: (_23 = (_22 = (_21 = resp.data) === null || _21 === void 0 ? void 0 : _21.details) === null || _22 === void 0 ? void 0 : _22.template) === null || _23 === void 0 ? void 0 : _23.button,
|
|
1775
|
+
otpValue: (_28 = [...(_27 = (_26 = (_25 = (_24 = resp.data) === null || _24 === void 0 ? void 0 : _24.details) === null || _25 === void 0 ? void 0 : _25.template) === null || _26 === void 0 ? void 0 : _26.data, (_27 !== null && _27 !== void 0 ? _27 : []))]) === null || _28 === void 0 ? void 0 : _28.pop(),
|
|
1652
1776
|
template: {
|
|
1653
|
-
ID: (
|
|
1654
|
-
name: (
|
|
1655
|
-
lang: (
|
|
1656
|
-
platform: (
|
|
1657
|
-
headerURL: (
|
|
1777
|
+
ID: (_31 = (_30 = (_29 = resp.data) === null || _29 === void 0 ? void 0 : _29.details) === null || _30 === void 0 ? void 0 : _30.template) === null || _31 === void 0 ? void 0 : _31.id,
|
|
1778
|
+
name: (_34 = (_33 = (_32 = resp.data) === null || _32 === void 0 ? void 0 : _32.details) === null || _33 === void 0 ? void 0 : _33.template) === null || _34 === void 0 ? void 0 : _34.name,
|
|
1779
|
+
lang: (_37 = (_36 = (_35 = resp.data) === null || _35 === void 0 ? void 0 : _35.details) === null || _36 === void 0 ? void 0 : _36.template) === null || _37 === void 0 ? void 0 : _37.lang,
|
|
1780
|
+
platform: (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.platform,
|
|
1781
|
+
headerURL: (_41 = (_40 = (_39 = resp.data) === null || _39 === void 0 ? void 0 : _39.details) === null || _40 === void 0 ? void 0 : _40.template) === null || _41 === void 0 ? void 0 : _41.headerURL,
|
|
1658
1782
|
header: {
|
|
1659
|
-
examples: (
|
|
1783
|
+
examples: (_44 = (_43 = (_42 = resp.data) === null || _42 === void 0 ? void 0 : _42.details) === null || _43 === void 0 ? void 0 : _43.template) === null || _44 === void 0 ? void 0 : _44.header,
|
|
1660
1784
|
},
|
|
1661
1785
|
body: {
|
|
1662
|
-
examples: (
|
|
1786
|
+
examples: (_47 = (_46 = (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.details) === null || _46 === void 0 ? void 0 : _46.template) === null || _47 === void 0 ? void 0 : _47.data,
|
|
1663
1787
|
},
|
|
1664
|
-
buttons: (
|
|
1665
|
-
ClientId: (
|
|
1666
|
-
ClientName: (
|
|
1788
|
+
buttons: (_50 = (_49 = (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.details) === null || _49 === void 0 ? void 0 : _49.template) === null || _50 === void 0 ? void 0 : _50.button,
|
|
1789
|
+
ClientId: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.clientId,
|
|
1790
|
+
ClientName: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.clientName,
|
|
1667
1791
|
},
|
|
1668
|
-
isUpload: ((
|
|
1669
|
-
fileId: (
|
|
1792
|
+
isUpload: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.fileId) !== '',
|
|
1793
|
+
fileId: (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.fileId,
|
|
1670
1794
|
};
|
|
1671
1795
|
localStorage.setItem('telin.campaign', JSON.stringify(Object.assign(Object.assign({}, this.getCampaignStorage), {
|
|
1672
1796
|
generalInformation: {
|
|
1673
|
-
id: (
|
|
1797
|
+
id: (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.id,
|
|
1674
1798
|
form: generalInformation,
|
|
1675
1799
|
},
|
|
1676
|
-
failover: (
|
|
1677
|
-
targetAudience: (
|
|
1800
|
+
failover: (_56 = resp.data) === null || _56 === void 0 ? void 0 : _56.failover,
|
|
1801
|
+
targetAudience: (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.targets,
|
|
1678
1802
|
targetAudienceFile: {
|
|
1679
|
-
name: (
|
|
1680
|
-
targetURL: (
|
|
1803
|
+
name: (_58 = resp.data) === null || _58 === void 0 ? void 0 : _58.fileName,
|
|
1804
|
+
targetURL: (_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.targetURL,
|
|
1681
1805
|
},
|
|
1682
1806
|
scheduler: {
|
|
1683
|
-
schedulerType: ((
|
|
1807
|
+
schedulerType: ((_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.scheduleType) === 'MULTI'
|
|
1684
1808
|
? 'ONE_TIME'
|
|
1685
|
-
: (
|
|
1686
|
-
startDate: (
|
|
1687
|
-
startTime: (
|
|
1688
|
-
isRepeat: ((
|
|
1689
|
-
delivery: (
|
|
1809
|
+
: (_61 = resp.data) === null || _61 === void 0 ? void 0 : _61.scheduleType,
|
|
1810
|
+
startDate: (_63 = (_62 = resp.data) === null || _62 === void 0 ? void 0 : _62.startTime) === null || _63 === void 0 ? void 0 : _63.split(' ')[0],
|
|
1811
|
+
startTime: (_65 = (_64 = resp.data) === null || _64 === void 0 ? void 0 : _64.startTime) === null || _65 === void 0 ? void 0 : _65.split(' ')[1],
|
|
1812
|
+
isRepeat: ((_66 = resp.data) === null || _66 === void 0 ? void 0 : _66.scheduleType) === 'MULTI',
|
|
1813
|
+
delivery: (_67 = resp.data) === null || _67 === void 0 ? void 0 : _67.repeat,
|
|
1690
1814
|
},
|
|
1691
1815
|
})));
|
|
1692
1816
|
this.isLoading = false;
|
|
@@ -1736,7 +1860,7 @@ let PendingApprovalDialogViewComponent = class PendingApprovalDialogViewComponen
|
|
|
1736
1860
|
this.dialogRef.close();
|
|
1737
1861
|
}
|
|
1738
1862
|
ngOnDestroy() {
|
|
1739
|
-
this.subscribers.forEach(each => each.unsubscribe());
|
|
1863
|
+
this.subscribers.forEach((each) => each.unsubscribe());
|
|
1740
1864
|
}
|
|
1741
1865
|
};
|
|
1742
1866
|
PendingApprovalDialogViewComponent.ctorParameters = () => [
|
|
@@ -2253,7 +2377,7 @@ class FailoverAccountReqModel {
|
|
|
2253
2377
|
|
|
2254
2378
|
class GeneralInformationWAReqModel {
|
|
2255
2379
|
clone(source) {
|
|
2256
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
2380
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
2257
2381
|
/* Source Mapping */
|
|
2258
2382
|
if (((_a = source) === null || _a === void 0 ? void 0 : _a.media) === 'IMAGE' ||
|
|
2259
2383
|
((_b = source) === null || _b === void 0 ? void 0 : _b.media) === 'VIDEO' ||
|
|
@@ -2317,6 +2441,16 @@ class GeneralInformationWAReqModel {
|
|
|
2317
2441
|
if (source.template.ID)
|
|
2318
2442
|
this.template.id = source.template.ID;
|
|
2319
2443
|
}
|
|
2444
|
+
if (this.type === 'utility') {
|
|
2445
|
+
this.type = 'template';
|
|
2446
|
+
this.category = 'utility';
|
|
2447
|
+
this.template = ((_l = source) === null || _l === void 0 ? void 0 : _l.isUseExistingTemplate) ? (_m = source) === null || _m === void 0 ? void 0 : _m.template : { name: '', lang: 'id', header: null, button: null, data: [] };
|
|
2448
|
+
this.isNeedSave = source.isNeedSave;
|
|
2449
|
+
this.ttlSeconds = source.ttl;
|
|
2450
|
+
if ((_o = source) === null || _o === void 0 ? void 0 : _o.isUseExistingTemplate) {
|
|
2451
|
+
this.text = (_r = (_q = (_p = source) === null || _p === void 0 ? void 0 : _p.template) === null || _q === void 0 ? void 0 : _q.body) === null || _r === void 0 ? void 0 : _r.text;
|
|
2452
|
+
}
|
|
2453
|
+
}
|
|
2320
2454
|
return this;
|
|
2321
2455
|
}
|
|
2322
2456
|
convert() {
|
|
@@ -2438,7 +2572,7 @@ let NewCampaignComponent = class NewCampaignComponent {
|
|
|
2438
2572
|
const subs = this.apiAdapterService
|
|
2439
2573
|
.executeApiRequest([], `/campaign/${this.campaignID}`, 'GET')
|
|
2440
2574
|
.subscribe((resp) => {
|
|
2441
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61;
|
|
2575
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68;
|
|
2442
2576
|
if (!resp)
|
|
2443
2577
|
return;
|
|
2444
2578
|
const generalInformation = {
|
|
@@ -2446,64 +2580,68 @@ let NewCampaignComponent = class NewCampaignComponent {
|
|
|
2446
2580
|
medium: (_b = resp.data) === null || _b === void 0 ? void 0 : _b.platform,
|
|
2447
2581
|
channel: ['image', 'video', 'document'].includes((_c = resp.data) === null || _c === void 0 ? void 0 : _c.type)
|
|
2448
2582
|
? 'MEDIA'
|
|
2449
|
-
: (
|
|
2450
|
-
|
|
2583
|
+
: ((_d = resp.data) === null || _d === void 0 ? void 0 : _d.isDirectSend) ? 'utility'
|
|
2584
|
+
: (_f = (_e = resp.data) === null || _e === void 0 ? void 0 : _e.type) === null || _f === void 0 ? void 0 : _f.toUpperCase(),
|
|
2585
|
+
media: (_h = (_g = resp.data) === null || _g === void 0 ? void 0 : _g.type) === null || _h === void 0 ? void 0 : _h.toUpperCase(),
|
|
2586
|
+
isPrevTemplate: (_k = (_j = resp) === null || _j === void 0 ? void 0 : _j.data) === null || _k === void 0 ? void 0 : _k.isPrevTemplate,
|
|
2587
|
+
templateName: (_m = (_l = resp) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.templateName,
|
|
2588
|
+
ttl: (_p = (_o = resp) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.ttlSeconds,
|
|
2451
2589
|
from: {
|
|
2452
|
-
id: (
|
|
2453
|
-
name: (
|
|
2454
|
-
platform: (
|
|
2455
|
-
clientId: (
|
|
2456
|
-
clientName: (
|
|
2457
|
-
accountNo: (
|
|
2458
|
-
wabaId: (
|
|
2590
|
+
id: (_q = resp.data) === null || _q === void 0 ? void 0 : _q.accountId,
|
|
2591
|
+
name: (_r = resp.data) === null || _r === void 0 ? void 0 : _r.accountName,
|
|
2592
|
+
platform: (_s = resp.data) === null || _s === void 0 ? void 0 : _s.platform,
|
|
2593
|
+
clientId: (_t = resp.data) === null || _t === void 0 ? void 0 : _t.clientId,
|
|
2594
|
+
clientName: (_u = resp.data) === null || _u === void 0 ? void 0 : _u.clientName,
|
|
2595
|
+
accountNo: (_v = resp.data) === null || _v === void 0 ? void 0 : _v.accountNo,
|
|
2596
|
+
wabaId: (_x = (_w = resp.data) === null || _w === void 0 ? void 0 : _w.wabaId, (_x !== null && _x !== void 0 ? _x : '')),
|
|
2459
2597
|
},
|
|
2460
|
-
text: (
|
|
2461
|
-
targetURL: (
|
|
2462
|
-
paramHeader: (
|
|
2463
|
-
paramBody: (
|
|
2464
|
-
paramButton: (
|
|
2465
|
-
otpValue: (
|
|
2598
|
+
text: (_z = (_y = resp.data) === null || _y === void 0 ? void 0 : _y.details) === null || _z === void 0 ? void 0 : _z.text,
|
|
2599
|
+
targetURL: (_11 = (_7 = (_3 = (_2 = (_1 = (_0 = resp.data) === null || _0 === void 0 ? void 0 : _0.details) === null || _1 === void 0 ? void 0 : _1.image) === null || _2 === void 0 ? void 0 : _2.url, (_3 !== null && _3 !== void 0 ? _3 : (_6 = (_5 = (_4 = resp.data) === null || _4 === void 0 ? void 0 : _4.details) === null || _5 === void 0 ? void 0 : _5.document) === null || _6 === void 0 ? void 0 : _6.url)), (_7 !== null && _7 !== void 0 ? _7 : (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.video) === null || _10 === void 0 ? void 0 : _10.url)), (_11 !== null && _11 !== void 0 ? _11 : (_14 = (_13 = (_12 = resp.data) === null || _12 === void 0 ? void 0 : _12.details) === null || _13 === void 0 ? void 0 : _13.template) === null || _14 === void 0 ? void 0 : _14.headerURL)),
|
|
2600
|
+
paramHeader: (_17 = (_16 = (_15 = resp.data) === null || _15 === void 0 ? void 0 : _15.details) === null || _16 === void 0 ? void 0 : _16.template) === null || _17 === void 0 ? void 0 : _17.header,
|
|
2601
|
+
paramBody: (_20 = (_19 = (_18 = resp.data) === null || _18 === void 0 ? void 0 : _18.details) === null || _19 === void 0 ? void 0 : _19.template) === null || _20 === void 0 ? void 0 : _20.data,
|
|
2602
|
+
paramButton: (_23 = (_22 = (_21 = resp.data) === null || _21 === void 0 ? void 0 : _21.details) === null || _22 === void 0 ? void 0 : _22.template) === null || _23 === void 0 ? void 0 : _23.button,
|
|
2603
|
+
otpValue: (_28 = [...(_27 = (_26 = (_25 = (_24 = resp.data) === null || _24 === void 0 ? void 0 : _24.details) === null || _25 === void 0 ? void 0 : _25.template) === null || _26 === void 0 ? void 0 : _26.data, (_27 !== null && _27 !== void 0 ? _27 : []))]) === null || _28 === void 0 ? void 0 : _28.pop(),
|
|
2466
2604
|
template: {
|
|
2467
|
-
ID: (
|
|
2468
|
-
name: (
|
|
2469
|
-
lang: (
|
|
2470
|
-
platform: (
|
|
2471
|
-
headerURL: (
|
|
2605
|
+
ID: (_31 = (_30 = (_29 = resp.data) === null || _29 === void 0 ? void 0 : _29.details) === null || _30 === void 0 ? void 0 : _30.template) === null || _31 === void 0 ? void 0 : _31.id,
|
|
2606
|
+
name: (_34 = (_33 = (_32 = resp.data) === null || _32 === void 0 ? void 0 : _32.details) === null || _33 === void 0 ? void 0 : _33.template) === null || _34 === void 0 ? void 0 : _34.name,
|
|
2607
|
+
lang: (_37 = (_36 = (_35 = resp.data) === null || _35 === void 0 ? void 0 : _35.details) === null || _36 === void 0 ? void 0 : _36.template) === null || _37 === void 0 ? void 0 : _37.lang,
|
|
2608
|
+
platform: (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.platform,
|
|
2609
|
+
headerURL: (_41 = (_40 = (_39 = resp.data) === null || _39 === void 0 ? void 0 : _39.details) === null || _40 === void 0 ? void 0 : _40.template) === null || _41 === void 0 ? void 0 : _41.headerURL,
|
|
2472
2610
|
header: {
|
|
2473
|
-
examples: (
|
|
2611
|
+
examples: (_44 = (_43 = (_42 = resp.data) === null || _42 === void 0 ? void 0 : _42.details) === null || _43 === void 0 ? void 0 : _43.template) === null || _44 === void 0 ? void 0 : _44.header,
|
|
2474
2612
|
},
|
|
2475
2613
|
body: {
|
|
2476
|
-
examples: (
|
|
2614
|
+
examples: (_47 = (_46 = (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.details) === null || _46 === void 0 ? void 0 : _46.template) === null || _47 === void 0 ? void 0 : _47.data,
|
|
2477
2615
|
},
|
|
2478
|
-
buttons: (
|
|
2479
|
-
ClientId: (
|
|
2480
|
-
ClientName: (
|
|
2616
|
+
buttons: (_50 = (_49 = (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.details) === null || _49 === void 0 ? void 0 : _49.template) === null || _50 === void 0 ? void 0 : _50.button,
|
|
2617
|
+
ClientId: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.clientId,
|
|
2618
|
+
ClientName: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.clientName,
|
|
2481
2619
|
},
|
|
2482
|
-
isUpload: ((
|
|
2483
|
-
fileId: (
|
|
2620
|
+
isUpload: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.fileId) !== '',
|
|
2621
|
+
fileId: (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.fileId,
|
|
2484
2622
|
};
|
|
2485
2623
|
localStorage.setItem('telin.campaign', JSON.stringify(Object.assign(Object.assign({}, this.getCampaignStorage), {
|
|
2486
2624
|
generalInformation: {
|
|
2487
|
-
id: (
|
|
2625
|
+
id: (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.id,
|
|
2488
2626
|
form: generalInformation,
|
|
2489
2627
|
},
|
|
2490
|
-
failover: (
|
|
2491
|
-
targetAudience: (
|
|
2628
|
+
failover: (_56 = resp.data) === null || _56 === void 0 ? void 0 : _56.failover,
|
|
2629
|
+
targetAudience: (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.targets,
|
|
2492
2630
|
targetAudienceFile: {
|
|
2493
|
-
name: (
|
|
2494
|
-
targetURL: (
|
|
2631
|
+
name: (_58 = resp.data) === null || _58 === void 0 ? void 0 : _58.fileName,
|
|
2632
|
+
targetURL: (_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.targetURL,
|
|
2495
2633
|
},
|
|
2496
2634
|
scheduler: {
|
|
2497
|
-
schedulerType: ((
|
|
2635
|
+
schedulerType: ((_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.scheduleType) === 'MULTI'
|
|
2498
2636
|
? 'ONE_TIME'
|
|
2499
|
-
: (
|
|
2500
|
-
startDate: (
|
|
2501
|
-
startTime: (
|
|
2502
|
-
isRepeat: ((
|
|
2503
|
-
delivery: (
|
|
2637
|
+
: (_61 = resp.data) === null || _61 === void 0 ? void 0 : _61.scheduleType,
|
|
2638
|
+
startDate: (_63 = (_62 = resp.data) === null || _62 === void 0 ? void 0 : _62.startTime) === null || _63 === void 0 ? void 0 : _63.split(' ')[0],
|
|
2639
|
+
startTime: (_65 = (_64 = resp.data) === null || _64 === void 0 ? void 0 : _64.startTime) === null || _65 === void 0 ? void 0 : _65.split(' ')[1],
|
|
2640
|
+
isRepeat: ((_66 = resp.data) === null || _66 === void 0 ? void 0 : _66.scheduleType) === 'MULTI',
|
|
2641
|
+
delivery: (_67 = resp.data) === null || _67 === void 0 ? void 0 : _67.repeat,
|
|
2504
2642
|
},
|
|
2505
2643
|
})));
|
|
2506
|
-
this.isLine = ((
|
|
2644
|
+
this.isLine = ((_68 = resp.data) === null || _68 === void 0 ? void 0 : _68.platform) === 'LINE';
|
|
2507
2645
|
this.isLoading = false;
|
|
2508
2646
|
this.initWizard();
|
|
2509
2647
|
}, () => {
|
|
@@ -2825,11 +2963,11 @@ let GeneralInformationEmailComponent = class GeneralInformationEmailComponent {
|
|
|
2825
2963
|
}
|
|
2826
2964
|
initForm() {
|
|
2827
2965
|
this.form = new FormGroup({
|
|
2828
|
-
channel: new FormControl(null, Validators.required),
|
|
2829
|
-
from: new FormControl(null, Validators.required),
|
|
2830
|
-
text: new FormControl(null, Validators.required),
|
|
2831
|
-
template: new FormControl(null, Validators.required),
|
|
2832
|
-
paramBody: new FormArray([], Validators.required),
|
|
2966
|
+
channel: new FormControl(null, Validators$1.required),
|
|
2967
|
+
from: new FormControl(null, Validators$1.required),
|
|
2968
|
+
text: new FormControl(null, Validators$1.required),
|
|
2969
|
+
template: new FormControl(null, Validators$1.required),
|
|
2970
|
+
paramBody: new FormArray([], Validators$1.required),
|
|
2833
2971
|
isUpload: new FormControl(false),
|
|
2834
2972
|
fileId: new FormControl(''),
|
|
2835
2973
|
});
|
|
@@ -2882,16 +3020,16 @@ let GeneralInformationEmailComponent = class GeneralInformationEmailComponent {
|
|
|
2882
3020
|
this.form.controls[key].clearValidators();
|
|
2883
3021
|
this.form.controls[key].updateValueAndValidity();
|
|
2884
3022
|
}
|
|
2885
|
-
this.form.get('channel').setValidators(Validators.required);
|
|
2886
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3023
|
+
this.form.get('channel').setValidators(Validators$1.required);
|
|
3024
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
2887
3025
|
if (this.getIsTemplate) {
|
|
2888
|
-
this.form.get('template').setValidators(Validators.required);
|
|
3026
|
+
this.form.get('template').setValidators(Validators$1.required);
|
|
2889
3027
|
this.form.get('template').updateValueAndValidity();
|
|
2890
|
-
this.form.get('paramBody').setValidators(Validators.required);
|
|
3028
|
+
this.form.get('paramBody').setValidators(Validators$1.required);
|
|
2891
3029
|
this.form.get('paramBody').updateValueAndValidity();
|
|
2892
3030
|
}
|
|
2893
3031
|
else {
|
|
2894
|
-
this.form.get('text').setValidators(Validators.required);
|
|
3032
|
+
this.form.get('text').setValidators(Validators$1.required);
|
|
2895
3033
|
this.form.get('text').updateValueAndValidity();
|
|
2896
3034
|
}
|
|
2897
3035
|
}
|
|
@@ -2970,7 +3108,7 @@ let GeneralInformationEmailComponent = class GeneralInformationEmailComponent {
|
|
|
2970
3108
|
value: value,
|
|
2971
3109
|
disabled: this.isReadOnlyMode ||
|
|
2972
3110
|
['UnsubscribeAccount'].includes(value),
|
|
2973
|
-
}, Validators.required),
|
|
3111
|
+
}, Validators$1.required),
|
|
2974
3112
|
});
|
|
2975
3113
|
return form;
|
|
2976
3114
|
}
|
|
@@ -3010,7 +3148,7 @@ let GeneralInformationEmailComponent = class GeneralInformationEmailComponent {
|
|
|
3010
3148
|
return;
|
|
3011
3149
|
this.isHaveTemplateParam = ((_a = template.body.examples) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
3012
3150
|
((_b = template.body.examples) === null || _b === void 0 ? void 0 : _b.length) > 0
|
|
3013
|
-
? this.form.get('paramBody').setValidators(Validators.required)
|
|
3151
|
+
? this.form.get('paramBody').setValidators(Validators$1.required)
|
|
3014
3152
|
: this.form.get('paramBody').clearValidators();
|
|
3015
3153
|
this.form.get('paramBody').controls = [];
|
|
3016
3154
|
this.form.get('paramBody').reset();
|
|
@@ -3108,12 +3246,12 @@ let GeneralInformationLineComponent = class GeneralInformationLineComponent {
|
|
|
3108
3246
|
}
|
|
3109
3247
|
initForm() {
|
|
3110
3248
|
this.form = new FormGroup({
|
|
3111
|
-
channel: new FormControl(null, Validators.required),
|
|
3112
|
-
from: new FormControl(null, Validators.required),
|
|
3249
|
+
channel: new FormControl(null, Validators$1.required),
|
|
3250
|
+
from: new FormControl(null, Validators$1.required),
|
|
3113
3251
|
text: new FormControl(null),
|
|
3114
3252
|
template: new FormControl(null),
|
|
3115
3253
|
isJSON: new FormControl(false),
|
|
3116
|
-
paramBody: new FormArray([], Validators.required),
|
|
3254
|
+
paramBody: new FormArray([], Validators$1.required),
|
|
3117
3255
|
});
|
|
3118
3256
|
this.form.valueChanges.subscribe(() => {
|
|
3119
3257
|
setTimeout(() => {
|
|
@@ -3151,16 +3289,16 @@ let GeneralInformationLineComponent = class GeneralInformationLineComponent {
|
|
|
3151
3289
|
this.form.controls[key].clearValidators();
|
|
3152
3290
|
this.form.controls[key].updateValueAndValidity();
|
|
3153
3291
|
}
|
|
3154
|
-
this.form.get('channel').setValidators(Validators.required);
|
|
3155
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3292
|
+
this.form.get('channel').setValidators(Validators$1.required);
|
|
3293
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
3156
3294
|
if (this.isText) {
|
|
3157
|
-
this.form.get('text').setValidators(Validators.required);
|
|
3295
|
+
this.form.get('text').setValidators(Validators$1.required);
|
|
3158
3296
|
this.form.get('text').updateValueAndValidity();
|
|
3159
3297
|
return;
|
|
3160
3298
|
}
|
|
3161
|
-
this.form.get('template').setValidators(Validators.required);
|
|
3299
|
+
this.form.get('template').setValidators(Validators$1.required);
|
|
3162
3300
|
this.form.get('template').updateValueAndValidity();
|
|
3163
|
-
this.form.get('paramBody').setValidators(Validators.required);
|
|
3301
|
+
this.form.get('paramBody').setValidators(Validators$1.required);
|
|
3164
3302
|
this.form.get('paramBody').updateValueAndValidity();
|
|
3165
3303
|
}
|
|
3166
3304
|
formReset() {
|
|
@@ -3231,7 +3369,7 @@ let GeneralInformationLineComponent = class GeneralInformationLineComponent {
|
|
|
3231
3369
|
}
|
|
3232
3370
|
initParameter(value = '') {
|
|
3233
3371
|
const form = new FormGroup({
|
|
3234
|
-
name: new FormControl({ value: value, disabled: this.isReadOnlyMode }, Validators.required),
|
|
3372
|
+
name: new FormControl({ value: value, disabled: this.isReadOnlyMode }, Validators$1.required),
|
|
3235
3373
|
});
|
|
3236
3374
|
return form;
|
|
3237
3375
|
}
|
|
@@ -3289,7 +3427,7 @@ let GeneralInformationLineComponent = class GeneralInformationLineComponent {
|
|
|
3289
3427
|
const findBrackets = (_a = bodyText) === null || _a === void 0 ? void 0 : _a.match(/{{/g);
|
|
3290
3428
|
const formStorage = (_c = (_b = this.getCampaignStorage) === null || _b === void 0 ? void 0 : _b.generalInformation) === null || _c === void 0 ? void 0 : _c.form;
|
|
3291
3429
|
((_d = findBrackets) === null || _d === void 0 ? void 0 : _d.length) > 0
|
|
3292
|
-
? this.form.get('paramBody').setValidators(Validators.required)
|
|
3430
|
+
? this.form.get('paramBody').setValidators(Validators$1.required)
|
|
3293
3431
|
: this.form.get('paramBody').clearValidators();
|
|
3294
3432
|
(_e = findBrackets) === null || _e === void 0 ? void 0 : _e.forEach((_, index) => {
|
|
3295
3433
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -3380,11 +3518,11 @@ let GeneralInformationSMSComponent = class GeneralInformationSMSComponent {
|
|
|
3380
3518
|
}
|
|
3381
3519
|
initForm() {
|
|
3382
3520
|
this.form = new FormGroup({
|
|
3383
|
-
channel: new FormControl(null, Validators.required),
|
|
3384
|
-
from: new FormControl(null, Validators.required),
|
|
3385
|
-
text: new FormControl(null, Validators.required),
|
|
3386
|
-
template: new FormControl(null, Validators.required),
|
|
3387
|
-
paramBody: new FormArray([], Validators.required),
|
|
3521
|
+
channel: new FormControl(null, Validators$1.required),
|
|
3522
|
+
from: new FormControl(null, Validators$1.required),
|
|
3523
|
+
text: new FormControl(null, Validators$1.required),
|
|
3524
|
+
template: new FormControl(null, Validators$1.required),
|
|
3525
|
+
paramBody: new FormArray([], Validators$1.required),
|
|
3388
3526
|
isUpload: new FormControl(false),
|
|
3389
3527
|
fileId: new FormControl(''),
|
|
3390
3528
|
});
|
|
@@ -3436,16 +3574,16 @@ let GeneralInformationSMSComponent = class GeneralInformationSMSComponent {
|
|
|
3436
3574
|
this.form.controls[key].clearValidators();
|
|
3437
3575
|
this.form.controls[key].updateValueAndValidity();
|
|
3438
3576
|
}
|
|
3439
|
-
this.form.get('channel').setValidators(Validators.required);
|
|
3440
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3577
|
+
this.form.get('channel').setValidators(Validators$1.required);
|
|
3578
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
3441
3579
|
if (this.getIsTemplate) {
|
|
3442
|
-
this.form.get('template').setValidators(Validators.required);
|
|
3443
|
-
this.form.get('paramBody').setValidators(Validators.required);
|
|
3580
|
+
this.form.get('template').setValidators(Validators$1.required);
|
|
3581
|
+
this.form.get('paramBody').setValidators(Validators$1.required);
|
|
3444
3582
|
this.form.get('template').updateValueAndValidity();
|
|
3445
3583
|
this.form.get('paramBody').updateValueAndValidity();
|
|
3446
3584
|
}
|
|
3447
3585
|
else {
|
|
3448
|
-
this.form.get('text').setValidators(Validators.required);
|
|
3586
|
+
this.form.get('text').setValidators(Validators$1.required);
|
|
3449
3587
|
this.form.get('text').updateValueAndValidity();
|
|
3450
3588
|
}
|
|
3451
3589
|
}
|
|
@@ -3524,7 +3662,7 @@ let GeneralInformationSMSComponent = class GeneralInformationSMSComponent {
|
|
|
3524
3662
|
value: value,
|
|
3525
3663
|
disabled: this.isReadOnlyMode ||
|
|
3526
3664
|
['UnsubscribeAccount'].includes(value),
|
|
3527
|
-
}, Validators.required),
|
|
3665
|
+
}, Validators$1.required),
|
|
3528
3666
|
});
|
|
3529
3667
|
return form;
|
|
3530
3668
|
}
|
|
@@ -3564,7 +3702,7 @@ let GeneralInformationSMSComponent = class GeneralInformationSMSComponent {
|
|
|
3564
3702
|
return;
|
|
3565
3703
|
this.isHaveTemplateParam = ((_a = template.body.examples) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
3566
3704
|
((_b = template.body.examples) === null || _b === void 0 ? void 0 : _b.length) > 0
|
|
3567
|
-
? this.form.get('paramBody').setValidators(Validators.required)
|
|
3705
|
+
? this.form.get('paramBody').setValidators(Validators$1.required)
|
|
3568
3706
|
: this.form.get('paramBody').clearValidators();
|
|
3569
3707
|
this.form.get('paramBody').controls = [];
|
|
3570
3708
|
this.form.get('paramBody').reset();
|
|
@@ -3637,6 +3775,49 @@ var EnumData;
|
|
|
3637
3775
|
EnumData["SCHEDULER_TYPE_MULTIPLE"] = "MULTIPLE";
|
|
3638
3776
|
})(EnumData || (EnumData = {}));
|
|
3639
3777
|
|
|
3778
|
+
const maxValidator = (max, message) => {
|
|
3779
|
+
return (AC) => {
|
|
3780
|
+
const isError = Validators$1.max(max)(AC);
|
|
3781
|
+
if (isError)
|
|
3782
|
+
return {
|
|
3783
|
+
max: max,
|
|
3784
|
+
actual: AC.value,
|
|
3785
|
+
message: message || `Max Value equals to ${max}`,
|
|
3786
|
+
};
|
|
3787
|
+
return null;
|
|
3788
|
+
};
|
|
3789
|
+
};
|
|
3790
|
+
|
|
3791
|
+
const minValidator = (min, message) => {
|
|
3792
|
+
return (AC) => {
|
|
3793
|
+
const isError = Validators$1.min(min)(AC);
|
|
3794
|
+
if (isError)
|
|
3795
|
+
return {
|
|
3796
|
+
min: min,
|
|
3797
|
+
actual: AC.value,
|
|
3798
|
+
message: message || `Min Value equals to ${min}`,
|
|
3799
|
+
};
|
|
3800
|
+
return null;
|
|
3801
|
+
};
|
|
3802
|
+
};
|
|
3803
|
+
|
|
3804
|
+
const requiredValidator = (message) => {
|
|
3805
|
+
return (ac) => {
|
|
3806
|
+
const isError = Validators$1.required(ac);
|
|
3807
|
+
if (isError)
|
|
3808
|
+
return { message };
|
|
3809
|
+
return null;
|
|
3810
|
+
};
|
|
3811
|
+
};
|
|
3812
|
+
|
|
3813
|
+
const Validators = {
|
|
3814
|
+
compose: Validators$1.compose,
|
|
3815
|
+
composeAync: Validators$1.composeAsync,
|
|
3816
|
+
max: maxValidator,
|
|
3817
|
+
min: minValidator,
|
|
3818
|
+
required: requiredValidator,
|
|
3819
|
+
};
|
|
3820
|
+
|
|
3640
3821
|
let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
3641
3822
|
constructor(ngZone, mapsAPILoader, apiAdapterService, toastr) {
|
|
3642
3823
|
this.ngZone = ngZone;
|
|
@@ -3657,6 +3838,10 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3657
3838
|
this.pageNoAccountOption = 1;
|
|
3658
3839
|
this.pageNoTemplateOption = 1;
|
|
3659
3840
|
this.subscribers = [];
|
|
3841
|
+
this.templates = [
|
|
3842
|
+
{ label: 'Create New', value: false },
|
|
3843
|
+
{ label: 'Use existing template', value: true },
|
|
3844
|
+
];
|
|
3660
3845
|
this.updateGeneralInformationForm = new EventEmitter();
|
|
3661
3846
|
}
|
|
3662
3847
|
set isTouchedForm(status) {
|
|
@@ -3695,7 +3880,7 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3695
3880
|
}
|
|
3696
3881
|
initForm() {
|
|
3697
3882
|
this.form = new FormGroup({
|
|
3698
|
-
channel: new FormControl(null, Validators.required),
|
|
3883
|
+
channel: new FormControl(null, Validators$1.required),
|
|
3699
3884
|
media: new FormControl(null),
|
|
3700
3885
|
from: new FormControl(null),
|
|
3701
3886
|
text: new FormControl(null),
|
|
@@ -3706,9 +3891,9 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3706
3891
|
latitude: new FormControl(null),
|
|
3707
3892
|
longitude: new FormControl(null),
|
|
3708
3893
|
template: new FormControl(null),
|
|
3709
|
-
paramHeader: new FormArray([], Validators.required),
|
|
3710
|
-
paramBody: new FormArray([], Validators.required),
|
|
3711
|
-
paramButton: new FormArray([], Validators.required),
|
|
3894
|
+
paramHeader: new FormArray([], Validators$1.required),
|
|
3895
|
+
paramBody: new FormArray([], Validators$1.required),
|
|
3896
|
+
paramButton: new FormArray([], Validators$1.required),
|
|
3712
3897
|
otpValue: new FormControl(''),
|
|
3713
3898
|
isUpload: new FormControl(false),
|
|
3714
3899
|
fileId: new FormControl(''),
|
|
@@ -3716,6 +3901,9 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3716
3901
|
product: new FormControl(null),
|
|
3717
3902
|
catalogue: new FormControl(null),
|
|
3718
3903
|
body: new FormControl(null),
|
|
3904
|
+
isUseExistingTemplate: new FormControl(false),
|
|
3905
|
+
isNeedSave: new FormControl(false),
|
|
3906
|
+
ttl: new FormControl(null),
|
|
3719
3907
|
});
|
|
3720
3908
|
this.form.valueChanges.subscribe(() => {
|
|
3721
3909
|
setTimeout(() => {
|
|
@@ -3730,7 +3918,7 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3730
3918
|
this.form.disable();
|
|
3731
3919
|
}
|
|
3732
3920
|
initEdit() {
|
|
3733
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
|
|
3921
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9;
|
|
3734
3922
|
if (Object.entries(this.getCampaignStorage).length === 0 ||
|
|
3735
3923
|
((_c = (_b = (_a = this.getCampaignStorage) === null || _a === void 0 ? void 0 : _a.generalInformation) === null || _b === void 0 ? void 0 : _b.form) === null || _c === void 0 ? void 0 : _c.medium) !== 'WA')
|
|
3736
3924
|
return;
|
|
@@ -3756,35 +3944,42 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3756
3944
|
this.form
|
|
3757
3945
|
.get('otpValue')
|
|
3758
3946
|
.setValue((_z = (_y = this.getCampaignStorage) === null || _y === void 0 ? void 0 : _y.generalInformation) === null || _z === void 0 ? void 0 : _z.form.otpValue);
|
|
3947
|
+
this.form
|
|
3948
|
+
.get('isUseExistingTemplate')
|
|
3949
|
+
.setValue(!!((_2 = (_1 = (_0 = this.getCampaignStorage) === null || _0 === void 0 ? void 0 : _0.generalInformation) === null || _1 === void 0 ? void 0 : _1.form) === null || _2 === void 0 ? void 0 : _2.templateName));
|
|
3950
|
+
this.form
|
|
3951
|
+
.get('isNeedSave')
|
|
3952
|
+
.setValue(!!((_5 = (_4 = (_3 = this.getCampaignStorage) === null || _3 === void 0 ? void 0 : _3.generalInformation) === null || _4 === void 0 ? void 0 : _4.form) === null || _5 === void 0 ? void 0 : _5.isNeedSave));
|
|
3953
|
+
this.form.get('ttl').setValue((_8 = (_7 = (_6 = this.getCampaignStorage) === null || _6 === void 0 ? void 0 : _6.generalInformation) === null || _7 === void 0 ? void 0 : _7.form) === null || _8 === void 0 ? void 0 : _8.ttl);
|
|
3759
3954
|
this.isHaveTemplateParam = this.form.get('isUpload').value;
|
|
3760
|
-
this.getTemplateOptionService(null, (
|
|
3955
|
+
this.getTemplateOptionService(null, (_9 = this.form.get('template').value) === null || _9 === void 0 ? void 0 : _9.name);
|
|
3761
3956
|
}
|
|
3762
3957
|
initValidation() {
|
|
3763
3958
|
for (const key in this.form.controls) {
|
|
3764
3959
|
this.form.controls[key].clearValidators();
|
|
3765
3960
|
this.form.controls[key].updateValueAndValidity();
|
|
3766
3961
|
}
|
|
3767
|
-
this.form.get('channel').setValidators(Validators.required);
|
|
3962
|
+
this.form.get('channel').setValidators(Validators$1.required);
|
|
3768
3963
|
if (this.getIsText) {
|
|
3769
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3770
|
-
this.form.get('text').setValidators(Validators.required);
|
|
3964
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
3965
|
+
this.form.get('text').setValidators(Validators$1.required);
|
|
3771
3966
|
this.form.get('from').updateValueAndValidity();
|
|
3772
3967
|
this.form.get('text').updateValueAndValidity();
|
|
3773
3968
|
}
|
|
3774
3969
|
else if (this.getIsMedia) {
|
|
3775
|
-
this.form.get('media').setValidators(Validators.required);
|
|
3776
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3777
|
-
this.form.get('fileName').setValidators(Validators.required);
|
|
3970
|
+
this.form.get('media').setValidators(Validators$1.required);
|
|
3971
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
3972
|
+
this.form.get('fileName').setValidators(Validators$1.required);
|
|
3778
3973
|
this.form.get('media').updateValueAndValidity();
|
|
3779
3974
|
this.form.get('from').updateValueAndValidity();
|
|
3780
3975
|
this.form.get('fileName').updateValueAndValidity();
|
|
3781
3976
|
}
|
|
3782
3977
|
else if (this.getIsTemplate) {
|
|
3783
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3784
|
-
this.form.get('template').setValidators(Validators.required);
|
|
3785
|
-
this.form.get('paramHeader').setValidators(Validators.required);
|
|
3786
|
-
this.form.get('paramBody').setValidators(Validators.required);
|
|
3787
|
-
this.form.get('paramButton').setValidators(Validators.required);
|
|
3978
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
3979
|
+
this.form.get('template').setValidators(Validators$1.required);
|
|
3980
|
+
this.form.get('paramHeader').setValidators(Validators$1.required);
|
|
3981
|
+
this.form.get('paramBody').setValidators(Validators$1.required);
|
|
3982
|
+
this.form.get('paramButton').setValidators(Validators$1.required);
|
|
3788
3983
|
this.form.get('from').updateValueAndValidity();
|
|
3789
3984
|
this.form.get('template').updateValueAndValidity();
|
|
3790
3985
|
this.form.get('paramHeader').updateValueAndValidity();
|
|
@@ -3792,20 +3987,33 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3792
3987
|
this.form.get('paramButton').updateValueAndValidity();
|
|
3793
3988
|
}
|
|
3794
3989
|
else if (this.getIsCatalogue) {
|
|
3795
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3796
|
-
this.form.get('category').setValidators(Validators.required);
|
|
3797
|
-
this.form.get('catalogue').setValidators(Validators.required);
|
|
3798
|
-
this.form.get('product').setValidators(Validators.required);
|
|
3799
|
-
this.form.get('body').setValidators(Validators.maxLength(100));
|
|
3990
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
3991
|
+
this.form.get('category').setValidators(Validators$1.required);
|
|
3992
|
+
this.form.get('catalogue').setValidators(Validators$1.required);
|
|
3993
|
+
this.form.get('product').setValidators(Validators$1.required);
|
|
3994
|
+
this.form.get('body').setValidators(Validators$1.maxLength(100));
|
|
3800
3995
|
this.form.get('from').updateValueAndValidity();
|
|
3801
3996
|
this.form.get('category').updateValueAndValidity();
|
|
3802
3997
|
this.form.get('catalogue').updateValueAndValidity();
|
|
3803
3998
|
this.form.get('product').updateValueAndValidity();
|
|
3804
3999
|
this.form.get('body').updateValueAndValidity();
|
|
3805
4000
|
}
|
|
4001
|
+
else if (this.getIsUtility) {
|
|
4002
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
4003
|
+
this.form.get('text').setValidators([Validators$1.required, Validators$1.maxLength(1024)]);
|
|
4004
|
+
this.form
|
|
4005
|
+
.get('ttl')
|
|
4006
|
+
.setValidators([
|
|
4007
|
+
Validators.min(30, 'Minimum TTL 30'),
|
|
4008
|
+
Validators.max(43200, 'Maximum TTL 43200'),
|
|
4009
|
+
]);
|
|
4010
|
+
this.form.get('from').updateValueAndValidity();
|
|
4011
|
+
this.form.get('text').updateValueAndValidity();
|
|
4012
|
+
this.form.get('ttl').updateValueAndValidity();
|
|
4013
|
+
}
|
|
3806
4014
|
else {
|
|
3807
|
-
this.form.get('from').setValidators(Validators.required);
|
|
3808
|
-
this.form.get('text').setValidators(Validators.required);
|
|
4015
|
+
this.form.get('from').setValidators(Validators$1.required);
|
|
4016
|
+
this.form.get('text').setValidators(Validators$1.required);
|
|
3809
4017
|
this.form.get('from').updateValueAndValidity();
|
|
3810
4018
|
this.form.get('text').updateValueAndValidity();
|
|
3811
4019
|
}
|
|
@@ -3865,7 +4073,7 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3865
4073
|
this.subscribers.push(subs);
|
|
3866
4074
|
}
|
|
3867
4075
|
getTemplateOptionService(event = null, filter = '', isInfinite = false) {
|
|
3868
|
-
var _a, _b, _c;
|
|
4076
|
+
var _a, _b, _c, _d;
|
|
3869
4077
|
this.isLoadingTemplateOption = true;
|
|
3870
4078
|
const parameterList = [
|
|
3871
4079
|
this.initParam('pageNo', this.pageNoTemplateOption, 'number'),
|
|
@@ -3878,6 +4086,10 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3878
4086
|
];
|
|
3879
4087
|
if (this.isReadOnlyMode)
|
|
3880
4088
|
parameterList.push(this.initParam('summary', true, 'string'));
|
|
4089
|
+
const messageType = (_d = this.form.value) === null || _d === void 0 ? void 0 : _d.channel;
|
|
4090
|
+
if (messageType === 'utility') {
|
|
4091
|
+
parameterList.push(this.initParam('isDirectSend', true, 'string'));
|
|
4092
|
+
}
|
|
3881
4093
|
const subs = this.apiAdapterService
|
|
3882
4094
|
.executeApiRequest(parameterList, '/message/template', 'GET')
|
|
3883
4095
|
.subscribe((resp) => {
|
|
@@ -3900,13 +4112,13 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3900
4112
|
initParameter(isButton = false, value = '') {
|
|
3901
4113
|
const form = isButton
|
|
3902
4114
|
? new FormGroup({
|
|
3903
|
-
name: new FormArray([], Validators.required),
|
|
4115
|
+
name: new FormArray([], Validators$1.required),
|
|
3904
4116
|
})
|
|
3905
4117
|
: new FormGroup({
|
|
3906
4118
|
name: new FormControl({
|
|
3907
4119
|
value: value,
|
|
3908
4120
|
disabled: this.isReadOnlyMode || ['$UnsubscribeAccount'].includes(value),
|
|
3909
|
-
}, Validators.required),
|
|
4121
|
+
}, Validators$1.required),
|
|
3910
4122
|
});
|
|
3911
4123
|
return form;
|
|
3912
4124
|
}
|
|
@@ -3955,6 +4167,11 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3955
4167
|
return (this.form.get('channel').value &&
|
|
3956
4168
|
((_a = this.form.get('channel').value) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'catalogue');
|
|
3957
4169
|
}
|
|
4170
|
+
get getIsUtility() {
|
|
4171
|
+
var _a;
|
|
4172
|
+
return (this.form.get('channel').value &&
|
|
4173
|
+
((_a = this.form.get('channel').value) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'utility');
|
|
4174
|
+
}
|
|
3958
4175
|
getNextAccountBatch() {
|
|
3959
4176
|
if (!this.isHaveNextAccountOption)
|
|
3960
4177
|
return;
|
|
@@ -3996,7 +4213,7 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
3996
4213
|
this.form.get('file').setValue(file[0]);
|
|
3997
4214
|
this.form.get('fileType').setValue('image');
|
|
3998
4215
|
this.form.get('fileName').setValue(file[0].name);
|
|
3999
|
-
this.form.get('targetURL').setValidators(Validators.required);
|
|
4216
|
+
this.form.get('targetURL').setValidators(Validators$1.required);
|
|
4000
4217
|
this.form.get('targetURL').updateValueAndValidity();
|
|
4001
4218
|
if (file[0].type.indexOf('video') > -1)
|
|
4002
4219
|
this.form.get('fileType').setValue('video');
|
|
@@ -4041,13 +4258,13 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
4041
4258
|
this.fileTypeChange((_t = (_s = (_r = template) === null || _r === void 0 ? void 0 : _r.header) === null || _s === void 0 ? void 0 : _s.type) === null || _t === void 0 ? void 0 : _t.toLowerCase());
|
|
4042
4259
|
}
|
|
4043
4260
|
((_u = template.header.examples) === null || _u === void 0 ? void 0 : _u.length) > 0
|
|
4044
|
-
? this.form.get('paramHeader').setValidators(Validators.required)
|
|
4261
|
+
? this.form.get('paramHeader').setValidators(Validators$1.required)
|
|
4045
4262
|
: this.form.get('paramHeader').clearValidators();
|
|
4046
4263
|
((_v = template.body.examples) === null || _v === void 0 ? void 0 : _v.length) > 0
|
|
4047
|
-
? this.form.get('paramBody').setValidators(Validators.required)
|
|
4264
|
+
? this.form.get('paramBody').setValidators(Validators$1.required)
|
|
4048
4265
|
: this.form.get('paramBody').clearValidators();
|
|
4049
4266
|
((_w = template.buttons) === null || _w === void 0 ? void 0 : _w.length) > 0
|
|
4050
|
-
? this.form.get('paramButton').setValidators(Validators.required)
|
|
4267
|
+
? this.form.get('paramButton').setValidators(Validators$1.required)
|
|
4051
4268
|
: this.form.get('paramButton').clearValidators();
|
|
4052
4269
|
this.form.get('paramHeader').controls = [];
|
|
4053
4270
|
this.form.get('paramHeader').reset();
|
|
@@ -4066,7 +4283,7 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
4066
4283
|
this.form
|
|
4067
4284
|
.get('otpValue')
|
|
4068
4285
|
.setValue((_6 = (_0 = (_z = formStorage) === null || _z === void 0 ? void 0 : _z.otpValue, (_0 !== null && _0 !== void 0 ? _0 : (_5 = [...(_4 = (_3 = (_2 = (_1 = formStorage) === null || _1 === void 0 ? void 0 : _1.template) === null || _2 === void 0 ? void 0 : _2.body) === null || _3 === void 0 ? void 0 : _3.examples, (_4 !== null && _4 !== void 0 ? _4 : []))]) === null || _5 === void 0 ? void 0 : _5.pop())), (_6 !== null && _6 !== void 0 ? _6 : '')));
|
|
4069
|
-
this.form.get('otpValue').setValidators(Validators.required);
|
|
4286
|
+
this.form.get('otpValue').setValidators(Validators$1.required);
|
|
4070
4287
|
this.form.get('otpValue').updateValueAndValidity();
|
|
4071
4288
|
}
|
|
4072
4289
|
(_7 = template.header.examples) === null || _7 === void 0 ? void 0 : _7.forEach((each, index) => {
|
|
@@ -4187,6 +4404,28 @@ let GeneralInformationWAComponent = class GeneralInformationWAComponent {
|
|
|
4187
4404
|
}
|
|
4188
4405
|
this.updateTemplate(this.form.get('template').value);
|
|
4189
4406
|
}
|
|
4407
|
+
handleChangeTemplate(useExisting) {
|
|
4408
|
+
if (useExisting) {
|
|
4409
|
+
this.form.get('template').setValidators(Validators$1.required);
|
|
4410
|
+
this.form.get('text').reset();
|
|
4411
|
+
this.form.get('text').clearValidators();
|
|
4412
|
+
this.form.get('text').updateValueAndValidity();
|
|
4413
|
+
this.form.get('template').updateValueAndValidity();
|
|
4414
|
+
}
|
|
4415
|
+
else {
|
|
4416
|
+
this.form.get('template').reset();
|
|
4417
|
+
this.form.get('template').clearValidators();
|
|
4418
|
+
this.form.get('text').setValidators([Validators$1.required, Validators$1.max(1024)]);
|
|
4419
|
+
this.form.get('text').updateValueAndValidity();
|
|
4420
|
+
this.form.get('template').updateValueAndValidity();
|
|
4421
|
+
}
|
|
4422
|
+
}
|
|
4423
|
+
handleChangeFrom(value) {
|
|
4424
|
+
const { isUseExistingTemplate } = this.form.value;
|
|
4425
|
+
if (!isUseExistingTemplate)
|
|
4426
|
+
return;
|
|
4427
|
+
this.getTemplateOptionService(value);
|
|
4428
|
+
}
|
|
4190
4429
|
ngOnDestroy() {
|
|
4191
4430
|
this.subscribers.forEach((each) => each.unsubscribe());
|
|
4192
4431
|
}
|
|
@@ -4212,7 +4451,7 @@ __decorate([
|
|
|
4212
4451
|
GeneralInformationWAComponent = __decorate([
|
|
4213
4452
|
Component({
|
|
4214
4453
|
selector: 'lib-general-information-wa',
|
|
4215
|
-
template: "<form autocomplete=\"off\"\r\n\t[formGroup]=\"form\">\r\n\t<div class=\"form-group\">\r\n\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\tfloatLabel=\"always\"\r\n\t\t\tclass=\"w-100\">\r\n\t\t\t<mat-label class=\"asterix--after\">Message Type</mat-label>\r\n\r\n\t\t\t<mat-select placeholder=\"Select message type\"\r\n\t\t\t\tformControlName=\"channel\">\r\n\t\t\t\t<mat-option *ngFor=\"let option of msgTypeWAOption\"\r\n\t\t\t\t\t[value]=\"option.code\"\r\n\t\t\t\t\t(click)=\"formReset()\">\r\n\t\t\t\t\t{{ option.name }}\r\n\t\t\t\t</mat-option>\r\n\t\t\t</mat-select>\r\n\t\t</mat-form-field>\r\n\r\n\t\t<mat-error align=\"end\"\r\n\t\t\t*ngFor=\"let validation of validationMessages.channel\">\r\n\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t*ngIf=\"form.get('channel').touched \r\n\t\t\t\t\t&& form.get('channel').hasError(validation.type)\">\r\n\t\t\t\t{{ validation.message }}\r\n\t\t\t</p>\r\n\t\t</mat-error>\r\n\r\n\t\t<div *ngIf=\"!getIsTemplate\"\r\n\t\t\trole=\"alert\"\r\n\t\t\tclass=\"alert alert-warning d-flex align-items-center\"\r\n\t\t\tstyle=\"margin-top: 16px;border:1px solid rgb(243, 124, 44)\">\r\n\t\t\t<mat-icon style=\"margin-right: 10px !important;\">error_outline</mat-icon>\r\n\t\t\t<div>\r\n\t\t\t\tIf you select this channel, keep in mind that the message might not be delivered to\r\n\t\t\t\tall selected customers. This is because the customer must have had a conversation\r\n\t\t\t\tpreviously with BSP.\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-container *ngIf=\"getIsText\">\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\"\r\n\t\t\t\tstyle=\"margin-bottom: 20;\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n\t\t\t\t<mat-select matSelectInfiniteScroll\r\n\t\t\t\t\tformControlName=\"from\"\r\n\t\t\t\t\tplaceholder=\"Select from\"\r\n\t\t\t\t\t[complete]=\"isHaveNextAccountOption === false\"\r\n\t\t\t\t\t[compareWith]=\"accountSelectedDisplay\"\r\n\t\t\t\t\t(infiniteScroll)=\"getNextAccountBatch()\">\r\n\t\t\t\t\t<div style=\"margin: 20px\">\r\n\t\t\t\t\t\t<lib-search [placeholder]=\"'Search'\"\r\n\t\t\t\t\t\t\t[currentValue]=\"form?.get('from').value?.name\"\r\n\t\t\t\t\t\t\t(searchRes)=\"updateSearchAccount($event)\"></lib-search>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of accountOption\"\r\n\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t{{ option.name + ' (' + option.accountNo + ')' }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t<mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.from\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('from').touched \r\n\t\t\t\t\t\t&& form.get('from').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">Text</mat-label>\r\n\r\n\t\t\t\t<textarea matInput\r\n\t\t\t\t\trows=\"6\"\r\n\t\t\t\t\tcols=\"50\"\r\n\t\t\t\t\tcdkTextareaAutosize\r\n\t\t\t\t\tcdkAutosizeMinRows=\"2\"\r\n\t\t\t\t\tcdkAutosizeMaxRows=\"15\"\r\n\t\t\t\t\tformControlName=\"text\"\r\n\t\t\t\t\tplaceholder=\"Enter text\"\r\n\t\t\t\t\t#autosize=\"cdkTextareaAutosize\"></textarea>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.text\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('text').touched \r\n\t\t\t\t\t\t&& form.get('text').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"getIsMedia\">\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">Media Type</mat-label>\r\n\r\n\t\t\t\t<mat-select placeholder=\"Select media type\"\r\n\t\t\t\t\tformControlName=\"media\"\r\n\t\t\t\t\t(selectionChange)=\"updateMediaType($event.value)\">\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of mediaTypeOption\"\r\n\t\t\t\t\t\t[value]=\"option.code\">\r\n\t\t\t\t\t\t{{ option.name }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.media\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('media').touched \r\n\t\t\t\t\t\t&& form.get('media').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\"\r\n\t\t\t\tstyle=\"margin-bottom: 20;\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n\t\t\t\t<mat-select matSelectInfiniteScroll\r\n\t\t\t\t\tformControlName=\"from\"\r\n\t\t\t\t\tplaceholder=\"Select from\"\r\n\t\t\t\t\t[complete]=\"isHaveNextAccountOption === false\"\r\n\t\t\t\t\t[compareWith]=\"accountSelectedDisplay\"\r\n\t\t\t\t\t(infiniteScroll)=\"getNextAccountBatch()\">\r\n\t\t\t\t\t<div style=\"margin: 20px\">\r\n\t\t\t\t\t\t<lib-search [placeholder]=\"'Search'\"\r\n\t\t\t\t\t\t\t[currentValue]=\"form?.get('from').value?.name\"\r\n\t\t\t\t\t\t\t(searchRes)=\"updateSearchAccount($event)\"></lib-search>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of accountOption\"\r\n\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t{{ option.name + ' (' + option.accountNo + ')' }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t<mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.from\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('from').touched \r\n\t\t\t\t\t\t&& form.get('from').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<ng-container *ngIf=\"form.get('media').value?.toLowerCase() !== 'location'\">\r\n\t\t\t<div class=\"form-group\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t<mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t(click)=\"filePicker.click()\"\r\n\t\t\t\t\t\tformControlName=\"fileName\">\r\n\r\n\t\t\t\t\t<button mat-button\r\n\t\t\t\t\t\tmatSuffix\r\n\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\taria-label=\"Choose File\"\r\n\t\t\t\t\t\t(click)=\"filePicker.click()\">\r\n\t\t\t\t\t\t<mat-icon>attach_file</mat-icon>\r\n\t\t\t\t\t</button>\r\n\r\n\t\t\t\t\t<input #filePicker\r\n\t\t\t\t\t\thidden\r\n\t\t\t\t\t\ttype=\"file\"\r\n\t\t\t\t\t\t[accept]=\"extFileAccepted\"\r\n\t\t\t\t\t\t(change)=\"onFileSelected($event)\" />\r\n\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t\t*ngFor=\"let validation of validationMessages.fileName\">\r\n\t\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t\t*ngIf=\"form.get('fileName').touched \r\n\t\t\t\t\t\t\t&& form.get('fileName').hasError(validation.type)\">\r\n\t\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</mat-error>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\r\n\t\t<ng-container *ngIf=\"form.get('media').value?.toLowerCase() === 'location'\">\r\n\t\t\t<div class=\"w-100\">\r\n\t\t\t\t<h4 class=\"asterix--after\">Location</h4>\r\n\r\n\t\t\t\t<div class=\"w-100\">\r\n\t\t\t\t\t<agm-map style=\"width:100%; height:400px;\"\r\n\t\t\t\t\t\t[latitude]=\"maps.latitude\"\r\n\t\t\t\t\t\t[longitude]=\"maps.longitude\"\r\n\t\t\t\t\t\t[disableDoubleClickZoom]=\"maps.isDoubleClickZoom\"\r\n\t\t\t\t\t\t[zoom]=\"maps.zoom\">\r\n\t\t\t\t\t\t<agm-marker [latitude]=\"maps.latitude\"\r\n\t\t\t\t\t\t\t[longitude]=\"maps.longitude\"\r\n\t\t\t\t\t\t\t[markerDraggable]=\"maps.isDraggable\"\r\n\t\t\t\t\t\t\t(dragEnd)=\"markerDragEnd($event)\"></agm-marker>\r\n\t\t\t\t\t</agm-map>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"form-group\">\r\n\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t<mat-label>Location</mat-label>\r\n\r\n\t\t\t\t\t\t<input #mapSearch\r\n\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\tmaxlength=\"100\"\r\n\t\t\t\t\t\t\tplaceholder=\"Enter location here\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"getIsTemplate\">\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\"\r\n\t\t\t\tstyle=\"margin-bottom: 20;\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n\t\t\t\t<mat-select matSelectInfiniteScroll\r\n\t\t\t\t\tformControlName=\"from\"\r\n\t\t\t\t\tplaceholder=\"Select from\"\r\n\t\t\t\t\t[complete]=\"isHaveNextAccountOption === false\"\r\n\t\t\t\t\t[compareWith]=\"accountSelectedDisplay\"\r\n\t\t\t\t\t(infiniteScroll)=\"getNextAccountBatch()\"\r\n\t\t\t\t\t(selectionChange)=\"getTemplateOptionService($event.value)\">\r\n\t\t\t\t\t<div style=\"margin: 20px\">\r\n\t\t\t\t\t\t<lib-search [placeholder]=\"'Search'\"\r\n\t\t\t\t\t\t\t[currentValue]=\"form?.get('from').value?.name\"\r\n\t\t\t\t\t\t\t(searchRes)=\"updateSearchAccount($event)\"></lib-search>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of accountOption\"\r\n\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t{{ option.name + ' (' + option.accountNo + ')' }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t<mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.from\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('from').touched \r\n\t\t\t\t\t\t&& form.get('from').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n\t\t\t\t<mat-select matSelectInfiniteScroll\r\n\t\t\t\t\tformControlName=\"template\"\r\n\t\t\t\t\tplaceholder=\"Select template\"\r\n\t\t\t\t\t[complete]=\"isHaveNextTemplateOption === false\"\r\n\t\t\t\t\t[compareWith]=\"templateSelectedDisplay\"\r\n\t\t\t\t\t(infiniteScroll)=\"getNextTemplateBatch()\"\r\n\t\t\t\t\t(selectionChange)=\"updateTemplate($event.value)\">\r\n\t\t\t\t\t<div style=\"margin: 20px\">\r\n\t\t\t\t\t\t<lib-search [placeholder]=\"'Search'\"\r\n\t\t\t\t\t\t\t[currentValue]=\"form?.get('template').value?.name\"\r\n\t\t\t\t\t\t\t(searchRes)=\"updateSearch($event)\"></lib-search>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of templateOption\"\r\n\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t{{ option.name }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t<mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.template\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('template').touched \r\n\t\t\t\t\t\t&& form.get('template').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div *ngIf=\"isHaveTemplateParam\"\r\n\t\t\tclass=\"d-flex justify-content-end\">\r\n\t\t\t<mat-checkbox labelPosition=\"before\"\r\n\t\t\t\tformControlName=\"isUpload\"\r\n\t\t\t\t(change)=\"updateDownloadCSV($event.checked)\">\r\n\t\t\t\tUsing Download XLSX\r\n\t\t\t</mat-checkbox>\r\n\t\t</div>\r\n\r\n\t\t<ng-container *ngIf=\"!form.get('isUpload').value\">\r\n\t\t\t<div *ngIf=\"form.get('template').value?.category === 'AUTHENTICATION'\"\r\n\t\t\t\tclass=\"form-group\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t<mat-label> OTP Value </mat-label>\r\n\r\n\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tformControlName=\"otpValue\">\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\r\n\t\t\t<ng-container *ngIf=\"getParamHeader?.length > 0\">\r\n\t\t\t\t<p class=\"font-16px font-PoppinsBold\">Header Parameter</p>\r\n\r\n\t\t\t\t<div *ngFor=\"\r\n\t\t\t\t\tlet param of getParamHeader;\r\n\t\t\t\t\tlet paramHeaderIndex = index\r\n\t\t\t\t\"\r\n\t\t\t\t\tclass=\"form-group\">\r\n\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t<mat-label>Parameter {{ paramHeaderIndex + 1 }}</mat-label>\r\n\r\n\t\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t[placeholder]=\"'Parameter ' + (paramHeaderIndex + 1)\"\r\n\t\t\t\t\t\t\t[formControl]=\"param.get('name')\" />\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<ng-container *ngIf=\"getParamBody?.length > 0\">\r\n\t\t\t\t<p class=\"font-16px font-PoppinsBold mt-3\">Body Parameter</p>\r\n\r\n\t\t\t\t<div *ngFor=\"\r\n\t\t\t\t\t\tlet param of getParamBody;\r\n\t\t\t\t\t\tlet paramBodyIndex = index\r\n\t\t\t\t\t\"\r\n\t\t\t\t\tclass=\"form-group\">\r\n\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t<mat-label>Parameter {{ paramBodyIndex + 1 }}</mat-label>\r\n\r\n\t\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t[placeholder]=\"'Parameter ' + (paramBodyIndex + 1)\"\r\n\t\t\t\t\t\t\t[formControl]=\"param.get('name')\" />\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<ng-container *ngIf=\"isShowParameter\">\r\n\t\t\t\t<p class=\"font-16px font-PoppinsBold mt-3\">Button Parameter</p>\r\n\r\n\t\t\t\t<ng-container *ngFor=\"let button of getButton; let buttonIndex = index\">\r\n\t\t\t\t\t<ng-container *ngIf=\"getParamButton(buttonIndex)?.length > 0\">\r\n\t\t\t\t\t\t<p class=\"font-14px font-PoppinsBold mt-3\">Button {{ buttonIndex + 1 }}</p>\r\n\r\n\t\t\t\t\t\t<div *ngFor=\"let param of getParamButton(buttonIndex); let paramIndex = index\"\r\n\t\t\t\t\t\t\tclass=\"form-group\">\r\n\t\t\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t\t\t<mat-label>Parameter {{ paramIndex + 1 }}</mat-label>\r\n\r\n\t\t\t\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\t[placeholder]=\"'Parameter ' + (paramIndex + 1)\"\r\n\t\t\t\t\t\t\t\t\t[formControl]=\"param.get('name')\" />\r\n\t\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\r\n\t\t<ng-container\r\n\t\t\t*ngIf=\"['image','video','document'].includes(form.get('template').value?.header?.type?.toLowerCase())\">\r\n\t\t\t<p class=\"font-16px font-PoppinsBold mt-3\">File</p>\r\n\r\n\t\t\t<div class=\"form-group\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t<mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t(click)=\"filePicker.click()\"\r\n\t\t\t\t\t\tformControlName=\"fileName\">\r\n\r\n\t\t\t\t\t<button mat-button\r\n\t\t\t\t\t\tmatSuffix\r\n\t\t\t\t\t\tmat-icon-button\r\n\t\t\t\t\t\taria-label=\"Choose File\"\r\n\t\t\t\t\t\t(click)=\"filePicker.click()\">\r\n\t\t\t\t\t\t<mat-icon>attach_file</mat-icon>\r\n\t\t\t\t\t</button>\r\n\r\n\t\t\t\t\t<input #filePicker\r\n\t\t\t\t\t\thidden\r\n\t\t\t\t\t\ttype=\"file\"\r\n\t\t\t\t\t\t[accept]=\"extFileAccepted\"\r\n\t\t\t\t\t\t(change)=\"onFileSelected($event)\" />\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<ng-container *ngIf=\"getIsCatalogue\">\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\"\r\n\t\t\t\tstyle=\"margin-bottom: 20;\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n\t\t\t\t<mat-select matSelectInfiniteScroll\r\n\t\t\t\t\tformControlName=\"from\"\r\n\t\t\t\t\tplaceholder=\"Select from\"\r\n\t\t\t\t\t[complete]=\"isHaveNextAccountOption === false\"\r\n\t\t\t\t\t[compareWith]=\"accountSelectedDisplay\"\r\n\t\t\t\t\t(infiniteScroll)=\"getNextAccountBatch()\">\r\n\t\t\t\t\t<div style=\"margin: 20px\">\r\n\t\t\t\t\t\t<lib-search [placeholder]=\"'Search'\"\r\n\t\t\t\t\t\t\t[currentValue]=\"form?.get('from').value?.name\"\r\n\t\t\t\t\t\t\t(searchRes)=\"updateSearchAccount($event)\"></lib-search>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of accountOption\"\r\n\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t{{ option.name + ' (' + option.accountNo + ')' }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t<mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.from\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('from').touched \r\n\t\t\t\t\t\t&& form.get('from').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\"\r\n\t\t\t\tstyle=\"margin-bottom: 20;\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">Category</mat-label>\r\n\r\n\t\t\t\t<mat-select formControlName=\"category\"\r\n\t\t\t\t\tplaceholder=\"Select category\">\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of categoryOption\"\r\n\t\t\t\t\t\t[value]=\"option.value\">\r\n\t\t\t\t\t\t{{ option.label }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.category\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('category').touched \r\n\t\t\t\t\t\t&& form.get('category').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"form-group\">\r\n\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\tclass=\"w-100\"\r\n\t\t\t\tstyle=\"margin-bottom: 20;\">\r\n\t\t\t\t<mat-label class=\"asterix--after\">Catalog</mat-label>\r\n\r\n\t\t\t\t<mat-select formControlName=\"catalogue\"\r\n\t\t\t\t\tplaceholder=\"Select catalog\">\r\n\t\t\t\t\t<mat-option *ngFor=\"let option of accountOption\"\r\n\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t{{ option.name }}\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t*ngFor=\"let validation of validationMessages.catalogue\">\r\n\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t*ngIf=\"form.get('catalogue').touched \r\n\t\t\t\t\t\t&& form.get('catalogue').hasError(validation.type)\">\r\n\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t</p>\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\r\n\t\t<div *ngIf=\"form.get('category').value === 'product'\"\r\n\t\t\tstyle=\"padding: 8px;border-radius: 8px;border: 1px solid #6177c4;\">\r\n\r\n\t\t\t<div class=\"form-group\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t<mat-label class=\"asterix--after\">Product</mat-label>\r\n\r\n\t\t\t\t\t<mat-select formControlName=\"product\"\r\n\t\t\t\t\t\tplaceholder=\"Select product\">\r\n\t\t\t\t\t\t<mat-option *ngFor=\"let option of accountOption\"\r\n\t\t\t\t\t\t\t[value]=\"option\">\r\n\t\t\t\t\t\t\t{{ option.name }}\r\n\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t</mat-select>\r\n\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t\t*ngFor=\"let validation of validationMessages.product\">\r\n\t\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t\t*ngIf=\"form.get('product').touched \r\n\t\t\t\t\t\t\t&& form.get('product').hasError(validation.type)\">\r\n\t\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</mat-error>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"form-group\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t<mat-label>Body</mat-label>\r\n\r\n\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tmaxlength=\"100\"\r\n\t\t\t\t\t\tformControlName=\"body\"\r\n\t\t\t\t\t\tplaceholder=\"Enter body\">\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</form>\r\n",
|
|
4454
|
+
template: "<form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Message Type</mat-label>\r\n\r\n <mat-select placeholder=\"Select message type\" formControlName=\"channel\">\r\n <mat-option\r\n *ngFor=\"let option of msgTypeWAOption\"\r\n [value]=\"option.code\"\r\n (click)=\"formReset()\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.channel\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('channel')?.touched && form.get('channel')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n\r\n <div\r\n *ngIf=\"!getIsTemplate\"\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 16px; border: 1px solid rgb(243, 124, 44)\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n <div>\r\n If you select this channel, keep in mind that the message might not be delivered to\r\n all selected customers. This is because the customer must have had a conversation\r\n previously with BSP.\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getIsText\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from').touched && form.get('from').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label class=\"asterix--after\">Text</mat-label>\r\n\r\n <textarea\r\n matInput\r\n rows=\"6\"\r\n cols=\"50\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"2\"\r\n cdkAutosizeMaxRows=\"15\"\r\n formControlName=\"text\"\r\n placeholder=\"Enter text\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.text\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('text')?.touched && form.get('text')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsMedia\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Media Type</mat-label>\r\n\r\n <mat-select\r\n placeholder=\"Select media type\"\r\n formControlName=\"media\"\r\n (selectionChange)=\"updateMediaType($event.value)\"\r\n >\r\n <mat-option *ngFor=\"let option of mediaTypeOption\" [value]=\"option.code\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.media\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('media').touched && form.get('media').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from').touched && form.get('from').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"form.get('media').value?.toLowerCase() !== 'location'\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n (click)=\"filePicker.click()\"\r\n formControlName=\"fileName\"\r\n />\r\n\r\n <button\r\n mat-button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Choose File\"\r\n (click)=\"filePicker.click()\"\r\n >\r\n <mat-icon>attach_file</mat-icon>\r\n </button>\r\n\r\n <input\r\n #filePicker\r\n hidden\r\n type=\"file\"\r\n [accept]=\"extFileAccepted\"\r\n (change)=\"onFileSelected($event)\"\r\n />\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.fileName\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('fileName').touched &&\r\n form.get('fileName').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('media').value?.toLowerCase() === 'location'\">\r\n <div class=\"w-100\">\r\n <h4 class=\"asterix--after\">Location</h4>\r\n\r\n <div class=\"w-100\">\r\n <agm-map\r\n style=\"width: 100%; height: 400px\"\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [disableDoubleClickZoom]=\"maps.isDoubleClickZoom\"\r\n [zoom]=\"maps.zoom\"\r\n >\r\n <agm-marker\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [markerDraggable]=\"maps.isDraggable\"\r\n (dragEnd)=\"markerDragEnd($event)\"\r\n ></agm-marker>\r\n </agm-map>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Location</mat-label>\r\n\r\n <input\r\n #mapSearch\r\n matInput\r\n type=\"text\"\r\n maxlength=\"100\"\r\n placeholder=\"Enter location here\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsTemplate\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n (selectionChange)=\"getTemplateOptionService($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"template\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n (selectionChange)=\"updateTemplate($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('template').value?.name\"\r\n (searchRes)=\"updateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.template\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('template')?.touched &&\r\n form.get('template')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div *ngIf=\"isHaveTemplateParam\" class=\"d-flex justify-content-end\">\r\n <mat-checkbox\r\n labelPosition=\"before\"\r\n formControlName=\"isUpload\"\r\n (change)=\"updateDownloadCSV($event.checked)\"\r\n >\r\n Using Download XLSX\r\n </mat-checkbox>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!form.get('isUpload')?.value\">\r\n <div\r\n *ngIf=\"form.get('template')?.value?.category === 'AUTHENTICATION'\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> OTP Value </mat-label>\r\n\r\n <input matInput type=\"text\" formControlName=\"otpValue\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParamHeader?.length > 0\">\r\n <p class=\"font-16px font-PoppinsBold\">Header Parameter</p>\r\n\r\n <div\r\n *ngFor=\"let param of getParamHeader; let paramHeaderIndex = index\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramHeaderIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramHeaderIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getParamBody?.length > 0\">\r\n <p class=\"font-16px font-PoppinsBold mt-3\">Body Parameter</p>\r\n\r\n <div\r\n *ngFor=\"let param of getParamBody; let paramBodyIndex = index\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramBodyIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramBodyIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isShowParameter\">\r\n <p class=\"font-16px font-PoppinsBold mt-3\">Button Parameter</p>\r\n\r\n <ng-container *ngFor=\"let button of getButton; let buttonIndex = index\">\r\n <ng-container *ngIf=\"getParamButton(buttonIndex)?.length > 0\">\r\n <p class=\"font-14px font-PoppinsBold mt-3\">Button {{ buttonIndex + 1 }}</p>\r\n\r\n <div\r\n *ngFor=\"\r\n let param of getParamButton(buttonIndex);\r\n let paramIndex = index\r\n \"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"\r\n ['image', 'video', 'document'].includes(\r\n form.get('template')?.value?.header?.type?.toLowerCase()\r\n )\r\n \"\r\n >\r\n <p class=\"font-16px font-PoppinsBold mt-3\">File</p>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n (click)=\"filePicker.click()\"\r\n formControlName=\"fileName\"\r\n />\r\n\r\n <button\r\n mat-button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Choose File\"\r\n (click)=\"filePicker.click()\"\r\n >\r\n <mat-icon>attach_file</mat-icon>\r\n </button>\r\n\r\n <input\r\n #filePicker\r\n hidden\r\n type=\"file\"\r\n [accept]=\"extFileAccepted\"\r\n (change)=\"onFileSelected($event)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsCatalogue\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">Category</mat-label>\r\n\r\n <mat-select formControlName=\"category\" placeholder=\"Select category\">\r\n <mat-option *ngFor=\"let option of categoryOption\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.category\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('category')?.touched &&\r\n form.get('category')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">Catalog</mat-label>\r\n\r\n <mat-select formControlName=\"catalogue\" placeholder=\"Select catalog\">\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.catalogue\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('catalogue')?.touched &&\r\n form.get('catalogue')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"form.get('category')?.value === 'product'\"\r\n style=\"padding: 8px; border-radius: 8px; border: 1px solid #6177c4\"\r\n >\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Product</mat-label>\r\n\r\n <mat-select formControlName=\"product\" placeholder=\"Select product\">\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.product\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('product')?.touched &&\r\n form.get('product')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Body</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n maxlength=\"100\"\r\n formControlName=\"body\"\r\n placeholder=\"Enter body\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsUtility\">\r\n <div style=\"display: grid; gap: 0.5rem\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n <mat-radio-group\r\n style=\"display: flex; gap: 0.5rem; flex-wrap: wrap\"\r\n formControlName=\"isUseExistingTemplate\"\r\n (change)=\"handleChangeTemplate($event.value)\"\r\n >\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n *ngFor=\"let option of templates\"\r\n color=\"primary\"\r\n >\r\n {{ option.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n (selectionChange)=\"handleChangeFrom($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!form.get('isUseExistingTemplate')?.value; else existingTmpl\">\r\n <div\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 8px; border: 1px solid rgb(243, 124, 44)\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n <div>\r\n Direct Send access restricted for 30 days due to continued misuse. Final warning\r\n before permanent revocation.\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label class=\"asterix--after\">Body</mat-label>\r\n\r\n <textarea\r\n matInput\r\n rows=\"6\"\r\n cols=\"50\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"2\"\r\n cdkAutosizeMaxRows=\"15\"\r\n formControlName=\"text\"\r\n placeholder=\"Enter text\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.text\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('text').touched && form.get('text').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <app-input\r\n type=\"numeric\"\r\n formControlName=\"ttl\"\r\n label=\"TTL\"\r\n placeholder=\"Enter ttl\"\r\n [trimLeadingZeros]=\"true\"\r\n ></app-input>\r\n </div>\r\n\r\n <div *ngIf=\"!isReadOnlyMode\">\r\n <mat-checkbox formControlName=\"isNeedSave\">\r\n Save this message as future template\r\n </mat-checkbox>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #existingTmpl>\r\n <div\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 8px; border: 1px solid rgb(243, 124, 44)\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n <div>\r\n Direct Send access restricted for 30 days due to continued misuse. Final warning\r\n before permanent revocation.\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"template\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n (selectionChange)=\"updateTemplate($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('template').value?.name\"\r\n (searchRes)=\"updateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.template\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('template')?.touched &&\r\n form.get('template')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <app-input\r\n type=\"numeric\"\r\n formControlName=\"ttl\"\r\n label=\"TTL\"\r\n placeholder=\"Enter ttl\"\r\n [trimLeadingZeros]=\"true\"\r\n ></app-input>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n</form>\r\n",
|
|
4216
4455
|
styles: [".asterix--after:after{content:\"*\";color:red}"]
|
|
4217
4456
|
})
|
|
4218
4457
|
], GeneralInformationWAComponent);
|
|
@@ -4280,7 +4519,7 @@ let FailoverMechanismComponent = class FailoverMechanismComponent {
|
|
|
4280
4519
|
}
|
|
4281
4520
|
initForm() {
|
|
4282
4521
|
this.form = new FormGroup({
|
|
4283
|
-
active: new FormControl(false, Validators.required),
|
|
4522
|
+
active: new FormControl(false, Validators$1.required),
|
|
4284
4523
|
type: new FormControl(''),
|
|
4285
4524
|
interval: new FormControl(null),
|
|
4286
4525
|
accounts: new FormArray([]),
|
|
@@ -4328,7 +4567,7 @@ let FailoverMechanismComponent = class FailoverMechanismComponent {
|
|
|
4328
4567
|
}
|
|
4329
4568
|
: (_g = (_f = data) === null || _f === void 0 ? void 0 : _f.accountId, (_g !== null && _g !== void 0 ? _g : '')),
|
|
4330
4569
|
disabled: this.isReadOnlyMode,
|
|
4331
|
-
}, Validators.required),
|
|
4570
|
+
}, Validators$1.required),
|
|
4332
4571
|
accountName: new FormControl((_j = (_h = data) === null || _h === void 0 ? void 0 : _h.accountName, (_j !== null && _j !== void 0 ? _j : ''))),
|
|
4333
4572
|
subject: new FormControl({
|
|
4334
4573
|
value: (_l = (_k = data) === null || _k === void 0 ? void 0 : _k.subject, (_l !== null && _l !== void 0 ? _l : '')),
|
|
@@ -4354,7 +4593,7 @@ let FailoverMechanismComponent = class FailoverMechanismComponent {
|
|
|
4354
4593
|
}
|
|
4355
4594
|
initParameter() {
|
|
4356
4595
|
const form = new FormGroup({
|
|
4357
|
-
name: new FormControl('', Validators.required),
|
|
4596
|
+
name: new FormControl('', Validators$1.required),
|
|
4358
4597
|
});
|
|
4359
4598
|
return form;
|
|
4360
4599
|
}
|
|
@@ -4457,7 +4696,7 @@ let FailoverMechanismComponent = class FailoverMechanismComponent {
|
|
|
4457
4696
|
this.form
|
|
4458
4697
|
.get('type')
|
|
4459
4698
|
.setValue((_c = (_b = (_a = this.getCampaignStorage) === null || _a === void 0 ? void 0 : _a.failover) === null || _b === void 0 ? void 0 : _b.type, (_c !== null && _c !== void 0 ? _c : '')));
|
|
4460
|
-
this.form.get('type').setValidators(Validators.required);
|
|
4699
|
+
this.form.get('type').setValidators(Validators$1.required);
|
|
4461
4700
|
this.form.get('type').updateValueAndValidity();
|
|
4462
4701
|
if (_active) {
|
|
4463
4702
|
const accounts = (_f = (_e = (_d = this.getCampaignStorage) === null || _d === void 0 ? void 0 : _d.failover) === null || _e === void 0 ? void 0 : _e.accounts) === null || _f === void 0 ? void 0 : _f.filter((t) => {
|
|
@@ -4493,7 +4732,7 @@ let FailoverMechanismComponent = class FailoverMechanismComponent {
|
|
|
4493
4732
|
.setValue((_c = (_b = (_a = this.getCampaignStorage) === null || _a === void 0 ? void 0 : _a.failover) === null || _b === void 0 ? void 0 : _b.interval, (_c !== null && _c !== void 0 ? _c : null)));
|
|
4494
4733
|
this.form
|
|
4495
4734
|
.get('interval')
|
|
4496
|
-
.setValidators([Validators.required, intervalTimeValidator()]);
|
|
4735
|
+
.setValidators([Validators$1.required, intervalTimeValidator()]);
|
|
4497
4736
|
this.form.get('interval').updateValueAndValidity();
|
|
4498
4737
|
return;
|
|
4499
4738
|
}
|
|
@@ -4506,9 +4745,9 @@ let FailoverMechanismComponent = class FailoverMechanismComponent {
|
|
|
4506
4745
|
const isChooseAccount = this.getAccount.filter(control => control.get('accountId').value);
|
|
4507
4746
|
this.getAccount.forEach(control => {
|
|
4508
4747
|
var _a;
|
|
4509
|
-
control.get('accountId').setValidators(Validators.required);
|
|
4510
|
-
control.get('subject').setValidators(Validators.required);
|
|
4511
|
-
control.get('template').setValidators(Validators.required);
|
|
4748
|
+
control.get('accountId').setValidators(Validators$1.required);
|
|
4749
|
+
control.get('subject').setValidators(Validators$1.required);
|
|
4750
|
+
control.get('template').setValidators(Validators$1.required);
|
|
4512
4751
|
if (!control.get('accountId').value &&
|
|
4513
4752
|
((_a = isChooseAccount) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
4514
4753
|
control.get('accountId').clearValidators();
|
|
@@ -4614,10 +4853,10 @@ let GeneralInformationComponent = class GeneralInformationComponent {
|
|
|
4614
4853
|
this.form = new FormGroup({
|
|
4615
4854
|
id: new FormControl(null),
|
|
4616
4855
|
campaignName: new FormControl(null, [
|
|
4617
|
-
Validators.required,
|
|
4618
|
-
Validators.maxLength(100),
|
|
4856
|
+
Validators$1.required,
|
|
4857
|
+
Validators$1.maxLength(100),
|
|
4619
4858
|
]),
|
|
4620
|
-
medium: new FormControl(null, [Validators.required]),
|
|
4859
|
+
medium: new FormControl(null, [Validators$1.required]),
|
|
4621
4860
|
});
|
|
4622
4861
|
this.form.valueChanges.subscribe(() => {
|
|
4623
4862
|
this.isTouchedWAForm = !this.isTouchedWAForm;
|
|
@@ -4736,8 +4975,8 @@ __decorate([
|
|
|
4736
4975
|
GeneralInformationComponent = __decorate([
|
|
4737
4976
|
Component({
|
|
4738
4977
|
selector: 'lib-new-campaign-general-information',
|
|
4739
|
-
template: "<form autocomplete=\"off\"\r\n\t[formGroup]=\"form\">\r\n\t<div class=\"campaign-info\">\r\n\t\t<div class=\"campaign-info-child\">\r\n\t\t\t<mat-card>\r\n\t\t\t\t<mat-card-content>\r\n\t\t\t\t\t<h3 class=\"font-22px font-PoppinsBold mb-4\">General Information</h3>\r\n\r\n\t\t\t\t\t<div class=\"form-group\">\r\n\t\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t\t<mat-label class=\"asterix--after\">Broadcast Name</mat-label>\r\n\r\n\t\t\t\t\t\t\t<input matInput\r\n\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\tformControlName=\"campaignName\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Broadcast name\">\r\n\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<div class=\"d-flex justify-content-between align-items-center w-100\">\r\n\t\t\t\t\t\t\t<mat-hint align=\"start\">\r\n\t\t\t\t\t\t\t\t{{form.get('campaignName').value?.length || 0}}/100\r\n\t\t\t\t\t\t\t</mat-hint>\r\n\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t\t\t\t\t\t*ngFor=\"let validation of validationMessages.campaignName\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"form.get('campaignName').touched\r\n\t\t\t\t\t\t\t\t\t\t&& form.get('campaignName').hasError(validation.type)\">\r\n\t\t\t\t\t\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"form-group\">\r\n\t\t\t\t\t\t<mat-form-field appearance=\"outline\"\r\n\t\t\t\t\t\t\tfloatLabel=\"always\"\r\n\t\t\t\t\t\t\tclass=\"w-100\">\r\n\t\t\t\t\t\t\t<mat-label class=\"asterix--after\">Channel</mat-label>\r\n\r\n\t\t\t\t\t\t\t<mat-select placeholder=\"Select channel\"\r\n\t\t\t\t\t\t\t\tformControlName=\"medium\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of channelOption\"\r\n\t\t\t\t\t\t\t\t\t[value]=\"option.value\">\r\n\t\t\t\t\t\t\t\t\t{{ option.label }}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-error align=\"end\"\r\n\t\t\t\t\t\t\t*ngFor=\"let validation of validationMessages.medium\">\r\n\t\t\t\t\t\t\t<p class=\"font-12px mb-0\"\r\n\t\t\t\t\t\t\t\t*ngIf=\"form.get('medium').touched\r\n\t\t\t\t\t\t\t\t\t\t&& form.get('medium').hasError(validation.type)\">\r\n\t\t\t\t\t\t\t\t{{ validation.message }}\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'WA'\">\r\n\t\t\t\t\t\t<lib-general-information-wa [isTouchedForm]=\"isTouchedWAForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-wa>\r\n\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'LINE'\">\r\n\t\t\t\t\t\t<lib-general-information-line [isTouchedForm]=\"isTouchedSMSForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-line>\r\n\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'SMS'\">\r\n\t\t\t\t\t\t<lib-general-information-sms [isTouchedForm]=\"isTouchedSMSForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-sms>\r\n\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t<ng-container *ngIf=\"form.get('medium').value === 'EMAIL'\">\r\n\t\t\t\t\t\t<lib-general-information-email [isTouchedForm]=\"isTouchedEmailForm\"\r\n\t\t\t\t\t\t\t[isReadOnlyMode]=\"isReadOnlyMode\"\r\n\t\t\t\t\t\t\t(updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"></lib-general-information-email>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t</mat-card-content>\r\n\t\t\t</mat-card>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"campaign-info-child pl-20px\">\r\n\t\t\t<h3 class=\"font-22px font-PoppinsBold\">Broadcast Content</h3>\r\n\r\n\t\t\t<div\r\n\t\t\t\t[ngClass]=\"form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL' ? 'campaign-border-preview' : 'campaign-preview'\">\r\n\t\t\t\t<section *ngIf=\"form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\">\r\n\t\t\t\t\t<p *ngIf=\"getBody\"\r\n\t\t\t\t\t\tclass=\"body my-2\"\r\n\t\t\t\t\t\tstyle=\"max-width: 500px;word-wrap: break-word;\"\r\n\t\t\t\t\t\t[innerHTML]=\"getBody\"></p>\r\n\t\t\t\t</section>\r\n\r\n\t\t\t\t<section *ngIf=\"form.get('medium').value === 'WA'\"\r\n\t\t\t\t\tclass=\"campaign-preview__wa\">\r\n\t\t\t\t\t<div class=\"header-preview\">\r\n\t\t\t\t\t\t<div class=\"heading\">\r\n\t\t\t\t\t\t\t{{ getHeader }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"body-preview\">\r\n\t\t\t\t\t\t<section *ngIf=\"getBody || getMedia || displayFile\">\r\n\t\t\t\t\t\t\t<div class=\"chat\"\r\n\t\t\t\t\t\t\t\t[ngClass]=\"{'no-bottom-border': getTemplate?.buttons?.length > 0}\">\r\n\t\t\t\t\t\t\t\t<img *ngIf=\"(getMedia === 'IMAGE' || getTemplate?.header?.type?.toLowerCase() === 'image') && displayFile\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"max-width: 100%;\"\r\n\t\t\t\t\t\t\t\t\talt=\"image\"\r\n\t\t\t\t\t\t\t\t\t[src]=\"displayFile\" />\r\n\r\n\t\t\t\t\t\t\t\t<video\r\n\t\t\t\t\t\t\t\t\t*ngIf=\"(getMedia === 'VIDEO' || getTemplate?.header?.type?.toLowerCase() === 'video') && displayFile\"\r\n\t\t\t\t\t\t\t\t\tid=\"video\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"width: 100%;\"\r\n\t\t\t\t\t\t\t\t\t[src]=\"displayFile\"\r\n\t\t\t\t\t\t\t\t\tcontrols></video>\r\n\r\n\t\t\t\t\t\t\t\t<div *ngIf=\"getMedia === 'DOCUMENT'\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"display: flex;\">\r\n\t\t\t\t\t\t\t\t\t<img style=\"width: 13px; height: 18px;\"\r\n\t\t\t\t\t\t\t\t\t\talt=\"document\"\r\n\t\t\t\t\t\t\t\t\t\tsrc=\"../../../../../assets/images/icon-file.png\">\r\n\r\n\t\t\t\t\t\t\t\t\t<span style=\"margin-left: 10px;\">Document</span>\r\n\t\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t\t<ng-container *ngIf=\"getMedia === 'LOCATION'\">\r\n\t\t\t\t\t\t\t\t\t<agm-map style=\"width:100%;height:200px;\"\r\n\t\t\t\t\t\t\t\t\t\t[disableDefaultUI]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t[latitude]=\"maps.latitude\"\r\n\t\t\t\t\t\t\t\t\t\t[longitude]=\"maps.longitude\"\r\n\t\t\t\t\t\t\t\t\t\t[zoom]=\"maps.zoom\">\r\n\t\t\t\t\t\t\t\t\t\t<agm-marker [latitude]=\"maps.latitude\"\r\n\t\t\t\t\t\t\t\t\t\t\t[longitude]=\"maps.longitude\"\r\n\t\t\t\t\t\t\t\t\t\t\t[markerDraggable]=\"false\"></agm-marker>\r\n\t\t\t\t\t\t\t\t\t</agm-map>\r\n\t\t\t\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\t\t\t\t[href]=\"'https://www.google.com/maps/search/?api=1&query='+ maps.latitude + ',' + maps.longitude\">\r\n\t\t\t\t\t\t\t\t\t\thttps://www.google.com/maps/search/?api=1&query={{maps.latitude}},{{maps.longitude}}\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t\t\t\t\t<p *ngIf=\"getBody\"\r\n\t\t\t\t\t\t\t\t\tclass=\"body my-2\"\r\n\t\t\t\t\t\t\t\t\t[innerHTML]=\"getBody\"></p>\r\n\r\n\t\t\t\t\t\t\t\t<p *ngIf=\"getTemplate?.footer\"\r\n\t\t\t\t\t\t\t\t\tclass=\"mb-2\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"color: rgb(160, 160, 160);\">\r\n\t\t\t\t\t\t\t\t\t{{ getTemplate.footer }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t<section *ngIf=\"getTemplate?.buttons?.length > 0\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let button of getTemplateButton\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t{{ button?.text || button?.type }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t<div *ngIf=\"getTemplate?.buttons?.length > 3\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn pb-0 pointer\"\r\n\t\t\t\t\t\t\t\t(click)=\"isShowMore = !isShowMore\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon>list</mat-icon> See all options\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</section>\r\n\r\n\t\t\t\t<section *ngIf=\"form.get('medium').value === 'LINE'\"\r\n\t\t\t\t\tclass=\"campaign-preview__line\">\r\n\t\t\t\t\t<div class=\"header-preview\">\r\n\t\t\t\t\t\t<div class=\"heading\">\r\n\t\t\t\t\t\t\t{{ getHeader }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"body-preview\">\r\n\t\t\t\t\t\t<!-- Template Line Text -->\r\n\t\t\t\t\t\t<section *ngIf=\"isText || !isJSON\"\r\n\t\t\t\t\t\t\tclass=\"chat\">\r\n\t\t\t\t\t\t\t<p class=\"body my-2\"\r\n\t\t\t\t\t\t\t\t[innerHTML]=\"getBody\"></p>\r\n\t\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t\t<!-- Template Line Button | Confirmation -->\r\n\t\t\t\t\t\t<section *ngIf=\"['buttons', 'confirm'].includes(getTemplateLine?.type)\"\r\n\t\t\t\t\t\t\tclass=\"chat\"\r\n\t\t\t\t\t\t\t[ngClass]=\"{'no-bottom-border': getTemplateLine?.actions?.length > 0}\">\r\n\t\t\t\t\t\t\t<img *ngIf=\"getTemplateLine?.thumbnailImageUrl\"\r\n\t\t\t\t\t\t\t\tstyle=\"max-width: 100%;\"\r\n\t\t\t\t\t\t\t\tclass=\"mb-1\"\r\n\t\t\t\t\t\t\t\t[src]=\"getTemplateLine?.thumbnailImageUrl\" />\r\n\r\n\t\t\t\t\t\t\t<p *ngIf=\"getTemplateLine?.title\"\r\n\t\t\t\t\t\t\t\tclass=\"font-PoppinsBold mb-1\"\r\n\t\t\t\t\t\t\t\t[innerHTML]=\"getTemplateLine?.title\"> </p>\r\n\r\n\t\t\t\t\t\t\t<p *ngIf=\"getTemplateLine?.text\"\r\n\t\t\t\t\t\t\t\tclass=\"mb-0\"\r\n\t\t\t\t\t\t\t\t[innerHTML]=\"getTemplateLine?.text\"> </p>\r\n\t\t\t\t\t\t</section>\r\n\r\n\t\t\t\t\t\t<!-- Template Line Carousel -->\r\n\t\t\t\t\t\t<div *ngIf=\"['carousel'].includes(getTemplateLine?.type)\"\r\n\t\t\t\t\t\t\tclass=\"d-flex gap-2 overflow-auto\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let column of getTemplateLine?.columns\">\r\n\t\t\t\t\t\t\t\t<section class=\"chat w-100\"\r\n\t\t\t\t\t\t\t\t\t[ngClass]=\"{'no-bottom-border': column?.actions?.length > 0}\">\r\n\t\t\t\t\t\t\t\t\t<img *ngIf=\"column.thumbnailImageUrl\"\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"max-width: 100%;\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"mb-1\"\r\n\t\t\t\t\t\t\t\t\t\t[src]=\"column.thumbnailImageUrl\" />\r\n\r\n\t\t\t\t\t\t\t\t\t<p *ngIf=\"column.title\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"font-PoppinsBold mb-1\"\r\n\t\t\t\t\t\t\t\t\t\t[innerHTML]=\"column.title\"> </p>\r\n\r\n\t\t\t\t\t\t\t\t\t<p *ngIf=\"column.text\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"mb-0\"\r\n\t\t\t\t\t\t\t\t\t\t[innerHTML]=\"column.text\"> </p>\r\n\t\t\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t\t\t<section *ngIf=\"column?.actions?.length > 0\">\r\n\t\t\t\t\t\t\t\t\t<div *ngFor=\"let button of column?.actions\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"params-btn mw-100 pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t\t\t{{ button?.text }}\r\n\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<!-- Template Line Image Carousel -->\r\n\t\t\t\t\t\t<div *ngIf=\"['image_carousel'].includes(getTemplateLine?.type)\"\r\n\t\t\t\t\t\t\tclass=\"d-flex gap-2 overflow-auto\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let column of getTemplateLine?.columns\">\r\n\t\t\t\t\t\t\t\t<div class=\"image-container\">\r\n\t\t\t\t\t\t\t\t\t<img [src]=\"column.imageUrl\"\r\n\t\t\t\t\t\t\t\t\t\talt=\"image\">\r\n\r\n\t\t\t\t\t\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"font-13px overlay-text\">{{ column.action.label }}</p>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<!-- Button Line -->\r\n\t\t\t\t\t\t<section *ngIf=\"getTemplateLine?.type !== 'confirm' && getTemplateLine?.actions?.length > 0\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let button of getTemplateLine?.actions\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t{{ button?.text }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t<section *ngIf=\"getTemplateLine?.type === 'confirm' && getTemplateLine?.actions?.length > 0\"\r\n\t\t\t\t\t\t\tclass=\"d-flex justify-content-around mw-70 bg-white\">\r\n\t\t\t\t\t\t\t<div *ngFor=\"let button of getTemplateLine?.actions\"\r\n\t\t\t\t\t\t\t\tclass=\"params-btn flex pb-0 pointer\">\r\n\t\t\t\t\t\t\t\t<p class=\"mb-0\">\r\n\t\t\t\t\t\t\t\t\t{{ button?.text }}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</section>\r\n\t\t\t\t\t\t<!-- ./ Button Line -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</section>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"d-flex\"\r\n\t\t\t\tstyle=\"flex-direction: column;\">\r\n\t\t\t\t<span *ngIf=\"form.get('medium').value === 'SMS'\"\r\n\t\t\t\t\tstyle=\"text-align: right;width: 100%;\">\r\n\t\t\t\t\t{{ twilioResultCounter.fulltext }}\r\n\t\t\t\t</span>\r\n\t\t\t\t<span style=\"text-align: right;width: 100%;color: red\"\r\n\t\t\t\t\t*ngIf=\"twilioResultCounter.segments > 10 && form.get('medium').value === 'SMS'\">\r\n\t\t\t\t\tMaximum Segment is 10\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n\r\n<ng-template #isSpinner>\r\n\t<div class=\"text-center my-auto\">\r\n\t\t<img src=\"../../../../../assets/images/spinner.svg\">\r\n\t</div>\r\n</ng-template>\r\n",
|
|
4740
|
-
styles: [".campaign-info{display:flex}.campaign-info-child{flex:1}.campaign-info .asterix--after:after{content:\"*\";color:red}.campaign-info .pl-20px{padding-left:20px}.campaign-info .mw-70{max-width:70%}.campaign-info .campaign-preview{width:75%}.campaign-info .campaign-preview .header-preview{padding:15px;min-height:60px;border-radius:10px 10px 0 0}.campaign-info .campaign-preview .header-preview .heading{width:100%;color:#e0e0e0;margin-left:5px;font-size:20px}.campaign-info .campaign-preview .body-preview{padding:15px;min-height:470px}.campaign-info .campaign-preview .body-preview .chat{width:70%;padding:11px;font-size:14px;line-height:22px;color:#494949;border-radius:8px;background:#fff;overflow-wrap:break-word;white-space:pre-line;box-shadow:12px 12px 20px rgba(44,59,113,.04)}.campaign-info .campaign-preview .body-preview .chat .body{max-height:400px;overflow-y:auto;overscroll-behavior-y:contain}.campaign-info .campaign-preview .body-preview .chat.no-bottom-border{border-bottom-left-radius:0;border-bottom-right-radius:0}.campaign-info .campaign-preview__wa .header-preview{background:#065f54}.campaign-info .campaign-preview__wa .body-preview{border-bottom-left-radius:8px;border-bottom-right-radius:8px;background-image:url(
|
|
4978
|
+
template: "<form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"campaign-info\">\r\n <div class=\"campaign-info-child\">\r\n <mat-card>\r\n <mat-card-content>\r\n <h3 class=\"font-22px font-PoppinsBold mb-4\">General Information</h3>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Broadcast Name</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"campaignName\"\r\n placeholder=\"Enter Broadcast name\"\r\n />\r\n </mat-form-field>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center w-100\">\r\n <mat-hint align=\"start\">\r\n {{ form.get('campaignName').value?.length || 0 }}/100\r\n </mat-hint>\r\n\r\n <div>\r\n <mat-error\r\n align=\"end\"\r\n *ngFor=\"let validation of validationMessages.campaignName\"\r\n >\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('campaignName').touched &&\r\n form.get('campaignName').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Channel</mat-label>\r\n\r\n <mat-select placeholder=\"Select channel\" formControlName=\"medium\">\r\n <mat-option\r\n *ngFor=\"let option of channelOption\"\r\n [value]=\"option.value\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.medium\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('medium').touched &&\r\n form.get('medium').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'WA'\">\r\n <lib-general-information-wa\r\n [isTouchedForm]=\"isTouchedWAForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-wa>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'LINE'\">\r\n <lib-general-information-line\r\n [isTouchedForm]=\"isTouchedSMSForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-line>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'SMS'\">\r\n <lib-general-information-sms\r\n [isTouchedForm]=\"isTouchedSMSForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-sms>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'EMAIL'\">\r\n <lib-general-information-email\r\n [isTouchedForm]=\"isTouchedEmailForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-email>\r\n </ng-container>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <div class=\"campaign-info-child pl-20px\">\r\n <h3 class=\"font-22px font-PoppinsBold\">Broadcast Content</h3>\r\n\r\n <div\r\n [ngClass]=\"\r\n form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\r\n ? 'campaign-border-preview'\r\n : 'campaign-preview'\r\n \"\r\n >\r\n <section\r\n *ngIf=\"\r\n form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\r\n \"\r\n >\r\n <p\r\n *ngIf=\"getBody\"\r\n class=\"body my-2\"\r\n style=\"max-width: 500px; word-wrap: break-word\"\r\n [innerHTML]=\"getBody\"\r\n ></p>\r\n </section>\r\n\r\n <section *ngIf=\"form.get('medium').value === 'WA'\" class=\"campaign-preview__wa\">\r\n <div class=\"header-preview\">\r\n <div class=\"heading\">\r\n {{ getHeader }}\r\n </div>\r\n </div>\r\n <div class=\"body-preview\">\r\n <section *ngIf=\"getBody || getMedia || displayFile\">\r\n <div\r\n class=\"chat\"\r\n [ngClass]=\"{ 'no-bottom-border': getTemplate?.buttons?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"\r\n (getMedia === 'IMAGE' ||\r\n getTemplate?.header?.type?.toLowerCase() === 'image') &&\r\n displayFile\r\n \"\r\n style=\"max-width: 100%\"\r\n alt=\"image\"\r\n [src]=\"displayFile\"\r\n />\r\n\r\n <video\r\n *ngIf=\"\r\n (getMedia === 'VIDEO' ||\r\n getTemplate?.header?.type?.toLowerCase() === 'video') &&\r\n displayFile\r\n \"\r\n id=\"video\"\r\n style=\"width: 100%\"\r\n [src]=\"displayFile\"\r\n controls\r\n ></video>\r\n\r\n <div *ngIf=\"getMedia === 'DOCUMENT'\" style=\"display: flex\">\r\n <img\r\n style=\"width: 13px; height: 18px\"\r\n alt=\"document\"\r\n src=\"../../../../../assets/images/icon-file.png\"\r\n />\r\n\r\n <span style=\"margin-left: 10px\">Document</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getMedia === 'LOCATION'\">\r\n <agm-map\r\n style=\"width: 100%; height: 200px\"\r\n [disableDefaultUI]=\"true\"\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [zoom]=\"maps.zoom\"\r\n >\r\n <agm-marker\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [markerDraggable]=\"false\"\r\n ></agm-marker>\r\n </agm-map>\r\n <a\r\n [href]=\"\r\n 'https://www.google.com/maps/search/?api=1&query=' +\r\n maps.latitude +\r\n ',' +\r\n maps.longitude\r\n \"\r\n >\r\n https://www.google.com/maps/search/?api=1&query={{\r\n maps.latitude\r\n }},{{ maps.longitude }}\r\n </a>\r\n </ng-container>\r\n\r\n <p *ngIf=\"getBody\" class=\"body my-2\" [innerHTML]=\"getBody\"></p>\r\n\r\n <p\r\n *ngIf=\"getTemplate?.footer\"\r\n class=\"mb-2\"\r\n style=\"color: rgb(160, 160, 160)\"\r\n >\r\n {{ getTemplate.footer }}\r\n </p>\r\n </div>\r\n </section>\r\n <section *ngIf=\"getTemplate?.buttons?.length > 0\">\r\n <div\r\n *ngFor=\"let button of getTemplateButton\"\r\n class=\"params-btn pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text || button?.type }}\r\n </p>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"getTemplate?.buttons?.length > 3\"\r\n class=\"params-btn pb-0 pointer\"\r\n (click)=\"isShowMore = !isShowMore\"\r\n >\r\n <p class=\"mb-0\"><mat-icon>list</mat-icon> See all options</p>\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"form.get('medium').value === 'LINE'\" class=\"campaign-preview__line\">\r\n <div class=\"header-preview\">\r\n <div class=\"heading\">\r\n {{ getHeader }}\r\n </div>\r\n </div>\r\n <div class=\"body-preview\">\r\n <!-- Template Line Text -->\r\n <section *ngIf=\"isText || !isJSON\" class=\"chat\">\r\n <p class=\"body my-2\" [innerHTML]=\"getBody\"></p>\r\n </section>\r\n\r\n <!-- Template Line Button | Confirmation -->\r\n <section\r\n *ngIf=\"['buttons', 'confirm'].includes(getTemplateLine?.type)\"\r\n class=\"chat\"\r\n [ngClass]=\"{ 'no-bottom-border': getTemplateLine?.actions?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"getTemplateLine?.thumbnailImageUrl\"\r\n style=\"max-width: 100%\"\r\n class=\"mb-1\"\r\n [src]=\"getTemplateLine?.thumbnailImageUrl\"\r\n />\r\n\r\n <p\r\n *ngIf=\"getTemplateLine?.title\"\r\n class=\"font-PoppinsBold mb-1\"\r\n [innerHTML]=\"getTemplateLine?.title\"\r\n ></p>\r\n\r\n <p\r\n *ngIf=\"getTemplateLine?.text\"\r\n class=\"mb-0\"\r\n [innerHTML]=\"getTemplateLine?.text\"\r\n ></p>\r\n </section>\r\n\r\n <!-- Template Line Carousel -->\r\n <div\r\n *ngIf=\"['carousel'].includes(getTemplateLine?.type)\"\r\n class=\"d-flex gap-2 overflow-auto\"\r\n >\r\n <div *ngFor=\"let column of getTemplateLine?.columns\">\r\n <section\r\n class=\"chat w-100\"\r\n [ngClass]=\"{ 'no-bottom-border': column?.actions?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"column.thumbnailImageUrl\"\r\n style=\"max-width: 100%\"\r\n class=\"mb-1\"\r\n [src]=\"column.thumbnailImageUrl\"\r\n />\r\n\r\n <p\r\n *ngIf=\"column.title\"\r\n class=\"font-PoppinsBold mb-1\"\r\n [innerHTML]=\"column.title\"\r\n ></p>\r\n\r\n <p\r\n *ngIf=\"column.text\"\r\n class=\"mb-0\"\r\n [innerHTML]=\"column.text\"\r\n ></p>\r\n </section>\r\n <section *ngIf=\"column?.actions?.length > 0\">\r\n <div\r\n *ngFor=\"let button of column?.actions\"\r\n class=\"params-btn mw-100 pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <!-- Template Line Image Carousel -->\r\n <div\r\n *ngIf=\"['image_carousel'].includes(getTemplateLine?.type)\"\r\n class=\"d-flex gap-2 overflow-auto\"\r\n >\r\n <div *ngFor=\"let column of getTemplateLine?.columns\">\r\n <div class=\"image-container\">\r\n <img [src]=\"column.imageUrl\" alt=\"image\" />\r\n\r\n <div class=\"d-flex justify-content-center\">\r\n <p class=\"font-13px overlay-text\">\r\n {{ column.action.label }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Button Line -->\r\n <section\r\n *ngIf=\"\r\n getTemplateLine?.type !== 'confirm' &&\r\n getTemplateLine?.actions?.length > 0\r\n \"\r\n >\r\n <div\r\n *ngFor=\"let button of getTemplateLine?.actions\"\r\n class=\"params-btn pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n <section\r\n *ngIf=\"\r\n getTemplateLine?.type === 'confirm' &&\r\n getTemplateLine?.actions?.length > 0\r\n \"\r\n class=\"d-flex justify-content-around mw-70 bg-white\"\r\n >\r\n <div\r\n *ngFor=\"let button of getTemplateLine?.actions\"\r\n class=\"params-btn flex pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n <!-- ./ Button Line -->\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"d-flex\" style=\"flex-direction: column\">\r\n <span\r\n *ngIf=\"form.get('medium').value === 'SMS'\"\r\n style=\"text-align: right; width: 100%\"\r\n >\r\n {{ twilioResultCounter.fulltext }}\r\n </span>\r\n <span\r\n style=\"text-align: right; width: 100%; color: red\"\r\n *ngIf=\"twilioResultCounter.segments > 10 && form.get('medium').value === 'SMS'\"\r\n >\r\n Maximum Segment is 10\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #isSpinner>\r\n <div class=\"text-center my-auto\">\r\n <img src=\"../../../../../assets/images/spinner.svg\" />\r\n </div>\r\n</ng-template>\r\n",
|
|
4979
|
+
styles: [".campaign-info{display:flex}.campaign-info-child{flex:1}.campaign-info .asterix--after:after{content:\"*\";color:red}.campaign-info .pl-20px{padding-left:20px}.campaign-info .mw-70{max-width:70%}.campaign-info .campaign-preview{width:75%}.campaign-info .campaign-preview .header-preview{padding:15px;min-height:60px;border-radius:10px 10px 0 0}.campaign-info .campaign-preview .header-preview .heading{width:100%;color:#e0e0e0;margin-left:5px;font-size:20px}.campaign-info .campaign-preview .body-preview{padding:15px;min-height:470px}.campaign-info .campaign-preview .body-preview .chat{width:70%;padding:11px;font-size:14px;line-height:22px;color:#494949;border-radius:8px;background:#fff;overflow-wrap:break-word;white-space:pre-line;box-shadow:12px 12px 20px rgba(44,59,113,.04)}.campaign-info .campaign-preview .body-preview .chat .body{max-height:400px;overflow-y:auto;overscroll-behavior-y:contain}.campaign-info .campaign-preview .body-preview .chat.no-bottom-border{border-bottom-left-radius:0;border-bottom-right-radius:0}.campaign-info .campaign-preview__wa .header-preview{background:#065f54}.campaign-info .campaign-preview__wa .body-preview{border-bottom-left-radius:8px;border-bottom-right-radius:8px;background-image:url(../../../../../assets/svg/whatsapp-bg.svg);background-position:center;background-repeat:no-repeat;background-size:cover}.campaign-info .campaign-preview__wa .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__wa .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .header-preview{background:#273046}.campaign-info .campaign-preview__line .body-preview{background:#7692bf;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.campaign-info .campaign-preview__line .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__line .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .body-preview .image-container{position:relative;width:200px;height:200px}.campaign-info .campaign-preview__line .body-preview .image-container img{display:block;width:100%;height:100%}.campaign-info .campaign-preview__line .body-preview .image-container .overlay-text{top:170px;position:absolute;padding:2px 5px;color:#fff;background-color:rgba(49,57,60,.62);border-radius:10px}.campaign-info .campaign-border-preview{width:100%;min-height:100px;padding:32px;border:1px solid #e2e2e2;border-radius:8px}"]
|
|
4741
4980
|
})
|
|
4742
4981
|
], GeneralInformationComponent);
|
|
4743
4982
|
|
|
@@ -5068,7 +5307,7 @@ let SchedulerComponent = class SchedulerComponent {
|
|
|
5068
5307
|
}
|
|
5069
5308
|
initForm() {
|
|
5070
5309
|
this.form = new FormGroup({
|
|
5071
|
-
schedulerType: new FormControl(null, Validators.required),
|
|
5310
|
+
schedulerType: new FormControl(null, Validators$1.required),
|
|
5072
5311
|
startDate: new FormControl(null),
|
|
5073
5312
|
startTime: new FormControl(null),
|
|
5074
5313
|
isRepeat: new FormControl(false),
|
|
@@ -5123,9 +5362,9 @@ let SchedulerComponent = class SchedulerComponent {
|
|
|
5123
5362
|
this.form.get('isRepeat').setValue(false);
|
|
5124
5363
|
return;
|
|
5125
5364
|
}
|
|
5126
|
-
this.form.get('startDate').setValidators(Validators.required);
|
|
5365
|
+
this.form.get('startDate').setValidators(Validators$1.required);
|
|
5127
5366
|
this.form.get('startDate').updateValueAndValidity();
|
|
5128
|
-
this.form.get('startTime').setValidators(Validators.required);
|
|
5367
|
+
this.form.get('startTime').setValidators(Validators$1.required);
|
|
5129
5368
|
this.form.get('startTime').updateValueAndValidity();
|
|
5130
5369
|
this.initEdit(false);
|
|
5131
5370
|
}
|
|
@@ -5141,7 +5380,7 @@ let SchedulerComponent = class SchedulerComponent {
|
|
|
5141
5380
|
}
|
|
5142
5381
|
updateRepeat(isChecked) {
|
|
5143
5382
|
if (isChecked) {
|
|
5144
|
-
this.form.get('delivery').setValidators(Validators.required);
|
|
5383
|
+
this.form.get('delivery').setValidators(Validators$1.required);
|
|
5145
5384
|
this.form.get('delivery').updateValueAndValidity();
|
|
5146
5385
|
return;
|
|
5147
5386
|
}
|
|
@@ -5261,6 +5500,7 @@ CampaignManagementModule = __decorate([
|
|
|
5261
5500
|
MatSlideToggleModule,
|
|
5262
5501
|
DragDropModule,
|
|
5263
5502
|
CampaignIndexModule,
|
|
5503
|
+
InputNumericModule,
|
|
5264
5504
|
],
|
|
5265
5505
|
exports: [CampaignManagementComponent, SummaryComponent],
|
|
5266
5506
|
entryComponents: [PendingApprovalDialogViewComponent],
|
|
@@ -5308,5 +5548,5 @@ ConfirmationModule = __decorate([
|
|
|
5308
5548
|
* Generated bundle index. Do not edit.
|
|
5309
5549
|
*/
|
|
5310
5550
|
|
|
5311
|
-
export { AdlCampaignManagementLibraryInternalComponent, AdlCampaignManagementLibraryInternalModule,
|
|
5551
|
+
export { AdlCampaignManagementLibraryInternalComponent, AdlCampaignManagementLibraryInternalModule, CampaignIndexModule, CampaignManagementComponent, CampaignManagementModule, ConfirmationComponent, ConfirmationModule, DashboardModule, SearchModule, WizardComponent as ɵa, NewCampaignComponent as ɵb, GeneralInformationComponent as ɵc, SchedulerComponent as ɵd, SummaryComponent as ɵe, NewNumberBasesComponent as ɵf, GeneralInformationLineComponent as ɵg, GeneralInformationWAComponent as ɵh, GeneralInformationSMSComponent as ɵi, GeneralInformationEmailComponent as ɵj, PendingApprovalDialogViewComponent as ɵk, FailoverMechanismComponent as ɵl, DashboardComponent as ɵm, ApiAdapterServiceService as ɵn, SearchComponent as ɵo, ViewingListOfCampaignTableComponent as ɵp, FilterInListOfCampaignComponent as ɵq, CampaignIndexComponent as ɵr, ApiAdapterServiceService as ɵs, MatSelectInfiniteScrollDirective as ɵt, InputNumericModule as ɵu, InputNumericComponent as ɵv, CustomPaginator as ɵw, ConfirmationComponent as ɵx, ConfirmationModel as ɵy, SharedServicesService as ɵz };
|
|
5312
5552
|
//# sourceMappingURL=adlfe-campaign-management-library.js.map
|