@memberjunction/ng-entity-communications 3.4.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,17 +1,34 @@
1
1
  # @memberjunction/ng-entity-communications
2
2
 
3
- This Angular component package provides a user interface for selecting message templates, previewing communications, and sending messages to entity recipients within the MemberJunction framework. It enables users to preview how templates will look when applied to real data before sending communications.
4
-
5
- ## Features
6
-
7
- - **Template Selection**: Browse and select from available active message templates
8
- - **Message Preview**: Preview messages with actual entity data before sending
9
- - **Multi-recipient Support**: Preview communications for multiple recipients with navigation controls
10
- - **Dialog Integration**: Includes a dialog wrapper component for easy modal integration
11
- - **Navigation Controls**: VCR-style controls to browse through multiple preview messages
12
- - **Template Filtering**: Filter templates based on SQL expressions
13
- - **Real-time Template Processing**: Integrates with MemberJunction's template engine for dynamic content
14
- - **Provider Integration**: Works with communication providers like SendGrid
3
+ Angular components for selecting message templates, previewing communications with live entity data, and sending messages to recipients within the MemberJunction framework.
4
+
5
+ ## Overview
6
+
7
+ The `@memberjunction/ng-entity-communications` package provides a two-step communication workflow: first, users browse and select from available message templates; then they preview how those templates render against actual entity data before sending. The package includes both an inline preview component and a dialog wrapper for modal presentation.
8
+
9
+ ```mermaid
10
+ flowchart TD
11
+ subgraph Phase1["Template Selection"]
12
+ TS[Browse Active Templates] --> TF[Apply Template Filter]
13
+ TF --> TC[User Selects Template]
14
+ end
15
+
16
+ subgraph Phase2["Preview & Send"]
17
+ TC --> PG[Generate Previews]
18
+ PG --> NAV[Navigate Messages]
19
+ NAV --> SEND[Confirm / Cancel]
20
+ end
21
+
22
+ subgraph Integration["MJ Integration"]
23
+ ECC[EntityCommunicationsEngineClient] --> PG
24
+ RV[RunView - Entity Data] --> PG
25
+ TE[Template Engine] --> PG
26
+ end
27
+
28
+ style Phase1 fill:#2d6a9f,stroke:#1a4971,color:#fff
29
+ style Phase2 fill:#7c5295,stroke:#563a6b,color:#fff
30
+ style Integration fill:#2d8659,stroke:#1a5c3a,color:#fff
31
+ ```
15
32
 
16
33
  ## Installation
17
34
 
@@ -27,46 +44,37 @@ npm install @memberjunction/ng-entity-communications
27
44
  import { EntityCommunicationsModule } from '@memberjunction/ng-entity-communications';
28
45
 
29
46
  @NgModule({
30
- imports: [
31
- EntityCommunicationsModule,
32
- // other imports
33
- ],
34
- // ...
47
+ imports: [EntityCommunicationsModule]
35
48
  })
36
49
  export class YourModule { }
37
50
  ```
38
51
 
39
- ### Basic Component Usage
52
+ ### Inline Preview Component
40
53
 
41
54
  ```html
42
- <!-- Use the preview component directly -->
43
55
  <mj-entity-communications-preview
44
56
  [entityInfo]="entityInfo"
45
57
  [runViewParams]="runViewParams"
46
- [templateFilter]="'TemplateType = ''Email''' "
58
+ [templateFilter]="'TemplateType = ''Email'''"
47
59
  (templateSelected)="onTemplateSelected($event)">
48
60
  </mj-entity-communications-preview>
49
61
  ```
50
62
 
51
- ### Dialog Component Usage
63
+ ### Dialog Component
52
64
 
53
65
  ```html
54
- <!-- Use the preview in a dialog window -->
55
- <button kendoButton (click)="showPreviewDialog()">
56
- Preview Communications
57
- </button>
58
-
59
- <mj-entity-communications-preview-window
60
- *ngIf="previewDialogVisible"
61
- [entityInfo]="entityInfo"
62
- [runViewParams]="runViewParams"
63
- [DialogVisible]="previewDialogVisible"
64
- [Title]="'Email Preview'"
65
- (DialogClosed)="onPreviewDialogClosed($event)">
66
- </mj-entity-communications-preview-window>
66
+ @if (showPreview) {
67
+ <mj-entity-communications-preview-window
68
+ [entityInfo]="customerEntityInfo"
69
+ [runViewParams]="customerViewParams"
70
+ [DialogVisible]="showPreview"
71
+ [Title]="'Customer Email Preview'"
72
+ (DialogClosed)="onPreviewClosed($event)">
73
+ </mj-entity-communications-preview-window>
74
+ }
67
75
  ```
68
76
 
69
- ### TypeScript Component Example
77
+ ### Complete Example
70
78
 
71
79
  ```typescript
72
80
  import { Component } from '@angular/core';
@@ -76,184 +84,130 @@ import { TemplateEntityExtended } from '@memberjunction/templates-base-types';
76
84
  @Component({
77
85
  selector: 'app-customer-communication',
78
86
  template: `
79
- <button kendoButton (click)="previewCustomerEmails()">
80
- Preview Customer Emails
81
- </button>
82
-
83
- <mj-entity-communications-preview-window
84
- *ngIf="showPreview"
85
- [entityInfo]="customerEntityInfo"
86
- [runViewParams]="customerViewParams"
87
- [DialogVisible]="showPreview"
88
- [Title]="'Customer Email Preview'"
89
- (DialogClosed)="onPreviewClosed($event)">
90
- </mj-entity-communications-preview-window>
87
+ <button (click)="showPreview = true">Preview Customer Emails</button>
88
+
89
+ @if (showPreview) {
90
+ <mj-entity-communications-preview-window
91
+ [entityInfo]="customerEntityInfo"
92
+ [runViewParams]="customerViewParams"
93
+ [DialogVisible]="showPreview"
94
+ [Title]="'Customer Email Preview'"
95
+ (DialogClosed)="onPreviewClosed($event)">
96
+ </mj-entity-communications-preview-window>
97
+ }
91
98
  `
92
99
  })
93
100
  export class CustomerCommunicationComponent {
94
101
  showPreview = false;
95
102
  customerEntityInfo: EntityInfo;
96
103
  customerViewParams: RunViewParams;
97
-
104
+
98
105
  constructor() {
99
- // Initialize metadata and entity info
100
106
  const md = new Metadata();
101
107
  this.customerEntityInfo = md.Entities.find(e => e.Name === 'Customers')!;
102
-
103
- // Set up view parameters to get active customers who haven't been contacted recently
104
108
  this.customerViewParams = {
105
109
  EntityName: 'Customers',
106
- ExtraFilter: 'IsActive = 1 AND LastContactDate < DATEADD(month, -3, GETDATE())',
110
+ ExtraFilter: 'IsActive = 1',
107
111
  OrderBy: 'LastContactDate ASC',
108
112
  ResultType: 'entity_object'
109
113
  };
110
114
  }
111
-
112
- previewCustomerEmails() {
113
- this.showPreview = true;
114
- }
115
-
115
+
116
116
  onPreviewClosed(confirmed: boolean) {
117
117
  this.showPreview = false;
118
-
119
118
  if (confirmed) {
120
- // User confirmed - you could initiate the actual sending here
121
119
  console.log('User confirmed sending emails');
122
120
  }
123
121
  }
124
-
125
- onTemplateSelected(template: TemplateEntityExtended) {
126
- console.log('Selected template:', template.Name);
127
- }
128
122
  }
