@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.
Files changed (56) hide show
  1. package/adlfe-campaign-management-library.d.ts +14 -9
  2. package/adlfe-campaign-management-library.metadata.json +1 -1
  3. package/bundles/adlfe-campaign-management-library.umd.js +372 -109
  4. package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
  5. package/bundles/adlfe-campaign-management-library.umd.min.js +1 -1
  6. package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
  7. package/esm2015/adlfe-campaign-management-library.js +15 -10
  8. package/esm2015/environments/environment.js +3 -3
  9. package/esm2015/lib/campaign-management/campaign-management.module.js +4 -2
  10. package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.component.js +113 -0
  11. package/esm2015/lib/campaign-management/components/input-numeric/input-numeric.module.js +18 -0
  12. package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +12 -2
  13. package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
  14. package/esm2015/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +45 -43
  15. package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +64 -5
  16. package/esm2015/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
  17. package/esm2015/lib/campaign-management/modules/new-campaign/new-campaign.component.js +45 -41
  18. package/esm2015/lib/campaign-management/validators/index.js +12 -0
  19. package/esm2015/lib/campaign-management/validators/max.validator.js +14 -0
  20. package/esm2015/lib/campaign-management/validators/min.validator.js +14 -0
  21. package/esm2015/lib/campaign-management/validators/required.validator.js +10 -0
  22. package/esm2015/lib/core/const/constants.const.js +6 -6
  23. package/esm2015/lib/core/const/validation-message.const.js +5 -2
  24. package/esm2015/public-api.js +1 -6
  25. package/esm5/adlfe-campaign-management-library.js +15 -10
  26. package/esm5/environments/environment.js +3 -3
  27. package/esm5/lib/campaign-management/campaign-management.module.js +4 -2
  28. package/esm5/lib/campaign-management/components/input-numeric/input-numeric.component.js +127 -0
  29. package/esm5/lib/campaign-management/components/input-numeric/input-numeric.module.js +21 -0
  30. package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +12 -2
  31. package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
  32. package/esm5/lib/campaign-management/modules/campaign-index/dialog/pending-approval-dialog-view/pending-approval-dialog-view.component.js +44 -40
  33. package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +68 -5
  34. package/esm5/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +3 -3
  35. package/esm5/lib/campaign-management/modules/new-campaign/new-campaign.component.js +45 -41
  36. package/esm5/lib/campaign-management/validators/index.js +12 -0
  37. package/esm5/lib/campaign-management/validators/max.validator.js +14 -0
  38. package/esm5/lib/campaign-management/validators/min.validator.js +14 -0
  39. package/esm5/lib/campaign-management/validators/required.validator.js +10 -0
  40. package/esm5/lib/core/const/constants.const.js +6 -6
  41. package/esm5/lib/core/const/validation-message.const.js +5 -2
  42. package/esm5/public-api.js +1 -6
  43. package/fesm2015/adlfe-campaign-management-library.js +419 -179
  44. package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
  45. package/fesm5/adlfe-campaign-management-library.js +439 -176
  46. package/fesm5/adlfe-campaign-management-library.js.map +1 -1
  47. package/lib/campaign-management/components/input-numeric/input-numeric.component.d.ts +30 -0
  48. package/lib/campaign-management/components/input-numeric/input-numeric.module.d.ts +2 -0
  49. package/lib/campaign-management/models/general-information-wa-req.model.d.ts +3 -0
  50. package/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.d.ts +7 -0
  51. package/lib/campaign-management/validators/index.d.ts +8 -0
  52. package/lib/campaign-management/validators/max.validator.d.ts +2 -0
  53. package/lib/campaign-management/validators/min.validator.d.ts +2 -0
  54. package/lib/campaign-management/validators/required.validator.d.ts +2 -0
  55. package/package.json +1 -1
  56. 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://api-staging.neuapix.com';
767
+ API_CONST = 'https://apibsp-dev.adlsandbox.net';
649
768
  }
650
769
  // 5. Default (Localhost atau lainnya)
651
770
  else {
652
- API_CONST = 'https://api-staging.neuapix.com';
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: [{ type: 'required', message: 'Text is required' }],
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
- : (_e = (_d = resp.data) === null || _d === void 0 ? void 0 : _d.type) === null || _e === void 0 ? void 0 : _e.toUpperCase(),
1634
- media: (_g = (_f = resp.data) === null || _f === void 0 ? void 0 : _f.type) === null || _g === void 0 ? void 0 : _g.toUpperCase(),
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: (_h = resp.data) === null || _h === void 0 ? void 0 : _h.accountId,
1637
- name: (_j = resp.data) === null || _j === void 0 ? void 0 : _j.accountName,
1638
- platform: (_k = resp.data) === null || _k === void 0 ? void 0 : _k.platform,
1639
- clientId: (_l = resp.data) === null || _l === void 0 ? void 0 : _l.clientId,
1640
- clientName: (_m = resp.data) === null || _m === void 0 ? void 0 : _m.clientName,
1641
- accountNo: (_o = resp.data) === null || _o === void 0 ? void 0 : _o.accountNo,
1642
- wabaId: (_q = (_p = resp.data) === null || _p === void 0 ? void 0 : _p.wabaId, (_q !== null && _q !== void 0 ? _q : '')),
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: (_s = (_r = resp.data) === null || _r === void 0 ? void 0 : _r.details) === null || _s === void 0 ? void 0 : _s.text,
1645
- targetURL: (_4 = (_0 = (_w = (_v = (_u = (_t = resp.data) === null || _t === void 0 ? void 0 : _t.details) === null || _u === void 0 ? void 0 : _u.image) === null || _v === void 0 ? void 0 : _v.url, (_w !== null && _w !== void 0 ? _w : (_z = (_y = (_x = resp.data) === null || _x === void 0 ? void 0 : _x.details) === null || _y === void 0 ? void 0 : _y.document) === null || _z === void 0 ? void 0 : _z.url)), (_0 !== null && _0 !== void 0 ? _0 : (_3 = (_2 = (_1 = resp.data) === null || _1 === void 0 ? void 0 : _1.details) === null || _2 === void 0 ? void 0 : _2.video) === null || _3 === void 0 ? void 0 : _3.url)), (_4 !== null && _4 !== void 0 ? _4 : (_7 = (_6 = (_5 = resp.data) === null || _5 === void 0 ? void 0 : _5.details) === null || _6 === void 0 ? void 0 : _6.template) === null || _7 === void 0 ? void 0 : _7.headerURL)),
1646
- paramHeader: (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.template) === null || _10 === void 0 ? void 0 : _10.header,
1647
- paramBody: (_13 = (_12 = (_11 = resp.data) === null || _11 === void 0 ? void 0 : _11.details) === null || _12 === void 0 ? void 0 : _12.template) === null || _13 === void 0 ? void 0 : _13.data,
1648
- paramButton: (_16 = (_15 = (_14 = resp.data) === null || _14 === void 0 ? void 0 : _14.details) === null || _15 === void 0 ? void 0 : _15.template) === null || _16 === void 0 ? void 0 : _16.button,
1649
- otpValue: (_21 = [
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: (_24 = (_23 = (_22 = resp.data) === null || _22 === void 0 ? void 0 : _22.details) === null || _23 === void 0 ? void 0 : _23.template) === null || _24 === void 0 ? void 0 : _24.id,
1654
- name: (_27 = (_26 = (_25 = resp.data) === null || _25 === void 0 ? void 0 : _25.details) === null || _26 === void 0 ? void 0 : _26.template) === null || _27 === void 0 ? void 0 : _27.name,
1655
- lang: (_30 = (_29 = (_28 = resp.data) === null || _28 === void 0 ? void 0 : _28.details) === null || _29 === void 0 ? void 0 : _29.template) === null || _30 === void 0 ? void 0 : _30.lang,
1656
- platform: (_31 = resp.data) === null || _31 === void 0 ? void 0 : _31.platform,
1657
- headerURL: (_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.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: (_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.header,
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: (_40 = (_39 = (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.details) === null || _39 === void 0 ? void 0 : _39.template) === null || _40 === void 0 ? void 0 : _40.data,
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: (_43 = (_42 = (_41 = resp.data) === null || _41 === void 0 ? void 0 : _41.details) === null || _42 === void 0 ? void 0 : _42.template) === null || _43 === void 0 ? void 0 : _43.button,
1665
- ClientId: (_44 = resp.data) === null || _44 === void 0 ? void 0 : _44.clientId,
1666
- ClientName: (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.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: ((_46 = resp.data) === null || _46 === void 0 ? void 0 : _46.fileId) !== '',
1669
- fileId: (_47 = resp.data) === null || _47 === void 0 ? void 0 : _47.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: (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.id,
1797
+ id: (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.id,
1674
1798
  form: generalInformation,
1675
1799
  },
1676
- failover: (_49 = resp.data) === null || _49 === void 0 ? void 0 : _49.failover,
1677
- targetAudience: (_50 = resp.data) === null || _50 === void 0 ? void 0 : _50.targets,
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: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.fileName,
1680
- targetURL: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.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: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.scheduleType) === 'MULTI'
1807
+ schedulerType: ((_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.scheduleType) === 'MULTI'
1684
1808
  ? 'ONE_TIME'
1685
- : (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.scheduleType,
1686
- startDate: (_56 = (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.startTime) === null || _56 === void 0 ? void 0 : _56.split(' ')[0],
1687
- startTime: (_58 = (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.startTime) === null || _58 === void 0 ? void 0 : _58.split(' ')[1],
1688
- isRepeat: ((_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.scheduleType) === 'MULTI',
1689
- delivery: (_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.repeat,
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
- : (_e = (_d = resp.data) === null || _d === void 0 ? void 0 : _d.type) === null || _e === void 0 ? void 0 : _e.toUpperCase(),
2450
- media: (_g = (_f = resp.data) === null || _f === void 0 ? void 0 : _f.type) === null || _g === void 0 ? void 0 : _g.toUpperCase(),
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: (_h = resp.data) === null || _h === void 0 ? void 0 : _h.accountId,
2453
- name: (_j = resp.data) === null || _j === void 0 ? void 0 : _j.accountName,
2454
- platform: (_k = resp.data) === null || _k === void 0 ? void 0 : _k.platform,
2455
- clientId: (_l = resp.data) === null || _l === void 0 ? void 0 : _l.clientId,
2456
- clientName: (_m = resp.data) === null || _m === void 0 ? void 0 : _m.clientName,
2457
- accountNo: (_o = resp.data) === null || _o === void 0 ? void 0 : _o.accountNo,
2458
- wabaId: (_q = (_p = resp.data) === null || _p === void 0 ? void 0 : _p.wabaId, (_q !== null && _q !== void 0 ? _q : '')),
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: (_s = (_r = resp.data) === null || _r === void 0 ? void 0 : _r.details) === null || _s === void 0 ? void 0 : _s.text,
2461
- targetURL: (_4 = (_0 = (_w = (_v = (_u = (_t = resp.data) === null || _t === void 0 ? void 0 : _t.details) === null || _u === void 0 ? void 0 : _u.image) === null || _v === void 0 ? void 0 : _v.url, (_w !== null && _w !== void 0 ? _w : (_z = (_y = (_x = resp.data) === null || _x === void 0 ? void 0 : _x.details) === null || _y === void 0 ? void 0 : _y.document) === null || _z === void 0 ? void 0 : _z.url)), (_0 !== null && _0 !== void 0 ? _0 : (_3 = (_2 = (_1 = resp.data) === null || _1 === void 0 ? void 0 : _1.details) === null || _2 === void 0 ? void 0 : _2.video) === null || _3 === void 0 ? void 0 : _3.url)), (_4 !== null && _4 !== void 0 ? _4 : (_7 = (_6 = (_5 = resp.data) === null || _5 === void 0 ? void 0 : _5.details) === null || _6 === void 0 ? void 0 : _6.template) === null || _7 === void 0 ? void 0 : _7.headerURL)),
2462
- paramHeader: (_10 = (_9 = (_8 = resp.data) === null || _8 === void 0 ? void 0 : _8.details) === null || _9 === void 0 ? void 0 : _9.template) === null || _10 === void 0 ? void 0 : _10.header,
2463
- paramBody: (_13 = (_12 = (_11 = resp.data) === null || _11 === void 0 ? void 0 : _11.details) === null || _12 === void 0 ? void 0 : _12.template) === null || _13 === void 0 ? void 0 : _13.data,
2464
- paramButton: (_16 = (_15 = (_14 = resp.data) === null || _14 === void 0 ? void 0 : _14.details) === null || _15 === void 0 ? void 0 : _15.template) === null || _16 === void 0 ? void 0 : _16.button,
2465
- otpValue: (_21 = [...(_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 : []))]) === null || _21 === void 0 ? void 0 : _21.pop(),
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: (_24 = (_23 = (_22 = resp.data) === null || _22 === void 0 ? void 0 : _22.details) === null || _23 === void 0 ? void 0 : _23.template) === null || _24 === void 0 ? void 0 : _24.id,
2468
- name: (_27 = (_26 = (_25 = resp.data) === null || _25 === void 0 ? void 0 : _25.details) === null || _26 === void 0 ? void 0 : _26.template) === null || _27 === void 0 ? void 0 : _27.name,
2469
- lang: (_30 = (_29 = (_28 = resp.data) === null || _28 === void 0 ? void 0 : _28.details) === null || _29 === void 0 ? void 0 : _29.template) === null || _30 === void 0 ? void 0 : _30.lang,
2470
- platform: (_31 = resp.data) === null || _31 === void 0 ? void 0 : _31.platform,
2471
- headerURL: (_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.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: (_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.header,
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: (_40 = (_39 = (_38 = resp.data) === null || _38 === void 0 ? void 0 : _38.details) === null || _39 === void 0 ? void 0 : _39.template) === null || _40 === void 0 ? void 0 : _40.data,
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: (_43 = (_42 = (_41 = resp.data) === null || _41 === void 0 ? void 0 : _41.details) === null || _42 === void 0 ? void 0 : _42.template) === null || _43 === void 0 ? void 0 : _43.button,
2479
- ClientId: (_44 = resp.data) === null || _44 === void 0 ? void 0 : _44.clientId,
2480
- ClientName: (_45 = resp.data) === null || _45 === void 0 ? void 0 : _45.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: ((_46 = resp.data) === null || _46 === void 0 ? void 0 : _46.fileId) !== '',
2483
- fileId: (_47 = resp.data) === null || _47 === void 0 ? void 0 : _47.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: (_48 = resp.data) === null || _48 === void 0 ? void 0 : _48.id,
2625
+ id: (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.id,
2488
2626
  form: generalInformation,
2489
2627
  },
2490
- failover: (_49 = resp.data) === null || _49 === void 0 ? void 0 : _49.failover,
2491
- targetAudience: (_50 = resp.data) === null || _50 === void 0 ? void 0 : _50.targets,
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: (_51 = resp.data) === null || _51 === void 0 ? void 0 : _51.fileName,
2494
- targetURL: (_52 = resp.data) === null || _52 === void 0 ? void 0 : _52.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: ((_53 = resp.data) === null || _53 === void 0 ? void 0 : _53.scheduleType) === 'MULTI'
2635
+ schedulerType: ((_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.scheduleType) === 'MULTI'
2498
2636
  ? 'ONE_TIME'
2499
- : (_54 = resp.data) === null || _54 === void 0 ? void 0 : _54.scheduleType,
2500
- startDate: (_56 = (_55 = resp.data) === null || _55 === void 0 ? void 0 : _55.startTime) === null || _56 === void 0 ? void 0 : _56.split(' ')[0],
2501
- startTime: (_58 = (_57 = resp.data) === null || _57 === void 0 ? void 0 : _57.startTime) === null || _58 === void 0 ? void 0 : _58.split(' ')[1],
2502
- isRepeat: ((_59 = resp.data) === null || _59 === void 0 ? void 0 : _59.scheduleType) === 'MULTI',
2503
- delivery: (_60 = resp.data) === null || _60 === void 0 ? void 0 : _60.repeat,
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 = ((_61 = resp.data) === null || _61 === void 0 ? void 0 : _61.platform) === 'LINE';
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, (_0 = this.form.get('template').value) === null || _0 === void 0 ? void 0 : _0.name);
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(../../../../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}"]
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, CampaignIndexComponent, CampaignIndexModule, CampaignManagementComponent, CampaignManagementModule, ConfirmationComponent, ConfirmationModule, DashboardComponent, DashboardModule, MatSelectInfiniteScrollDirective, SearchComponent, SearchModule, SummaryComponent, 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, ApiAdapterServiceService as ɵm, ViewingListOfCampaignTableComponent as ɵn, FilterInListOfCampaignComponent as ɵo, ApiAdapterServiceService as ɵp, MatSelectInfiniteScrollDirective as ɵq, CustomPaginator as ɵr, ConfirmationComponent as ɵs, ConfirmationModel as ɵt, SharedServicesService as ɵu };
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