129
123
  ```
130
124
 
131
125
  ## API Reference
132
126
 
133
- ### EntityCommunicationsPreviewComponent
127
+ ### EntityCommunicationsPreviewComponent (`mj-entity-communications-preview`)
134
128
 
135
- This is the main component for displaying the template selection and preview interface.
129
+ Main component for template selection and message preview.
136
130
 
137
131
  #### Inputs
138
132
 
139
- - `entityInfo`: EntityInfo - Information about the entity for which communications will be sent
140
- - `runViewParams`: RunViewParams - Parameters for running a view to retrieve entity data
141
- - `templateFilter`: string - SQL filter expression to filter available templates
133
+ | Input | Type | Description |
134
+ |-------|------|-------------|
135
+ | `entityInfo` | `EntityInfo` | Entity metadata for the communication recipients |
136
+ | `runViewParams` | `RunViewParams` | Parameters for loading entity data |
137
+ | `templateFilter` | `string` | SQL filter expression for available templates |
142
138
 
143
139
  #### Outputs
144
140
 
145
- - `templateSelected`: EventEmitter<TemplateEntityExtended> - Emitted when a template is selected
141
+ | Output | Type | Description |
142
+ |--------|------|-------------|
143
+ | `templateSelected` | `EventEmitter<TemplateEntityExtended>` | Emitted when a template is selected |
146
144
 
147
- ### EntityCommunicationsPreviewWindowComponent
145
+ ### EntityCommunicationsPreviewWindowComponent (`mj-entity-communications-preview-window`)
148
146
 
149
- This component wraps the preview component in a Kendo dialog window.
147
+ Dialog wrapper around the preview component.
150
148
 
151
149
  #### Inputs
152
150
 
153
- - `DialogVisible`: boolean - Controls the visibility of the dialog
154
- - `Title`: string - Title of the dialog window (default: 'Communications Preview')
155
- - `Width`: number - Width of the dialog (default: 650)
156
- - `Height`: number - Height of the dialog (default: 600)
157
- - `MinWidth`: number - Minimum width of the dialog (default: 400)
158
- - `MinHeight`: number - Minimum height of the dialog (default: 350)
159
- - `Resizable`: boolean - Whether the dialog is resizable (default: true)
160
- - `entityInfo`: EntityInfo - Information about the entity
161
- - `runViewParams`: RunViewParams - Parameters for running a view
151
+ | Input | Type | Default | Description |
152
+ |-------|------|---------|-------------|
153
+ | `DialogVisible` | `boolean` | - | Controls dialog visibility |
154
+ | `Title` | `string` | `'Communications Preview'` | Dialog title |
155
+ | `Width` | `number` | `650` | Dialog width in pixels |
156
+ | `Height` | `number` | `600` | Dialog height in pixels |
157
+ | `MinWidth` | `number` | `400` | Minimum dialog width |
158
+ | `MinHeight` | `number` | `350` | Minimum dialog height |
159
+ | `Resizable` | `boolean` | `true` | Whether the dialog can be resized |
160
+ | `entityInfo` | `EntityInfo` | - | Entity metadata |
161
+ | `runViewParams` | `RunViewParams` | - | View parameters for data loading |
162
162
 
163
163
  #### Outputs
164
164
 
165
- - `DialogClosed`: EventEmitter<boolean> - Emitted when the dialog is closed (true if confirmed, false if canceled)
166
-
167
- ## Component Features
168
-
169
- ### Template Loading
170
- - Templates are loaded with their content from the database
171
- - Only active templates are shown (based on `IsActive` flag and `ActiveAt` date)
172
- - Additional filtering can be applied via the `templateFilter` input
173
- - Template content entities are loaded and associated with each template
174
-
175
- ### Message Preview Generation
176
- - Uses the EntityCommunicationsEngineClient to generate previews
177
- - Integrates with communication providers (e.g., SendGrid)
178
- - Processes templates against entity data to show real previews
179
- - Supports both HTML body and subject line templates
180
- - Runs in preview-only mode without actually sending messages
181
-
182
- ### Navigation Controls
183
- - VCR-style navigation buttons (first, previous, next, last)
184
- - Current position indicator showing "X of Y" messages
185
- - Buttons are automatically disabled at boundaries
186
- - Font Awesome icons for navigation buttons
165
+ | Output | Type | Description |
166
+ |--------|------|-------------|
167
+ | `DialogClosed` | `EventEmitter<boolean>` | `true` if confirmed, `false` if canceled |
187
168
 
188
169
  ## Process Flow
189
170
 
190
- 1. **Template Selection Phase**:
191
- - Component loads all active templates filtered by the `templateFilter` expression
192
- - User sees a list of available templates
193
- - Clicking a template moves to the preview phase
194
-
195
- 2. **Preview Generation Phase**:
196
- - Selected template is processed against the entity data from `runViewParams`
197
- - EntityCommunicationsEngineClient generates preview messages for each record
198
- - Loading indicator shows during processing
199
-
200
- 3. **Preview Navigation Phase**:
201
- - User can navigate through all generated preview messages
202
- - Each preview shows the processed subject and HTML body
203
- - Back button returns to template selection
171
+ 1. **Template Selection** -- Component loads active templates filtered by the `templateFilter` expression. User browses and selects a template.
172
+ 2. **Preview Generation** -- The selected template is processed against entity data from `runViewParams` using `EntityCommunicationsEngineClient`. A loading indicator shows during processing.
173
+ 3. **Preview Navigation** -- VCR-style controls (first, previous, next, last) let the user browse through all generated preview messages, viewing processed subject lines and HTML bodies.
174
+ 4. **Confirmation** (dialog mode) -- OK/Cancel buttons control the dialog, with `DialogClosed` emitting the user's choice.
204
175
 
205
- 4. **Dialog Interaction** (when using window component):
206
- - OK/Cancel buttons control the dialog
207
- - DialogClosed event indicates user's choice
208
-
209
- ## Styling
176
+ ## Dependencies
210
177
 
211
- The component includes CSS styling with the following key classes:
212
- - `.step-1`: Template selection view styling
213
- - `.step-2`: Preview display view styling
214
- - `.vcr-controls`: Navigation button container
215
- - `.template-preview`: Preview content container
216
- - `.subject-line`: Email subject preview styling
217
- - `.preview-body`: Email body preview styling
178
+ ### Runtime Dependencies
179
+
180
+ | Package | Description |
181
+ |---------|-------------|
182
+ | `@memberjunction/core` | Metadata, entity framework, view execution |
183
+ | `@memberjunction/core-entities` | Entity type definitions |
184
+ | `@memberjunction/global` | Global utilities and event system |
185
+ | `@memberjunction/communication-types` | Message types and communication engine interfaces |
186
+ | `@memberjunction/entity-communications-base` | EntityCommunicationParams interface |
187
+ | `@memberjunction/entity-communications-client` | Client-side communication processing engine |
188
+ | `@memberjunction/templates-base-types` | Template engine and extended template types |
189
+ | `@memberjunction/ng-container-directives` | Container directive utilities |
190
+ | `@memberjunction/ng-shared` | Shared Angular utilities |
191
+ | `@memberjunction/ng-shared-generic` | Shared generic components |
192
+
193
+ ### Peer Dependencies
194
+
195
+ - `@angular/common` ^21.x
196
+ - `@angular/core` ^21.x
197
+ - `@angular/forms` ^21.x
198
+ - `@angular/router` ^21.x
199
+ - `@progress/kendo-angular-buttons` ^22.x
200
+ - `@progress/kendo-angular-dialog` ^22.x
201
+ - `@progress/kendo-angular-listbox` ^22.x
202
+ - `@progress/kendo-angular-indicators` ^22.x
203
+
204
+ ## Build
218
205
 
219
- These styles can be customized or overridden in your application.
206
+ ```bash
207
+ cd packages/Angular/Generic/entity-communication
208
+ npm run build
209
+ ```
220
210
 
221
- ## Dependencies
211
+ ## License
222
212
 
223
- ### Core Dependencies
224
- - `@memberjunction/core`: Metadata, entity framework, and view execution
225
- - `@memberjunction/core-entities`: Entity type definitions including TemplateContentEntity
226
- - `@memberjunction/global`: Global utilities and event system
227
- - `@memberjunction/communication-types`: Message types, communication engines, and providers
228
- - `@memberjunction/entity-communications-base`: EntityCommunicationParams interface
229
- - `@memberjunction/entity-communications-client`: Client-side communication processing engine
230
- - `@memberjunction/templates-base-types`: Template engine and extended template types
231
- - `@memberjunction/ng-container-directives`: Container directive utilities
232
- - `@memberjunction/ng-shared`: Shared Angular utilities
233
-
234
- ### Angular Dependencies
235
- - `@angular/common`: Angular common module (v18.0.2)
236
- - `@angular/core`: Angular core framework (v18.0.2)
237
- - `@angular/forms`: Form support (v18.0.2)
238
- - `@angular/router`: Routing support (v18.0.2)
239
-
240
- ### Kendo UI Dependencies
241
- - `@progress/kendo-angular-buttons`: Button components (v16.2.0)
242
- - `@progress/kendo-angular-dialog`: Dialog/window components (v16.2.0)
243
- - `@progress/kendo-angular-listbox`: Listbox component (v16.2.0)
244
- - `@progress/kendo-angular-indicators`: Loading indicators (v16.2.0)
245
-
246
- ## Important Notes
247
-
248
- ### Current Limitations
249
- - The component currently hardcodes the SendGrid provider and Email message type
250
- - Subject template is hardcoded to 'Test Subject Template'
251
- - From address is hardcoded in the preview generation
252
-
253
- ### Future Enhancements
254
- Consider making the following configurable:
255
- - Communication provider selection
256
- - Message type selection
257
- - From address configuration
258
- - Subject template selection
259
- - Support for text body templates in addition to HTML
213
+ ISC
@@ -1 +1 @@
1
- {"version":3,"file":"preview.component.d.ts","sourceRoot":"","sources":["../../src/lib/preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAS,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAoC,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,UAAU,EAAW,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAyB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;;AAK9F;;GAEG;AACH,qBAKa,oCAAqC,YAAW,MAAM;IACxD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,gBAAgB,uCAA8C;IAExE,SAAS,EAAE,sBAAsB,EAAE,CAAM;IACzC,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IACvD,IAAI,EAAE,MAAM,CAAK;IAEV,eAAe,EAAE,gBAAgB,EAAE,CAAM;IAChD,mBAAmB,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,OAAO,CAAS;;IAI1B,QAAQ;IAOR,aAAa;IAoBnB,cAAc,CAAC,QAAQ,EAAE,sBAAsB;cAO/B,mBAAmB;IAwCnC,yBAAyB,IAAI,MAAM;IASnC,sBAAsB,IAAI,MAAM;IAUhC,MAAM;IAKN,YAAY;IAIZ,WAAW;IAIX,WAAW;IAMX,eAAe;yCAhIJ,oCAAoC;2CAApC,oCAAoC;CAqIhD"}
1
+ {"version":3,"file":"preview.component.d.ts","sourceRoot":"","sources":["../../src/lib/preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAS,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAoC,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,UAAU,EAAW,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAyB,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;;AAK9F;;GAEG;AACH,qBAMa,oCAAqC,YAAW,MAAM;IACxD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,gBAAgB,uCAA8C;IAExE,SAAS,EAAE,sBAAsB,EAAE,CAAM;IACzC,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IACvD,IAAI,EAAE,MAAM,CAAK;IAEV,eAAe,EAAE,gBAAgB,EAAE,CAAM;IAChD,mBAAmB,EAAE,MAAM,CAAK;IACzB,OAAO,EAAE,OAAO,CAAS;;IAI1B,QAAQ;IAOR,aAAa;IAoBnB,cAAc,CAAC,QAAQ,EAAE,sBAAsB;cAO/B,mBAAmB;IAwCnC,yBAAyB,IAAI,MAAM;IASnC,sBAAsB,IAAI,MAAM;IAUhC,MAAM;IAKN,YAAY;IAIZ,WAAW;IAIX,WAAW;IAMX,eAAe;yCAhIJ,oCAAoC;2CAApC,oCAAoC;CAqIhD"}
@@ -4,13 +4,12 @@ import { RunView } from '@memberjunction/core';
4
4
  import { EntityCommunicationsEngineClient } from '@memberjunction/entity-communications-client';
5
5
  import { TemplateEngineBase } from '@memberjunction/templates-base-types';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "@progress/kendo-angular-buttons";
9
- import * as i3 from "@memberjunction/ng-shared-generic";
10
- function EntityCommunicationsPreviewComponent_div_1_li_4_Template(rf, ctx) { if (rf & 1) {
7
+ import * as i1 from "@progress/kendo-angular-buttons";
8
+ import * as i2 from "@memberjunction/ng-shared-generic";
9
+ function EntityCommunicationsPreviewComponent_Conditional_1_For_5_Template(rf, ctx) { if (rf & 1) {
11
10
  const _r1 = i0.ɵɵgetCurrentView();
12
- i0.ɵɵelementStart(0, "li", 4);
13
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_1_li_4_Template_li_click_0_listener() { const template_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectTemplate(template_r2)); });
11
+ i0.ɵɵelementStart(0, "li", 2);
12
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_1_For_5_Template_li_click_0_listener() { const template_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectTemplate(template_r2)); });
14
13
  i0.ɵɵtext(1);
15
14
  i0.ɵɵelementEnd();
16
15
  } if (rf & 2) {
@@ -18,71 +17,71 @@ function EntityCommunicationsPreviewComponent_div_1_li_4_Template(rf, ctx) { if
18
17
  i0.ɵɵadvance();
19
18
  i0.ɵɵtextInterpolate1(" ", template_r2.Name, " ");
20
19
  } }
21
- function EntityCommunicationsPreviewComponent_div_1_Template(rf, ctx) { if (rf & 1) {
22
- i0.ɵɵelementStart(0, "div", 2)(1, "h2");
20
+ function EntityCommunicationsPreviewComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "div", 0)(1, "h2");
23
22
  i0.ɵɵtext(2, "Select a Template");
24
23
  i0.ɵɵelementEnd();
25
24
  i0.ɵɵelementStart(3, "ul");
26
- i0.ɵɵtemplate(4, EntityCommunicationsPreviewComponent_div_1_li_4_Template, 2, 1, "li", 3);
25
+ i0.ɵɵrepeaterCreate(4, EntityCommunicationsPreviewComponent_Conditional_1_For_5_Template, 2, 1, "li", null, i0.ɵɵrepeaterTrackByIdentity);
27
26
  i0.ɵɵelementEnd()();
28
27
  } if (rf & 2) {
29
28
  const ctx_r2 = i0.ɵɵnextContext();
30
29
  i0.ɵɵadvance(4);
31
- i0.ɵɵproperty("ngForOf", ctx_r2.templates);
30
+ i0.ɵɵrepeater(ctx_r2.templates);
32
31
  } }
33
- function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
32
+ function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
34
33
  const _r4 = i0.ɵɵgetCurrentView();
35
34
  i0.ɵɵelementStart(0, "h2");
36
35
  i0.ɵɵtext(1, "No Messages Available");
37
36
  i0.ɵɵelementEnd();
38
- i0.ɵɵelementStart(2, "button", 7);
39
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_0_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.goBack()); });
37
+ i0.ɵɵelementStart(2, "button", 4);
38
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_0_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.goBack()); });
40
39
  i0.ɵɵtext(3, "Back");
41
40
  i0.ɵɵelementEnd();
42
41
  } }
43
- function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
42
+ function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
44
43
  const _r5 = i0.ɵɵgetCurrentView();
45
44
  i0.ɵɵelementStart(0, "h2");
46
45
  i0.ɵɵtext(1);
47
46
  i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(2, "button", 7);
49
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.goBack()); });
47
+ i0.ɵɵelementStart(2, "button", 4);
48
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.goBack()); });
50
49
  i0.ɵɵtext(3, "Back");
51
50
  i0.ɵɵelementEnd();
52
- i0.ɵɵelementStart(4, "div", 8)(5, "button", 9);
53
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.firstMessage()); });
54
- i0.ɵɵelement(6, "span", 10);
51
+ i0.ɵɵelementStart(4, "div", 5)(5, "button", 6);
52
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.firstMessage()); });
53
+ i0.ɵɵelement(6, "span", 7);
55
54
  i0.ɵɵelementEnd();
56
- i0.ɵɵelementStart(7, "button", 11);
57
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.previousMessage()); });
58
- i0.ɵɵelement(8, "span", 12);
55
+ i0.ɵɵelementStart(7, "button", 8);
56
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.previousMessage()); });
57
+ i0.ɵɵelement(8, "span", 9);
59
58
  i0.ɵɵelementEnd();
60
- i0.ɵɵelementStart(9, "span", 13);
59
+ i0.ɵɵelementStart(9, "span", 10);
61
60
  i0.ɵɵtext(10);
62
61
  i0.ɵɵelementEnd();
63
- i0.ɵɵelementStart(11, "button", 14);
64
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.nextMessage()); });
65
- i0.ɵɵelement(12, "span", 15);
62
+ i0.ɵɵelementStart(11, "button", 11);
63
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.nextMessage()); });
64
+ i0.ɵɵelement(12, "span", 12);
66
65
  i0.ɵɵelementEnd();
67
- i0.ɵɵelementStart(13, "button", 16);
68
- i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.lastMessage()); });
69
- i0.ɵɵelement(14, "span", 17);
66
+ i0.ɵɵelementStart(13, "button", 13);
67
+ i0.ɵɵlistener("click", function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.lastMessage()); });
68
+ i0.ɵɵelement(14, "span", 14);
70
69
  i0.ɵɵelementEnd()();
71
- i0.ɵɵelementStart(15, "div", 18)(16, "div", 19);
70
+ i0.ɵɵelementStart(15, "div", 15)(16, "div", 16);
72
71
  i0.ɵɵtext(17);
73
72
  i0.ɵɵelementEnd();
74
- i0.ɵɵelement(18, "div", 20);
73
+ i0.ɵɵelement(18, "div", 17);
75
74
  i0.ɵɵelementEnd();
76
75
  } if (rf & 2) {
77
76
  const ctx_r2 = i0.ɵɵnextContext(3);
78
77
  i0.ɵɵadvance();
79
- i0.ɵɵtextInterpolate1("Preview ", ctx_r2.selectedTemplate == null ? null : ctx_r2.selectedTemplate.Name, "");
78
+ i0.ɵɵtextInterpolate1("Preview ", ctx_r2.selectedTemplate == null ? null : ctx_r2.selectedTemplate.Name);
80
79
  i0.ɵɵadvance(4);
81
80
  i0.ɵɵproperty("disabled", ctx_r2.currentMessageIndex === 0);
82
81
  i0.ɵɵadvance(2);
83
82
  i0.ɵɵproperty("disabled", ctx_r2.currentMessageIndex === 0);
84
83
  i0.ɵɵadvance(3);
85
- i0.ɵɵtextInterpolate2("", ctx_r2.currentMessageIndex + 1, " of ", ctx_r2.previewMessages.length, "");
84
+ i0.ɵɵtextInterpolate2("", ctx_r2.currentMessageIndex + 1, " of ", ctx_r2.previewMessages.length);
86
85
  i0.ɵɵadvance();
87
86
  i0.ɵɵproperty("disabled", ctx_r2.currentMessageIndex >= ctx_r2.previewMessages.length - 1);
88
87
  i0.ɵɵadvance(2);
@@ -92,20 +91,20 @@ function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_
92
91
  i0.ɵɵadvance();
93
92
  i0.ɵɵproperty("innerHTML", ctx_r2.currentPreviewItemBody(), i0.ɵɵsanitizeHtml);
94
93
  } }
95
- function EntityCommunicationsPreviewComponent_div_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵtemplate(0, EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_0_Template, 4, 0)(1, EntityCommunicationsPreviewComponent_div_2_Conditional_1_Conditional_1_Template, 19, 9);
94
+ function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵconditionalCreate(0, EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_0_Template, 4, 0)(1, EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Conditional_1_Template, 19, 9);
97
96
  } if (rf & 2) {
98
97
  const ctx_r2 = i0.ɵɵnextContext(2);
99
98
  i0.ɵɵconditional(ctx_r2.previewMessages.length === 0 ? 0 : 1);
100
99
  } }
101
- function EntityCommunicationsPreviewComponent_div_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
102
- i0.ɵɵelement(0, "mj-loading", 6);
100
+ function EntityCommunicationsPreviewComponent_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵelement(0, "mj-loading", 3);
103
102
  } if (rf & 2) {
104
103
  i0.ɵɵproperty("showText", false);
105
104
  } }
106
- function EntityCommunicationsPreviewComponent_div_2_Template(rf, ctx) { if (rf & 1) {
107
- i0.ɵɵelementStart(0, "div", 5);
108
- i0.ɵɵtemplate(1, EntityCommunicationsPreviewComponent_div_2_Conditional_1_Template, 2, 1)(2, EntityCommunicationsPreviewComponent_div_2_Conditional_2_Template, 1, 1, "mj-loading", 6);
105
+ function EntityCommunicationsPreviewComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
106
+ i0.ɵɵelementStart(0, "div", 1);
107
+ i0.ɵɵconditionalCreate(1, EntityCommunicationsPreviewComponent_Conditional_2_Conditional_1_Template, 2, 1)(2, EntityCommunicationsPreviewComponent_Conditional_2_Conditional_2_Template, 1, 1, "mj-loading", 3);
109
108
  i0.ɵɵelementEnd();
110
109
  } if (rf & 2) {
111
110
  const ctx_r2 = i0.ɵɵnextContext();
@@ -222,20 +221,21 @@ export class EntityCommunicationsPreviewComponent {
222
221
  }
223
222
  }
224
223
  static ɵfac = function EntityCommunicationsPreviewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityCommunicationsPreviewComponent)(); };
225
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityCommunicationsPreviewComponent, selectors: [["mj-entity-communications-preview"]], inputs: { templateFilter: "templateFilter", entityInfo: "entityInfo", runViewParams: "runViewParams" }, outputs: { templateSelected: "templateSelected" }, decls: 3, vars: 2, consts: [["class", "step-1", 4, "ngIf"], ["class", "step-2", 4, "ngIf"], [1, "step-1"], [3, "click", 4, "ngFor", "ngForOf"], [3, "click"], [1, "step-2"], ["size", "medium", 3, "showText"], ["kendoButton", "", 3, "click"], [1, "vcr-controls"], ["aria-label", "First", 3, "click", "disabled"], [1, "fas", "fa-angle-double-left"], ["aria-label", "Previous", 3, "click", "disabled"], [1, "fas", "fa-angle-left"], [1, "index-indicator"], ["aria-label", "Next", 3, "click", "disabled"], [1, "fas", "fa-angle-right"], ["aria-label", "Last", 3, "click", "disabled"], [1, "fas", "fa-angle-double-right"], [1, "template-preview"], [1, "subject-line"], [1, "preview-body", 3, "innerHTML"]], template: function EntityCommunicationsPreviewComponent_Template(rf, ctx) { if (rf & 1) {
224
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityCommunicationsPreviewComponent, selectors: [["mj-entity-communications-preview"]], inputs: { templateFilter: "templateFilter", entityInfo: "entityInfo", runViewParams: "runViewParams" }, outputs: { templateSelected: "templateSelected" }, standalone: false, decls: 3, vars: 2, consts: [[1, "step-1"], [1, "step-2"], [3, "click"], ["size", "medium", 3, "showText"], ["kendoButton", "", 3, "click"], [1, "vcr-controls"], ["aria-label", "First", 3, "click", "disabled"], [1, "fas", "fa-angle-double-left"], ["aria-label", "Previous", 3, "click", "disabled"], [1, "fas", "fa-angle-left"], [1, "index-indicator"], ["aria-label", "Next", 3, "click", "disabled"], [1, "fas", "fa-angle-right"], ["aria-label", "Last", 3, "click", "disabled"], [1, "fas", "fa-angle-double-right"], [1, "template-preview"], [1, "subject-line"], [1, "preview-body", 3, "innerHTML"]], template: function EntityCommunicationsPreviewComponent_Template(rf, ctx) { if (rf & 1) {
226
225
  i0.ɵɵelementStart(0, "div");
227
- i0.ɵɵtemplate(1, EntityCommunicationsPreviewComponent_div_1_Template, 5, 1, "div", 0)(2, EntityCommunicationsPreviewComponent_div_2_Template, 3, 1, "div", 1);
226
+ i0.ɵɵconditionalCreate(1, EntityCommunicationsPreviewComponent_Conditional_1_Template, 6, 0, "div", 0);
227
+ i0.ɵɵconditionalCreate(2, EntityCommunicationsPreviewComponent_Conditional_2_Template, 3, 1, "div", 1);
228
228
  i0.ɵɵelementEnd();
229
229
  } if (rf & 2) {
230
230
  i0.ɵɵadvance();
231
- i0.ɵɵproperty("ngIf", ctx.step === 1);
231
+ i0.ɵɵconditional(ctx.step === 1 ? 1 : -1);
232
232
  i0.ɵɵadvance();
233
- i0.ɵɵproperty("ngIf", ctx.step === 2);
234
- } }, dependencies: [i1.NgForOf, i1.NgIf, i2.ButtonComponent, i3.LoadingComponent], styles: [".step-1[_ngcontent-%COMP%], .step-2[_ngcontent-%COMP%] {\n margin: 20px 0;\n}\n\n.template-preview[_ngcontent-%COMP%] {\n border: 1px solid #ccc;\n margin-top: 10px;\n}\n\n.subject-line[_ngcontent-%COMP%] {\n font-weight: bolder;\n border-bottom: 1px solid #ccc;\n padding: 5px;\n}\n\n.preview-body[_ngcontent-%COMP%] {\n padding: 5px;\n}\n\nul[_ngcontent-%COMP%] {\n list-style: none;\n padding: 0;\n}\n\nli[_ngcontent-%COMP%] {\n padding: 10px;\n border: 1px solid #ccc;\n margin: 5px 0;\n cursor: pointer;\n}\n\nli[_ngcontent-%COMP%]:hover {\n background-color: #f0f0f0;\n}\n\n.vcr-controls[_ngcontent-%COMP%] {\n margin-top: 5px;\n margin-bottom: 15px;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n margin-right: 5px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 20px;\n color: #007bff;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n color: #0056b3;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled {\n color: #ccc;\n cursor: not-allowed;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled span[_ngcontent-%COMP%] {\n color: #ccc;\n}\n\n.index-indicator[_ngcontent-%COMP%] {\n margin: 0 10px;\n}"] });
233
+ i0.ɵɵconditional(ctx.step === 2 ? 2 : -1);
234
+ } }, dependencies: [i1.ButtonComponent, i2.LoadingComponent], styles: [".step-1[_ngcontent-%COMP%], .step-2[_ngcontent-%COMP%] {\n margin: 20px 0;\n}\n\n.template-preview[_ngcontent-%COMP%] {\n border: 1px solid #ccc;\n margin-top: 10px;\n}\n\n.subject-line[_ngcontent-%COMP%] {\n font-weight: bolder;\n border-bottom: 1px solid #ccc;\n padding: 5px;\n}\n\n.preview-body[_ngcontent-%COMP%] {\n padding: 5px;\n}\n\nul[_ngcontent-%COMP%] {\n list-style: none;\n padding: 0;\n}\n\nli[_ngcontent-%COMP%] {\n padding: 10px;\n border: 1px solid #ccc;\n margin: 5px 0;\n cursor: pointer;\n}\n\nli[_ngcontent-%COMP%]:hover {\n background-color: #f0f0f0;\n}\n\n.vcr-controls[_ngcontent-%COMP%] {\n margin-top: 5px;\n margin-bottom: 15px;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n margin-right: 5px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 20px;\n color: #007bff;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n color: #0056b3;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled {\n color: #ccc;\n cursor: not-allowed;\n}\n\n.vcr-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled span[_ngcontent-%COMP%] {\n color: #ccc;\n}\n\n.index-indicator[_ngcontent-%COMP%] {\n margin: 0 10px;\n}"] });
235
235
  }
236
236
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityCommunicationsPreviewComponent, [{
237
237
  type: Component,
238
- args: [{ selector: 'mj-entity-communications-preview', template: "<div> \n <div *ngIf=\"step === 1\" class=\"step-1\">\n <h2>Select a Template</h2>\n <ul>\n <li *ngFor=\"let template of templates\" (click)=\"selectTemplate(template)\">\n {{ template.Name }}\n </li>\n </ul>\n </div>\n\n <div *ngIf=\"step === 2\" class=\"step-2\">\n @if(!loading) {\n @if (previewMessages.length === 0) {\n <h2>No Messages Available</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n }\n @else {\n <h2>Preview {{ selectedTemplate?.Name }}</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n <div class=\"vcr-controls\">\n <button (click)=\"firstMessage()\" aria-label=\"First\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-double-left\"></span>\n </button>\n <button (click)=\"previousMessage()\" aria-label=\"Previous\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-left\"></span>\n </button>\n <span class=\"index-indicator\">{{ currentMessageIndex + 1 }} of {{ previewMessages.length }}</span>\n <button (click)=\"nextMessage()\" aria-label=\"Next\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-right\"></span>\n </button>\n <button (click)=\"lastMessage()\" aria-label=\"Last\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-double-right\"></span>\n </button>\n </div>\n <div class=\"template-preview\">\n <div class=\"subject-line\">{{currentPreviewItemSubject()}}</div>\n <div class=\"preview-body\" [innerHTML]=\"currentPreviewItemBody()\"></div>\n </div> \n }\n }\n @else {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n </div>\n</div>", styles: [".step-1, .step-2 {\n margin: 20px 0;\n}\n\n.template-preview {\n border: 1px solid #ccc;\n margin-top: 10px;\n}\n\n.subject-line {\n font-weight: bolder;\n border-bottom: 1px solid #ccc;\n padding: 5px;\n}\n\n.preview-body {\n padding: 5px;\n}\n\nul {\n list-style: none;\n padding: 0;\n}\n\nli {\n padding: 10px;\n border: 1px solid #ccc;\n margin: 5px 0;\n cursor: pointer;\n}\n\nli:hover {\n background-color: #f0f0f0;\n}\n\n.vcr-controls {\n margin-top: 5px;\n margin-bottom: 15px;\n}\n\n.vcr-controls button {\n margin-right: 5px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 20px;\n color: #007bff;\n}\n\n.vcr-controls button:hover {\n color: #0056b3;\n}\n\n.vcr-controls button:disabled {\n color: #ccc;\n cursor: not-allowed;\n}\n\n.vcr-controls button:disabled span {\n color: #ccc;\n}\n\n.index-indicator {\n margin: 0 10px;\n}"] }]
238
+ args: [{ standalone: false, selector: 'mj-entity-communications-preview', template: "<div>\n @if (step === 1) {\n <div class=\"step-1\">\n <h2>Select a Template</h2>\n <ul>\n @for (template of templates; track template) {\n <li (click)=\"selectTemplate(template)\">\n {{ template.Name }}\n </li>\n }\n </ul>\n </div>\n }\n\n @if (step === 2) {\n <div class=\"step-2\">\n @if(!loading) {\n @if (previewMessages.length === 0) {\n <h2>No Messages Available</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n }\n @else {\n <h2>Preview {{ selectedTemplate?.Name }}</h2>\n <button kendoButton (click)=\"goBack()\">Back</button>\n <div class=\"vcr-controls\">\n <button (click)=\"firstMessage()\" aria-label=\"First\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-double-left\"></span>\n </button>\n <button (click)=\"previousMessage()\" aria-label=\"Previous\" [disabled]=\"currentMessageIndex === 0\">\n <span class=\"fas fa-angle-left\"></span>\n </button>\n <span class=\"index-indicator\">{{ currentMessageIndex + 1 }} of {{ previewMessages.length }}</span>\n <button (click)=\"nextMessage()\" aria-label=\"Next\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-right\"></span>\n </button>\n <button (click)=\"lastMessage()\" aria-label=\"Last\" [disabled]=\"currentMessageIndex >= previewMessages.length - 1\">\n <span class=\"fas fa-angle-double-right\"></span>\n </button>\n </div>\n <div class=\"template-preview\">\n <div class=\"subject-line\">{{currentPreviewItemSubject()}}</div>\n <div class=\"preview-body\" [innerHTML]=\"currentPreviewItemBody()\"></div>\n </div>\n }\n }\n @else {\n <mj-loading [showText]=\"false\" size=\"medium\"></mj-loading>\n }\n</div>\n}\n</div>", styles: [".step-1, .step-2 {\n margin: 20px 0;\n}\n\n.template-preview {\n border: 1px solid #ccc;\n margin-top: 10px;\n}\n\n.subject-line {\n font-weight: bolder;\n border-bottom: 1px solid #ccc;\n padding: 5px;\n}\n\n.preview-body {\n padding: 5px;\n}\n\nul {\n list-style: none;\n padding: 0;\n}\n\nli {\n padding: 10px;\n border: 1px solid #ccc;\n margin: 5px 0;\n cursor: pointer;\n}\n\nli:hover {\n background-color: #f0f0f0;\n}\n\n.vcr-controls {\n margin-top: 5px;\n margin-bottom: 15px;\n}\n\n.vcr-controls button {\n margin-right: 5px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 20px;\n color: #007bff;\n}\n\n.vcr-controls button:hover {\n color: #0056b3;\n}\n\n.vcr-controls button:disabled {\n color: #ccc;\n cursor: not-allowed;\n}\n\n.vcr-controls button:disabled span {\n color: #ccc;\n}\n\n.index-indicator {\n margin: 0 10px;\n}"] }]
239
239
  }], () => [], { templateFilter: [{
240
240
  type: Input
241
241
  }], entityInfo: [{
@@ -245,5 +245,5 @@ export class EntityCommunicationsPreviewComponent {
245
245
  }], templateSelected: [{
246
246
  type: Output
247
247
  }] }); })();
248
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityCommunicationsPreviewComponent, { className: "EntityCommunicationsPreviewComponent", filePath: "src/lib/preview.component.ts", lineNumber: 17 }); })();
248
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityCommunicationsPreviewComponent, { className: "EntityCommunicationsPreviewComponent", filePath: "src/lib/preview.component.ts", lineNumber: 18 }); })();
249
249
  //# sourceMappingURL=preview.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.component.js","sourceRoot":"","sources":["../../src/lib/preview.component.ts","../../src/lib/preview.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.component.js","sourceRoot":"","sources":["../../src/lib/preview.component.ts","../../src/lib/preview.component.html"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"window.component.d.ts","sourceRoot":"","sources":["../../src/lib/window.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,YAAY,EAAkD,MAAM,eAAe,CAAC;AAEvI,OAAO,EAAY,UAAU,EAAoD,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;;AAEvE,qBAKa,0CAA0C;IAC5C,KAAK,EAAE,MAAM,CAA4B;IACzC,KAAK,SAAO;IACZ,MAAM,SAAO;IACb,QAAQ,SAAO;IACf,SAAS,SAAO;IAChB,SAAS,UAAQ;IAEjB,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAElD,IAAa,aAAa,IAAI,OAAO,CAEpC;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAM/B;IACD,OAAO,CAAC,cAAc,CAAkB;IACxC;;OAEG;IACO,YAAY,wBAA+B;IAIrD;;OAEG;IACa,eAAe,EAAE,oBAAoB,CAGnD;IAEQ,cAAc,sCAAoC;IAClD,gBAAgB,sCAAoC;IAE9D,SAAS,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAM;IAC9C,SAAS,CAAC,kBAAkB,EAAE,UAAU,EAAE,CAAM;IAGzC,QAAQ;IAKR,IAAI;yCAjDA,0CAA0C;2CAA1C,0CAA0C;CAqDtD"}
1
+ {"version":3,"file":"window.component.d.ts","sourceRoot":"","sources":["../../src/lib/window.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,YAAY,EAAkD,MAAM,eAAe,CAAC;AAEvI,OAAO,EAAY,UAAU,EAAoD,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGzI,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;;AAEvE,qBAMa,0CAA0C;IAC5C,KAAK,EAAE,MAAM,CAA4B;IACzC,KAAK,SAAO;IACZ,MAAM,SAAO;IACb,QAAQ,SAAO;IACf,SAAS,SAAO;IAChB,SAAS,UAAQ;IAEjB,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAElD,IAAa,aAAa,IAAI,OAAO,CAEpC;IACD,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAM/B;IACD,OAAO,CAAC,cAAc,CAAkB;IACxC;;OAEG;IACO,YAAY,wBAA+B;IAIrD;;OAEG;IACa,eAAe,EAAE,oBAAoB,CAGnD;IAEQ,cAAc,sCAAoC;IAClD,gBAAgB,sCAAoC;IAE9D,SAAS,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAM;IAC9C,SAAS,CAAC,kBAAkB,EAAE,UAAU,EAAE,CAAM;IAGzC,QAAQ;IAKR,IAAI;yCAjDA,0CAA0C;2CAA1C,0CAA0C;CAqDtD"}
@@ -58,15 +58,15 @@ export class EntityCommunicationsPreviewWindowComponent {
58
58
  this.DialogClosed.emit(true);
59
59
  }
60
60
  static ɵfac = function EntityCommunicationsPreviewWindowComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityCommunicationsPreviewWindowComponent)(); };
61
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityCommunicationsPreviewWindowComponent, selectors: [["mj-entity-communications-preview-window"]], inputs: { Title: "Title", Width: "Width", Height: "Height", MinWidth: "MinWidth", MinHeight: "MinHeight", Resizable: "Resizable", entityInfo: "entityInfo", runViewParams: "runViewParams", DialogVisible: "DialogVisible", ToolbarSettings: "ToolbarSettings" }, outputs: { DialogClosed: "DialogClosed", RecordSelected: "RecordSelected", RecordUnselected: "RecordUnselected" }, decls: 1, vars: 1, consts: [[3, "width", "height", "minWidth", "minHeight", "title", "resizable"], [3, "close", "width", "height", "minWidth", "minHeight", "title", "resizable"], [3, "entityInfo", "runViewParams"]], template: function EntityCommunicationsPreviewWindowComponent_Template(rf, ctx) { if (rf & 1) {
62
- i0.ɵɵtemplate(0, EntityCommunicationsPreviewWindowComponent_Conditional_0_Template, 2, 8, "kendo-window", 0);
61
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityCommunicationsPreviewWindowComponent, selectors: [["mj-entity-communications-preview-window"]], inputs: { Title: "Title", Width: "Width", Height: "Height", MinWidth: "MinWidth", MinHeight: "MinHeight", Resizable: "Resizable", entityInfo: "entityInfo", runViewParams: "runViewParams", DialogVisible: "DialogVisible", ToolbarSettings: "ToolbarSettings" }, outputs: { DialogClosed: "DialogClosed", RecordSelected: "RecordSelected", RecordUnselected: "RecordUnselected" }, standalone: false, decls: 1, vars: 1, consts: [[3, "width", "height", "minWidth", "minHeight", "title", "resizable"], [3, "close", "width", "height", "minWidth", "minHeight", "title", "resizable"], [3, "entityInfo", "runViewParams"]], template: function EntityCommunicationsPreviewWindowComponent_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵconditionalCreate(0, EntityCommunicationsPreviewWindowComponent_Conditional_0_Template, 2, 8, "kendo-window", 0);
63
63
  } if (rf & 2) {
64
64
  i0.ɵɵconditional(ctx.DialogVisible ? 0 : -1);
65
- } }, dependencies: [i1.WindowComponent, i2.EntityCommunicationsPreviewComponent] });
65
+ } }, dependencies: [i1.WindowComponent, i2.EntityCommunicationsPreviewComponent], encapsulation: 2 });
66
66
  }
67
67
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityCommunicationsPreviewWindowComponent, [{
68
68
  type: Component,
69
- args: [{ selector: 'mj-entity-communications-preview-window', template: "@if (DialogVisible) {\n <kendo-window\n [width]=\"Width\"\n [height]=\"Height\"\n [minWidth]=\"MinWidth\"\n [minHeight]=\"MinHeight\"\n [title]=\"Title\" \n (close)=\"OnCancel()\"\n [resizable]=\"Resizable\"\n >\n <mj-entity-communications-preview\n [entityInfo]=\"entityInfo\"\n [runViewParams]=\"runViewParams\"\n >\n </mj-entity-communications-preview>\n </kendo-window> \n}" }]
69
+ args: [{ standalone: false, selector: 'mj-entity-communications-preview-window', template: "@if (DialogVisible) {\n <kendo-window\n [width]=\"Width\"\n [height]=\"Height\"\n [minWidth]=\"MinWidth\"\n [minHeight]=\"MinHeight\"\n [title]=\"Title\" \n (close)=\"OnCancel()\"\n [resizable]=\"Resizable\"\n >\n <mj-entity-communications-preview\n [entityInfo]=\"entityInfo\"\n [runViewParams]=\"runViewParams\"\n >\n </mj-entity-communications-preview>\n </kendo-window> \n}" }]
70
70
  }], null, { Title: [{
71
71
  type: Input
72
72
  }], Width: [{
@@ -94,5 +94,5 @@ export class EntityCommunicationsPreviewWindowComponent {
94
94
  }], RecordUnselected: [{
95
95
  type: Output
96
96
  }] }); })();
97
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityCommunicationsPreviewWindowComponent, { className: "EntityCommunicationsPreviewWindowComponent", filePath: "src/lib/window.component.ts", lineNumber: 13 }); })();
97
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityCommunicationsPreviewWindowComponent, { className: "EntityCommunicationsPreviewWindowComponent", filePath: "src/lib/window.component.ts", lineNumber: 14 }); })();
98
98
  //# sourceMappingURL=window.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"window.component.js","sourceRoot":"","sources":["../../src/lib/window.component.ts","../../src/lib/window.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,EAAE,YAAY,EAAU,KAAK,EAAmC,MAAM,eAAe,CAAC;;;;;;ICCnI,uCAQC;IAFG,oNAAS,iBAAU,KAAC;IAGpB,sDAImC;IACvC,iBAAe;;;IAPX,AAFA,AADA,AADA,AADA,AADA,oCAAe,yBACE,6BACI,+BACE,uBACR,+BAEQ;IAGnB,cAAyB;IACzB,AADA,8CAAyB,uCACM;;ADA3C,MAAM,OAAO,0CAA0C;IAC5C,KAAK,GAAW,wBAAwB,CAAC;IACzC,KAAK,GAAG,GAAG,CAAC;IACZ,MAAM,GAAG,GAAG,CAAC;IACb,QAAQ,GAAG,GAAG,CAAC;IACf,SAAS,GAAG,GAAG,CAAC;IAChB,SAAS,GAAG,IAAI,CAAC;IAEjB,UAAU,CAAyB;IACnC,aAAa,CAA4B;IAElD,IAAa,aAAa;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,IAAI,aAAa,CAAC,KAAc;QAC9B,IAAI,KAAK,KAAK,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC;YAC3C,qBAAqB;YACrB,8BAA8B;QAChC,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IACO,cAAc,GAAY,KAAK,CAAC;IACxC;;OAEG;IACO,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;IAIrD;;OAEG;IACa,eAAe,GAAyB;QACtD,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,CAAC;KAChG,CAAC;IAEQ,cAAc,GAAG,IAAI,YAAY,EAAgB,CAAC;IAClD,gBAAgB,GAAG,IAAI,YAAY,EAAgB,CAAC;IAEpD,gBAAgB,GAAiB,EAAE,CAAC;IACpC,kBAAkB,GAAiB,EAAE,CAAC;IAGzC,QAAQ;QACb,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;oIApDU,0CAA0C;6DAA1C,0CAA0C;YCZvD,4GAAqB;;YAArB,4CAgBC;;;iFDJY,0CAA0C;cALtD,SAAS;2BACE,yCAAyC;gBAK1C,KAAK;kBAAb,KAAK;YACG,KAAK;kBAAb,KAAK;YACG,MAAM;kBAAd,KAAK;YACG,QAAQ;kBAAhB,KAAK;YACG,SAAS;kBAAjB,KAAK;YACG,SAAS;kBAAjB,KAAK;YAEG,UAAU;kBAAlB,KAAK;YACG,aAAa;kBAArB,KAAK;YAEO,aAAa;kBAAzB,KAAK;YAcI,YAAY;kBAArB,MAAM;YAOS,eAAe;kBAA9B,KAAK;YAKI,cAAc;kBAAvB,MAAM;YACG,gBAAgB;kBAAzB,MAAM;;kFAtCI,0CAA0C"}
1
+ {"version":3,"file":"window.component.js","sourceRoot":"","sources":["../../src/lib/window.component.ts","../../src/lib/window.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,EAAE,YAAY,EAAU,KAAK,EAAmC,MAAM,eAAe,CAAC;;;;;;ICCnI,uCAQC;IAFG,oNAAS,iBAAU,KAAC;IAGpB,sDAImC;IACvC,iBAAe;;;IAPX,AAFA,AADA,AADA,AADA,AADA,oCAAe,yBACE,6BACI,+BACE,uBACR,+BAEQ;IAGnB,cAAyB;IACzB,AADA,8CAAyB,uCACM;;ADC3C,MAAM,OAAO,0CAA0C;IAC5C,KAAK,GAAW,wBAAwB,CAAC;IACzC,KAAK,GAAG,GAAG,CAAC;IACZ,MAAM,GAAG,GAAG,CAAC;IACb,QAAQ,GAAG,GAAG,CAAC;IACf,SAAS,GAAG,GAAG,CAAC;IAChB,SAAS,GAAG,IAAI,CAAC;IAEjB,UAAU,CAAyB;IACnC,aAAa,CAA4B;IAElD,IAAa,aAAa;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,IAAI,aAAa,CAAC,KAAc;QAC9B,IAAI,KAAK,KAAK,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE,CAAC;YAC3C,qBAAqB;YACrB,8BAA8B;QAChC,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IACO,cAAc,GAAY,KAAK,CAAC;IACxC;;OAEG;IACO,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;IAIrD;;OAEG;IACa,eAAe,GAAyB;QACtD,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,CAAC;KAChG,CAAC;IAEQ,cAAc,GAAG,IAAI,YAAY,EAAgB,CAAC;IAClD,gBAAgB,GAAG,IAAI,YAAY,EAAgB,CAAC;IAEpD,gBAAgB,GAAiB,EAAE,CAAC;IACpC,kBAAkB,GAAiB,EAAE,CAAC;IAGzC,QAAQ;QACb,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;oIApDU,0CAA0C;6DAA1C,0CAA0C;YCbvD,qHAAqB;;YAArB,4CAgBC;;;iFDHY,0CAA0C;cANtD,SAAS;6BACI,KAAK,YACP,yCAAyC;;kBAKlD,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAEL,KAAK;;kBACL,KAAK;;kBAEL,KAAK;;kBAcL,MAAM;;kBAON,KAAK;;kBAKL,MAAM;;kBACN,MAAM;;kFAtCI,0CAA0C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-entity-communications",
3
- "version": "3.4.0",
3
+ "version": "4.1.0",
4
4
  "description": "MemberJunction: Angular Components to allow a user to select templates, preview the messages with those tempaltes, and send them",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -15,31 +15,31 @@
15
15
  "author": "",
16
16
  "license": "ISC",
17
17
  "devDependencies": {
18
- "@angular/compiler": "18.2.14",
19
- "@angular/compiler-cli": "18.2.14"
18
+ "@angular/compiler": "21.1.3",
19
+ "@angular/compiler-cli": "21.1.3"
20
20
  },
21
21
  "peerDependencies": {
22
- "@angular/common": "18.2.14",
23
- "@angular/core": "18.2.14",
24
- "@angular/forms": "18.2.14",
25
- "@angular/router": "18.2.14",
26
- "@progress/kendo-angular-buttons": "16.2.0",
27
- "@progress/kendo-angular-dialog": "16.2.0",
28
- "@progress/kendo-angular-listbox": "16.2.0",
29
- "@progress/kendo-angular-indicators": "16.2.0"
22
+ "@angular/common": "21.1.3",
23
+ "@angular/core": "21.1.3",
24
+ "@angular/forms": "21.1.3",
25
+ "@angular/router": "21.1.3",
26
+ "@progress/kendo-angular-buttons": "22.0.1",
27
+ "@progress/kendo-angular-dialog": "22.0.1",
28
+ "@progress/kendo-angular-listbox": "22.0.1",
29
+ "@progress/kendo-angular-indicators": "22.0.1"
30
30
  },
31
31
  "dependencies": {
32
- "@memberjunction/communication-types": "3.4.0",
33
- "@memberjunction/core": "3.4.0",
34
- "@memberjunction/core-entities": "3.4.0",
35
- "@memberjunction/entity-communications-base": "3.4.0",
36
- "@memberjunction/entity-communications-client": "3.4.0",
37
- "@memberjunction/global": "3.4.0",
38
- "@memberjunction/ng-container-directives": "3.4.0",
39
- "@memberjunction/ng-shared": "3.4.0",
40
- "@memberjunction/ng-shared-generic": "3.4.0",
41
- "@memberjunction/templates-base-types": "3.4.0",
42
- "tslib": "^2.3.0"
32
+ "@memberjunction/communication-types": "4.1.0",
33
+ "@memberjunction/core": "4.1.0",
34
+ "@memberjunction/core-entities": "4.1.0",
35
+ "@memberjunction/entity-communications-base": "4.1.0",
36
+ "@memberjunction/entity-communications-client": "4.1.0",
37
+ "@memberjunction/global": "4.1.0",
38
+ "@memberjunction/ng-container-directives": "4.1.0",
39
+ "@memberjunction/ng-shared": "4.1.0",
40
+ "@memberjunction/ng-shared-generic": "4.1.0",
41
+ "@memberjunction/templates-base-types": "4.1.0",
42
+ "tslib": "^2.8.1"
43
43
  },
44
44
  "sideEffects": false,
45
45
  "repository": {