@memberjunction/ng-export-service 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 ADDED
@@ -0,0 +1,229 @@
1
+ # @memberjunction/ng-export-service
2
+
3
+ Angular service and dialog component for exporting data to Excel, CSV, and JSON formats, with configurable sampling, column selection, and browser-side file download.
4
+
5
+ ## Overview
6
+
7
+ The `@memberjunction/ng-export-service` package wraps the [`@memberjunction/export-engine`](../../../ExportEngine/README.md) for Angular usage. It provides an injectable `ExportService` with format-specific convenience methods and an `ExportDialogComponent` that presents a progressive UI for format selection, row sampling, and one-click download.
8
+
9
+ ```mermaid
10
+ flowchart LR
11
+ subgraph Dialog["ExportDialogComponent"]
12
+ FMT[Format Selection] --> SAMP[Sampling Options]
13
+ SAMP --> PREV[Row Estimate Preview]
14
+ PREV --> DL[Export & Download]
15
+ end
16
+
17
+ subgraph Service["ExportService"]
18
+ EXP[export / toExcel / toCSV / toJSON]
19
+ DOWN[downloadResult]
20
+ BOTH[exportAndDownload]
21
+ end
22
+
23
+ subgraph Engine["@memberjunction/export-engine"]
24
+ EE[ExportEngine]
25
+ end
26
+
27
+ Dialog --> Service
28
+ Service --> Engine
29
+
30
+ style Dialog fill:#2d6a9f,stroke:#1a4971,color:#fff
31
+ style Service fill:#7c5295,stroke:#563a6b,color:#fff
32
+ style Engine fill:#2d8659,stroke:#1a5c3a,color:#fff
33
+ ```
34
+
35
+ ## Installation
36
+
37
+ ```bash
38
+ npm install @memberjunction/ng-export-service
39
+ ```
40
+
41
+ ## Usage
42
+
43
+ ### Import the Module
44
+
45
+ ```typescript
46
+ import { ExportServiceModule } from '@memberjunction/ng-export-service';
47
+
48
+ @NgModule({
49
+ imports: [ExportServiceModule]
50
+ })
51
+ export class YourModule { }
52
+ ```
53
+
54
+ ### Using the Export Dialog
55
+
56
+ ```html
57
+ @if (showExportDialog) {
58
+ <mj-export-dialog
59
+ [visible]="showExportDialog"
60
+ [config]="exportConfig"
61
+ (closed)="onExportDialogClosed($event)">
62
+ </mj-export-dialog>
63
+ }
64
+ ```
65
+
66
+ ```typescript
67
+ import { ExportDialogConfig, ExportDialogResult } from '@memberjunction/ng-export-service';
68
+
69
+ @Component({ ... })
70
+ export class MyComponent {
71
+ showExportDialog = false;
72
+ exportConfig: ExportDialogConfig | null = null;
73
+
74
+ openExport(data: Record<string, unknown>[]) {
75
+ this.exportConfig = {
76
+ data,
77
+ defaultFileName: 'contacts-export',
78
+ defaultFormat: 'excel',
79
+ showSamplingOptions: true,
80
+ dialogTitle: 'Export Contacts'
81
+ };
82
+ this.showExportDialog = true;
83
+ }
84
+
85
+ onExportDialogClosed(result: ExportDialogResult) {
86
+ this.showExportDialog = false;
87
+ if (result.exported) {
88
+ console.log('Exported successfully:', result.result?.fileName);
89
+ }
90
+ }
91
+ }
92
+ ```
93
+
94
+ ### Using the Service Directly
95
+
96
+ ```typescript
97
+ import { ExportService } from '@memberjunction/ng-export-service';
98
+ import { ExportData } from '@memberjunction/export-engine';
99
+
100
+ @Component({ ... })
101
+ export class MyComponent {
102
+ private exportService = inject(ExportService);
103
+
104
+ async exportToExcel(data: ExportData) {
105
+ // Export and immediately trigger browser download
106
+ const result = await this.exportService.exportAndDownload(data, {
107
+ format: 'excel',
108
+ fileName: 'my-data',
109
+ includeHeaders: true
110
+ });
111
+
112
+ if (!result.success) {
113
+ console.error('Export failed:', result.error);
114
+ }
115
+ }
116
+
117
+ async exportToCSV(data: ExportData) {
118
+ // Export with sampling -- only first 500 rows
119
+ const result = await this.exportService.toCSV(data, {
120
+ fileName: 'sample-data',
121
+ sampling: { mode: 'top', count: 500 }
122
+ });
123
+
124
+ if (result.success) {
125
+ this.exportService.downloadResult(result);
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ ## API Reference
132
+
133
+ ### ExportService
134
+
135
+ Root-provided Angular service wrapping `ExportEngine`.
136
+
137
+ | Method | Returns | Description |
138
+ |--------|---------|-------------|
139
+ | `export(data, options?)` | `Promise<ExportResult>` | Export data with full options |
140
+ | `toExcel(data, options?)` | `Promise<ExportResult>` | Export to Excel format |
141
+ | `toCSV(data, options?)` | `Promise<ExportResult>` | Export to CSV format |
142
+ | `toJSON(data, options?)` | `Promise<ExportResult>` | Export to JSON format |
143
+ | `getSupportedFormats()` | `ExportFormat[]` | List supported formats |
144
+ | `downloadResult(result)` | `void` | Trigger browser file download |
145
+ | `exportAndDownload(data, options?)` | `Promise<ExportResult>` | Export then download in one call |
146
+ | `getSamplingModes()` | `SamplingModeInfo[]` | Get sampling modes with labels |
147
+ | `getFormatInfo(format)` | `FormatInfo` | Get format label, icon, description |
148
+ | `buildSamplingOptions(mode, count?, interval?)` | `SamplingOptions` | Build sampling config from user selections |
149
+
150
+ ### ExportDialogComponent (`mj-export-dialog`)
151
+
152
+ Standalone export dialog with progressive UX.
153
+
154
+ #### Inputs
155
+
156
+ | Input | Type | Default | Description |
157
+ |-------|------|---------|-------------|
158
+ | `visible` | `boolean` | `false` | Controls dialog visibility |
159
+ | `config` | `ExportDialogConfig \| null` | `null` | Dialog configuration |
160
+
161
+ #### Outputs
162
+
163
+ | Output | Type | Description |
164
+ |--------|------|-------------|
165
+ | `closed` | `EventEmitter<ExportDialogResult>` | Emitted when dialog closes |
166
+
167
+ ### ExportDialogConfig
168
+
169
+ ```typescript
170
+ interface ExportDialogConfig {
171
+ data: ExportData;
172
+ columns?: ExportColumn[];
173
+ defaultFileName?: string;
174
+ availableFormats?: ExportFormat[];
175
+ defaultFormat?: ExportFormat;
176
+ showSamplingOptions?: boolean;
177
+ defaultSamplingMode?: SamplingMode;
178
+ defaultSampleCount?: number;
179
+ dialogTitle?: string;
180
+ }
181
+ ```
182
+
183
+ ### ExportDialogResult
184
+
185
+ ```typescript
186
+ interface ExportDialogResult {
187
+ exported: boolean;
188
+ result?: ExportResult;
189
+ options?: ExportOptions;
190
+ }
191
+ ```
192
+
193
+ ### Sampling Modes
194
+
195
+ | Mode | Description |
196
+ |------|-------------|
197
+ | `all` | Export all data rows |
198
+ | `top` | Export the first N rows |
199
+ | `bottom` | Export the last N rows |
200
+ | `every-nth` | Export every Nth row |
201
+ | `random` | Export N random rows |
202
+
203
+ ## Dependencies
204
+
205
+ ### Runtime Dependencies
206
+
207
+ | Package | Description |
208
+ |---------|-------------|
209
+ | `@memberjunction/export-engine` | Core export engine with format support |
210
+
211
+ ### Peer Dependencies
212
+
213
+ - `@angular/common` ^21.x
214
+ - `@angular/core` ^21.x
215
+ - `@angular/forms` ^21.x
216
+ - `@angular/cdk` ^21.x
217
+
218
+ **Note:** For export types (`ExportFormat`, `ExportOptions`, `ExportResult`, etc.), import directly from `@memberjunction/export-engine`.
219
+
220
+ ## Build
221
+
222
+ ```bash
223
+ cd packages/Angular/Generic/export-service
224
+ npm run build
225
+ ```
226
+
227
+ ## License
228
+
229
+ ISC
@@ -1 +1 @@
1
- {"version":3,"file":"export-dialog.component.d.ts","sourceRoot":"","sources":["../../src/lib/export-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,YAAY,EAGZ,YAAY,EAGb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;;AAEzF;;;;;;;;;;GAUG;AACH,qBAKa,qBAAqB;IAkB9B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IAjBb,cAAc,EAAE,YAAY,CAAW;IACvC,QAAQ,SAAY;IACpB,cAAc,UAAQ;IACtB,YAAY,EAAE,YAAY,CAAS;IACnC,WAAW,SAAO;IAClB,cAAc,SAAM;IAGpB,WAAW,UAAS;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGlC,gBAAgB,EAAE,YAAY,EAAE,CAA4B;IAC5D,aAAa,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;gBAGlE,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,iBAAiB;IAKhC,OAAO,CAAC,QAAQ,CAAS;IACzB,IACI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAMzB;IAEQ,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAExC,MAAM,mCAA0C;IAE1D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY;;;;;IAIlC;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAc1B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAehC;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C/B;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;yCA/MU,qBAAqB;2CAArB,qBAAqB;CAgNjC"}
1
+ {"version":3,"file":"export-dialog.component.d.ts","sourceRoot":"","sources":["../../src/lib/export-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,YAAY,EAGZ,YAAY,EAGb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;;AAEzF;;;;;;;;;;GAUG;AACH,qBAMa,qBAAqB;IAkB9B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IAjBb,cAAc,EAAE,YAAY,CAAW;IACvC,QAAQ,SAAY;IACpB,cAAc,UAAQ;IACtB,YAAY,EAAE,YAAY,CAAS;IACnC,WAAW,SAAO;IAClB,cAAc,SAAM;IAGpB,WAAW,UAAS;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGlC,gBAAgB,EAAE,YAAY,EAAE,CAA4B;IAC5D,aAAa,EAAE;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;gBAGlE,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,iBAAiB;IAKhC,OAAO,CAAC,QAAQ,CAAS;IACzB,IACI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAMzB;IAEQ,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAExC,MAAM,mCAA0C;IAE1D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY;;;;;IAIlC;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAc1B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAehC;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKxC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C/B;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;yCA/MU,qBAAqB;2CAArB,qBAAqB;CAgNjC"}
@@ -20,7 +20,7 @@ function ExportDialogComponent_Conditional_0_For_13_Template(rf, ctx) { if (rf &
20
20
  const ctx_r1 = i0.ɵɵnextContext(2);
21
21
  i0.ɵɵclassProp("selected", ctx_r1.selectedFormat === format_r4);
22
22
  i0.ɵɵadvance();
23
- i0.ɵɵclassMapInterpolate1("fa-solid ", ctx_r1.getFormatInfo(format_r4).icon, " mj-export-format-icon");
23
+ i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa-solid ", ctx_r1.getFormatInfo(format_r4).icon, " mj-export-format-icon"));
24
24
  i0.ɵɵadvance(2);
25
25
  i0.ɵɵtextInterpolate(ctx_r1.getFormatInfo(format_r4).label);
26
26
  i0.ɵɵadvance(2);
@@ -65,7 +65,8 @@ function ExportDialogComponent_Conditional_0_Conditional_27_Template(rf, ctx) {
65
65
  i0.ɵɵtwoWayListener("ngModelChange", function ExportDialogComponent_Conditional_0_Conditional_27_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.samplingMode, $event) || (ctx_r1.samplingMode = $event); return i0.ɵɵresetView($event); });
66
66
  i0.ɵɵrepeaterCreate(5, ExportDialogComponent_Conditional_0_Conditional_27_For_6_Template, 2, 2, "option", 33, _forTrack0);
67
67
  i0.ɵɵelementEnd();
68
- i0.ɵɵtemplate(7, ExportDialogComponent_Conditional_0_Conditional_27_Conditional_7_Template, 1, 3, "input", 34)(8, ExportDialogComponent_Conditional_0_Conditional_27_Conditional_8_Template, 1, 3, "input", 35);
68
+ i0.ɵɵconditionalCreate(7, ExportDialogComponent_Conditional_0_Conditional_27_Conditional_7_Template, 1, 3, "input", 34);
69
+ i0.ɵɵconditionalCreate(8, ExportDialogComponent_Conditional_0_Conditional_27_Conditional_8_Template, 1, 3, "input", 35);
69
70
  i0.ɵɵelementEnd();
70
71
  i0.ɵɵelementStart(9, "div", 36);
71
72
  i0.ɵɵtext(10);
@@ -135,7 +136,7 @@ function ExportDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
135
136
  i0.ɵɵelementStart(25, "span");
136
137
  i0.ɵɵtext(26, "Include column headers");
137
138
  i0.ɵɵelementEnd()()();
138
- i0.ɵɵtemplate(27, ExportDialogComponent_Conditional_0_Conditional_27_Template, 11, 4, "div", 7);
139
+ i0.ɵɵconditionalCreate(27, ExportDialogComponent_Conditional_0_Conditional_27_Template, 11, 4, "div", 7);
139
140
  i0.ɵɵelementStart(28, "div", 19)(29, "div", 20)(30, "span", 21);
140
141
  i0.ɵɵtext(31, "Total rows available");
141
142
  i0.ɵɵelementEnd();
@@ -150,11 +151,11 @@ function ExportDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
150
151
  i0.ɵɵtext(39);
151
152
  i0.ɵɵpipe(40, "number");
152
153
  i0.ɵɵelementEnd()()();
153
- i0.ɵɵtemplate(41, ExportDialogComponent_Conditional_0_Conditional_41_Template, 3, 1, "div", 24);
154
+ i0.ɵɵconditionalCreate(41, ExportDialogComponent_Conditional_0_Conditional_41_Template, 3, 1, "div", 24);
154
155
  i0.ɵɵelementEnd();
155
156
  i0.ɵɵelementStart(42, "div", 25)(43, "button", 26);
156
157
  i0.ɵɵlistener("click", function ExportDialogComponent_Conditional_0_Template_button_click_43_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onExport()); });
157
- i0.ɵɵtemplate(44, ExportDialogComponent_Conditional_0_Conditional_44_Template, 2, 0)(45, ExportDialogComponent_Conditional_0_Conditional_45_Template, 2, 0);
158
+ i0.ɵɵconditionalCreate(44, ExportDialogComponent_Conditional_0_Conditional_44_Template, 2, 0)(45, ExportDialogComponent_Conditional_0_Conditional_45_Template, 2, 0);
158
159
  i0.ɵɵelementEnd();
159
160
  i0.ɵɵelementStart(46, "button", 27);
160
161
  i0.ɵɵlistener("click", function ExportDialogComponent_Conditional_0_Template_button_click_46_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
@@ -383,15 +384,15 @@ export class ExportDialogComponent {
383
384
  return this.config?.dialogTitle || 'Export Data';
384
385
  }
385
386
  static ɵfac = function ExportDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ExportDialogComponent)(i0.ɵɵdirectiveInject(i1.ExportService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
386
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExportDialogComponent, selectors: [["mj-export-dialog"]], inputs: { visible: "visible", config: "config" }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "mj-export-backdrop", 3, "click"], ["role", "dialog", "aria-modal", "true", 1, "mj-export-dialog"], [1, "mj-export-header"], ["id", "export-dialog-title"], ["type", "button", "aria-label", "Close", 1, "mj-export-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "mj-export-content"], [1, "mj-export-section"], [1, "mj-export-label"], [1, "mj-export-formats"], ["type", "button", 1, "mj-export-format-btn", 3, "selected"], ["for", "exportFileName", 1, "mj-export-label"], [1, "mj-export-input-group"], ["type", "text", "id", "exportFileName", "placeholder", "Enter file name", 1, "mj-export-input", 3, "ngModelChange", "ngModel"], [1, "mj-export-input-hint"], [1, "mj-export-section", "mj-export-checkbox-section"], [1, "mj-export-checkbox"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "mj-export-checkbox-mark"], [1, "mj-export-section", "mj-export-summary"], [1, "mj-export-summary-row"], [1, "mj-export-summary-label"], [1, "mj-export-summary-value"], [1, "mj-export-summary-value", "mj-export-highlight"], [1, "mj-export-error"], [1, "mj-export-actions"], ["type", "button", 1, "mj-export-btn", "mj-export-btn-primary", 3, "click", "disabled"], ["type", "button", 1, "mj-export-btn", "mj-export-btn-secondary", 3, "click", "disabled"], ["type", "button", 1, "mj-export-format-btn", 3, "click"], [1, "mj-export-format-label"], [1, "mj-export-format-desc"], [1, "mj-export-sampling-row"], [1, "mj-export-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["type", "number", "placeholder", "Count", 1, "mj-export-number-input", 3, "ngModel", "min", "max"], ["type", "number", "placeholder", "Interval", 1, "mj-export-number-input", 3, "ngModel", "min", "max"], [1, "mj-export-sampling-desc"], ["type", "number", "placeholder", "Count", 1, "mj-export-number-input", 3, "ngModelChange", "ngModel", "min", "max"], ["type", "number", "placeholder", "Interval", 1, "mj-export-number-input", 3, "ngModelChange", "ngModel", "min", "max"], [1, "fa-solid", "fa-exclamation-circle"], [1, "fa-solid", "fa-download"], [1, "fa-solid", "fa-spinner", "fa-spin"]], template: function ExportDialogComponent_Template(rf, ctx) { if (rf & 1) {
387
- i0.ɵɵtemplate(0, ExportDialogComponent_Conditional_0_Template, 48, 15);
387
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExportDialogComponent, selectors: [["mj-export-dialog"]], inputs: { visible: "visible", config: "config" }, outputs: { closed: "closed" }, standalone: false, decls: 1, vars: 1, consts: [[1, "mj-export-backdrop", 3, "click"], ["role", "dialog", "aria-modal", "true", 1, "mj-export-dialog"], [1, "mj-export-header"], ["id", "export-dialog-title"], ["type", "button", "aria-label", "Close", 1, "mj-export-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "mj-export-content"], [1, "mj-export-section"], [1, "mj-export-label"], [1, "mj-export-formats"], ["type", "button", 1, "mj-export-format-btn", 3, "selected"], ["for", "exportFileName", 1, "mj-export-label"], [1, "mj-export-input-group"], ["type", "text", "id", "exportFileName", "placeholder", "Enter file name", 1, "mj-export-input", 3, "ngModelChange", "ngModel"], [1, "mj-export-input-hint"], [1, "mj-export-section", "mj-export-checkbox-section"], [1, "mj-export-checkbox"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "mj-export-checkbox-mark"], [1, "mj-export-section", "mj-export-summary"], [1, "mj-export-summary-row"], [1, "mj-export-summary-label"], [1, "mj-export-summary-value"], [1, "mj-export-summary-value", "mj-export-highlight"], [1, "mj-export-error"], [1, "mj-export-actions"], ["type", "button", 1, "mj-export-btn", "mj-export-btn-primary", 3, "click", "disabled"], ["type", "button", 1, "mj-export-btn", "mj-export-btn-secondary", 3, "click", "disabled"], ["type", "button", 1, "mj-export-format-btn", 3, "click"], [1, "mj-export-format-label"], [1, "mj-export-format-desc"], [1, "mj-export-sampling-row"], [1, "mj-export-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["type", "number", "placeholder", "Count", 1, "mj-export-number-input", 3, "ngModel", "min", "max"], ["type", "number", "placeholder", "Interval", 1, "mj-export-number-input", 3, "ngModel", "min", "max"], [1, "mj-export-sampling-desc"], ["type", "number", "placeholder", "Count", 1, "mj-export-number-input", 3, "ngModelChange", "ngModel", "min", "max"], ["type", "number", "placeholder", "Interval", 1, "mj-export-number-input", 3, "ngModelChange", "ngModel", "min", "max"], [1, "fa-solid", "fa-exclamation-circle"], [1, "fa-solid", "fa-download"], [1, "fa-solid", "fa-spinner", "fa-spin"]], template: function ExportDialogComponent_Template(rf, ctx) { if (rf & 1) {
388
+ i0.ɵɵconditionalCreate(0, ExportDialogComponent_Conditional_0_Template, 48, 15);
388
389
  } if (rf & 2) {
389
390
  i0.ɵɵconditional(ctx.visible ? 0 : -1);
390
391
  } }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.MinValidator, i2.MaxValidator, i2.NgModel, i3.DecimalPipe], styles: ["\n\n\n\n\n.mj-export-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(2px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease-out;\n}\n\n\n\n.mj-export-dialog[_ngcontent-%COMP%] {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: #ffffff;\n border-radius: 12px;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n width: 480px;\n max-width: 95vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n z-index: 1001;\n animation: _ngcontent-%COMP%_slideIn 0.2s ease-out;\n}\n\n\n\n.mj-export-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.mj-export-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.mj-export-close[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #6b7280;\n border-radius: 6px;\n transition: all 0.15s ease;\n}\n\n.mj-export-close[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n color: #374151;\n}\n\n\n\n.mj-export-content[_ngcontent-%COMP%] {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n\n\n.mj-export-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.mj-export-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.mj-export-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n margin-bottom: 8px;\n}\n\n\n\n.mj-export-formats[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n}\n\n.mj-export-format-btn[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 16px 12px;\n border: 2px solid #e5e7eb;\n border-radius: 10px;\n background: #ffffff;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mj-export-format-btn[_ngcontent-%COMP%]:hover {\n border-color: #3b82f6;\n background: #f0f9ff;\n}\n\n.mj-export-format-btn.selected[_ngcontent-%COMP%] {\n border-color: #3b82f6;\n background: #eff6ff;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-format-icon[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n color: #6b7280;\n}\n\n.mj-export-format-btn.selected[_ngcontent-%COMP%] .mj-export-format-icon[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n.mj-export-format-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n margin-bottom: 4px;\n}\n\n.mj-export-format-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6b7280;\n text-align: center;\n}\n\n\n\n.mj-export-input-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.mj-export-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n transition: all 0.15s ease;\n box-sizing: border-box;\n}\n\n.mj-export-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-input-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #9ca3af;\n margin-top: 4px;\n}\n\n\n\n.mj-export-checkbox-section[_ngcontent-%COMP%] {\n padding: 12px 0;\n}\n\n.mj-export-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.mj-export-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n accent-color: #3b82f6;\n cursor: pointer;\n}\n\n\n\n.mj-export-select[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n background: #ffffff;\n cursor: pointer;\n min-width: 160px;\n transition: all 0.15s ease;\n}\n\n.mj-export-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n\n\n.mj-export-sampling-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.mj-export-number-input[_ngcontent-%COMP%] {\n width: 100px;\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n transition: all 0.15s ease;\n}\n\n.mj-export-number-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-sampling-desc[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-top: 8px;\n font-style: italic;\n}\n\n\n\n.mj-export-summary[_ngcontent-%COMP%] {\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px;\n}\n\n.mj-export-summary-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 6px 0;\n}\n\n.mj-export-summary-label[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #6b7280;\n}\n\n.mj-export-summary-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n}\n\n.mj-export-highlight[_ngcontent-%COMP%] {\n color: #3b82f6;\n font-size: 16px;\n}\n\n\n\n.mj-export-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n margin-top: 16px;\n}\n\n\n\n.mj-export-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n border-radius: 0 0 12px 12px;\n}\n\n.mj-export-btn[_ngcontent-%COMP%] {\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.15s ease;\n border: none;\n}\n\n.mj-export-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-export-btn-primary[_ngcontent-%COMP%] {\n background: #3b82f6;\n color: #ffffff;\n}\n\n.mj-export-btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #2563eb;\n}\n\n.mj-export-btn-secondary[_ngcontent-%COMP%] {\n background: #ffffff;\n color: #374151;\n border: 1px solid #d1d5db;\n}\n\n.mj-export-btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #f3f4f6;\n}\n\n\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes _ngcontent-%COMP%_slideIn {\n from {\n opacity: 0;\n transform: translate(-50%, -48%);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%);\n }\n}\n\n\n\n.fa-spin[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_spin 1s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}"] });
391
392
  }
392
393
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExportDialogComponent, [{
393
394
  type: Component,
394
- args: [{ selector: 'mj-export-dialog', template: "<!-- Backdrop -->\n@if (visible) {\n <div class=\"mj-export-backdrop\" (click)=\"onCancel()\"></div>\n\n <!-- Dialog -->\n <div class=\"mj-export-dialog\" role=\"dialog\" aria-modal=\"true\" [attr.aria-labelledby]=\"'export-dialog-title'\">\n <!-- Header -->\n <div class=\"mj-export-header\">\n <h2 id=\"export-dialog-title\">{{ dialogTitle }}</h2>\n <button type=\"button\" class=\"mj-export-close\" (click)=\"onCancel()\" aria-label=\"Close\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"mj-export-content\">\n <!-- Format Selection -->\n <div class=\"mj-export-section\">\n <label class=\"mj-export-label\">Export Format</label>\n <div class=\"mj-export-formats\">\n @for (format of availableFormats; track format) {\n <button\n type=\"button\"\n class=\"mj-export-format-btn\"\n [class.selected]=\"selectedFormat === format\"\n (click)=\"selectFormat(format)\">\n <span class=\"fa-solid {{ getFormatInfo(format).icon }} mj-export-format-icon\"></span>\n <span class=\"mj-export-format-label\">{{ getFormatInfo(format).label }}</span>\n <span class=\"mj-export-format-desc\">{{ getFormatInfo(format).description }}</span>\n </button>\n }\n </div>\n </div>\n\n <!-- File Name -->\n <div class=\"mj-export-section\">\n <label class=\"mj-export-label\" for=\"exportFileName\">File Name</label>\n <div class=\"mj-export-input-group\">\n <input\n type=\"text\"\n id=\"exportFileName\"\n class=\"mj-export-input\"\n [(ngModel)]=\"fileName\"\n placeholder=\"Enter file name\" />\n <span class=\"mj-export-input-hint\">Extension added automatically</span>\n </div>\n </div>\n\n <!-- Include Headers -->\n <div class=\"mj-export-section mj-export-checkbox-section\">\n <label class=\"mj-export-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"includeHeaders\" />\n <span class=\"mj-export-checkbox-mark\"></span>\n <span>Include column headers</span>\n </label>\n </div>\n\n <!-- Row Selection (Sampling) -->\n @if (showSamplingOptions) {\n <div class=\"mj-export-section\">\n <label class=\"mj-export-label\">Row Selection</label>\n <div class=\"mj-export-sampling-row\">\n <select class=\"mj-export-select\" [(ngModel)]=\"samplingMode\">\n @for (mode of samplingModes; track mode.mode) {\n <option [value]=\"mode.mode\">{{ mode.label }}</option>\n }\n </select>\n\n @if (needsSampleCount) {\n <input\n type=\"number\"\n class=\"mj-export-number-input\"\n [(ngModel)]=\"sampleCount\"\n [min]=\"1\"\n [max]=\"totalRows\"\n placeholder=\"Count\" />\n }\n\n @if (needsSampleInterval) {\n <input\n type=\"number\"\n class=\"mj-export-number-input\"\n [(ngModel)]=\"sampleInterval\"\n [min]=\"2\"\n [max]=\"totalRows\"\n placeholder=\"Interval\" />\n }\n </div>\n <div class=\"mj-export-sampling-desc\">\n {{ samplingDescription }}\n </div>\n </div>\n }\n\n <!-- Summary -->\n <div class=\"mj-export-section mj-export-summary\">\n <div class=\"mj-export-summary-row\">\n <span class=\"mj-export-summary-label\">Total rows available</span>\n <span class=\"mj-export-summary-value\">{{ totalRows | number }}</span>\n </div>\n <div class=\"mj-export-summary-row\">\n <span class=\"mj-export-summary-label\">Rows to export</span>\n <span class=\"mj-export-summary-value mj-export-highlight\">{{ estimatedRows | number }}</span>\n </div>\n </div>\n\n <!-- Error Message -->\n @if (exportError) {\n <div class=\"mj-export-error\">\n <span class=\"fa-solid fa-exclamation-circle\"></span>\n {{ exportError }}\n </div>\n }\n </div>\n\n <!-- Footer Actions -->\n <div class=\"mj-export-actions\">\n <button\n type=\"button\"\n class=\"mj-export-btn mj-export-btn-primary\"\n (click)=\"onExport()\"\n [disabled]=\"isExporting\">\n @if (!isExporting) {\n <span class=\"fa-solid fa-download\"></span>\n Export\n } @else {\n <span class=\"fa-solid fa-spinner fa-spin\"></span>\n Exporting...\n }\n </button>\n <button\n type=\"button\"\n class=\"mj-export-btn mj-export-btn-secondary\"\n (click)=\"onCancel()\"\n [disabled]=\"isExporting\">\n Cancel\n </button>\n </div>\n </div>\n}\n", styles: ["/* MJ Export Dialog - Modern, gorgeous pure Angular styling */\n\n/* Backdrop */\n.mj-export-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(2px);\n z-index: 1000;\n animation: fadeIn 0.15s ease-out;\n}\n\n/* Dialog Container */\n.mj-export-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: #ffffff;\n border-radius: 12px;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n width: 480px;\n max-width: 95vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n z-index: 1001;\n animation: slideIn 0.2s ease-out;\n}\n\n/* Header */\n.mj-export-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.mj-export-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.mj-export-close {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #6b7280;\n border-radius: 6px;\n transition: all 0.15s ease;\n}\n\n.mj-export-close:hover {\n background: #f3f4f6;\n color: #374151;\n}\n\n/* Content */\n.mj-export-content {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n/* Sections */\n.mj-export-section {\n margin-bottom: 24px;\n}\n\n.mj-export-section:last-child {\n margin-bottom: 0;\n}\n\n.mj-export-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n margin-bottom: 8px;\n}\n\n/* Format Selection Buttons */\n.mj-export-formats {\n display: flex;\n gap: 12px;\n}\n\n.mj-export-format-btn {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 16px 12px;\n border: 2px solid #e5e7eb;\n border-radius: 10px;\n background: #ffffff;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mj-export-format-btn:hover {\n border-color: #3b82f6;\n background: #f0f9ff;\n}\n\n.mj-export-format-btn.selected {\n border-color: #3b82f6;\n background: #eff6ff;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-format-icon {\n font-size: 24px;\n margin-bottom: 8px;\n color: #6b7280;\n}\n\n.mj-export-format-btn.selected .mj-export-format-icon {\n color: #3b82f6;\n}\n\n.mj-export-format-label {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n margin-bottom: 4px;\n}\n\n.mj-export-format-desc {\n font-size: 11px;\n color: #6b7280;\n text-align: center;\n}\n\n/* Input Group */\n.mj-export-input-group {\n display: flex;\n flex-direction: column;\n}\n\n.mj-export-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n transition: all 0.15s ease;\n box-sizing: border-box;\n}\n\n.mj-export-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-input-hint {\n font-size: 12px;\n color: #9ca3af;\n margin-top: 4px;\n}\n\n/* Checkbox */\n.mj-export-checkbox-section {\n padding: 12px 0;\n}\n\n.mj-export-checkbox {\n display: flex;\n align-items: center;\n gap: 10px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.mj-export-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n accent-color: #3b82f6;\n cursor: pointer;\n}\n\n/* Select Dropdown */\n.mj-export-select {\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n background: #ffffff;\n cursor: pointer;\n min-width: 160px;\n transition: all 0.15s ease;\n}\n\n.mj-export-select:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n/* Sampling Row */\n.mj-export-sampling-row {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.mj-export-number-input {\n width: 100px;\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n transition: all 0.15s ease;\n}\n\n.mj-export-number-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-sampling-desc {\n font-size: 13px;\n color: #6b7280;\n margin-top: 8px;\n font-style: italic;\n}\n\n/* Summary Section */\n.mj-export-summary {\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px;\n}\n\n.mj-export-summary-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 6px 0;\n}\n\n.mj-export-summary-label {\n font-size: 14px;\n color: #6b7280;\n}\n\n.mj-export-summary-value {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n}\n\n.mj-export-highlight {\n color: #3b82f6;\n font-size: 16px;\n}\n\n/* Error Message */\n.mj-export-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n margin-top: 16px;\n}\n\n/* Footer Actions */\n.mj-export-actions {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n border-radius: 0 0 12px 12px;\n}\n\n.mj-export-btn {\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.15s ease;\n border: none;\n}\n\n.mj-export-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-export-btn-primary {\n background: #3b82f6;\n color: #ffffff;\n}\n\n.mj-export-btn-primary:hover:not(:disabled) {\n background: #2563eb;\n}\n\n.mj-export-btn-secondary {\n background: #ffffff;\n color: #374151;\n border: 1px solid #d1d5db;\n}\n\n.mj-export-btn-secondary:hover:not(:disabled) {\n background: #f3f4f6;\n}\n\n/* Animations */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideIn {\n from {\n opacity: 0;\n transform: translate(-50%, -48%);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%);\n }\n}\n\n/* Spinner animation */\n.fa-spin {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n"] }]
395
+ args: [{ standalone: false, selector: 'mj-export-dialog', template: "<!-- Backdrop -->\n@if (visible) {\n <div class=\"mj-export-backdrop\" (click)=\"onCancel()\"></div>\n\n <!-- Dialog -->\n <div class=\"mj-export-dialog\" role=\"dialog\" aria-modal=\"true\" [attr.aria-labelledby]=\"'export-dialog-title'\">\n <!-- Header -->\n <div class=\"mj-export-header\">\n <h2 id=\"export-dialog-title\">{{ dialogTitle }}</h2>\n <button type=\"button\" class=\"mj-export-close\" (click)=\"onCancel()\" aria-label=\"Close\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"mj-export-content\">\n <!-- Format Selection -->\n <div class=\"mj-export-section\">\n <label class=\"mj-export-label\">Export Format</label>\n <div class=\"mj-export-formats\">\n @for (format of availableFormats; track format) {\n <button\n type=\"button\"\n class=\"mj-export-format-btn\"\n [class.selected]=\"selectedFormat === format\"\n (click)=\"selectFormat(format)\">\n <span class=\"fa-solid {{ getFormatInfo(format).icon }} mj-export-format-icon\"></span>\n <span class=\"mj-export-format-label\">{{ getFormatInfo(format).label }}</span>\n <span class=\"mj-export-format-desc\">{{ getFormatInfo(format).description }}</span>\n </button>\n }\n </div>\n </div>\n\n <!-- File Name -->\n <div class=\"mj-export-section\">\n <label class=\"mj-export-label\" for=\"exportFileName\">File Name</label>\n <div class=\"mj-export-input-group\">\n <input\n type=\"text\"\n id=\"exportFileName\"\n class=\"mj-export-input\"\n [(ngModel)]=\"fileName\"\n placeholder=\"Enter file name\" />\n <span class=\"mj-export-input-hint\">Extension added automatically</span>\n </div>\n </div>\n\n <!-- Include Headers -->\n <div class=\"mj-export-section mj-export-checkbox-section\">\n <label class=\"mj-export-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"includeHeaders\" />\n <span class=\"mj-export-checkbox-mark\"></span>\n <span>Include column headers</span>\n </label>\n </div>\n\n <!-- Row Selection (Sampling) -->\n @if (showSamplingOptions) {\n <div class=\"mj-export-section\">\n <label class=\"mj-export-label\">Row Selection</label>\n <div class=\"mj-export-sampling-row\">\n <select class=\"mj-export-select\" [(ngModel)]=\"samplingMode\">\n @for (mode of samplingModes; track mode.mode) {\n <option [value]=\"mode.mode\">{{ mode.label }}</option>\n }\n </select>\n\n @if (needsSampleCount) {\n <input\n type=\"number\"\n class=\"mj-export-number-input\"\n [(ngModel)]=\"sampleCount\"\n [min]=\"1\"\n [max]=\"totalRows\"\n placeholder=\"Count\" />\n }\n\n @if (needsSampleInterval) {\n <input\n type=\"number\"\n class=\"mj-export-number-input\"\n [(ngModel)]=\"sampleInterval\"\n [min]=\"2\"\n [max]=\"totalRows\"\n placeholder=\"Interval\" />\n }\n </div>\n <div class=\"mj-export-sampling-desc\">\n {{ samplingDescription }}\n </div>\n </div>\n }\n\n <!-- Summary -->\n <div class=\"mj-export-section mj-export-summary\">\n <div class=\"mj-export-summary-row\">\n <span class=\"mj-export-summary-label\">Total rows available</span>\n <span class=\"mj-export-summary-value\">{{ totalRows | number }}</span>\n </div>\n <div class=\"mj-export-summary-row\">\n <span class=\"mj-export-summary-label\">Rows to export</span>\n <span class=\"mj-export-summary-value mj-export-highlight\">{{ estimatedRows | number }}</span>\n </div>\n </div>\n\n <!-- Error Message -->\n @if (exportError) {\n <div class=\"mj-export-error\">\n <span class=\"fa-solid fa-exclamation-circle\"></span>\n {{ exportError }}\n </div>\n }\n </div>\n\n <!-- Footer Actions -->\n <div class=\"mj-export-actions\">\n <button\n type=\"button\"\n class=\"mj-export-btn mj-export-btn-primary\"\n (click)=\"onExport()\"\n [disabled]=\"isExporting\">\n @if (!isExporting) {\n <span class=\"fa-solid fa-download\"></span>\n Export\n } @else {\n <span class=\"fa-solid fa-spinner fa-spin\"></span>\n Exporting...\n }\n </button>\n <button\n type=\"button\"\n class=\"mj-export-btn mj-export-btn-secondary\"\n (click)=\"onCancel()\"\n [disabled]=\"isExporting\">\n Cancel\n </button>\n </div>\n </div>\n}\n", styles: ["/* MJ Export Dialog - Modern, gorgeous pure Angular styling */\n\n/* Backdrop */\n.mj-export-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(2px);\n z-index: 1000;\n animation: fadeIn 0.15s ease-out;\n}\n\n/* Dialog Container */\n.mj-export-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: #ffffff;\n border-radius: 12px;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n width: 480px;\n max-width: 95vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n z-index: 1001;\n animation: slideIn 0.2s ease-out;\n}\n\n/* Header */\n.mj-export-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.mj-export-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.mj-export-close {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #6b7280;\n border-radius: 6px;\n transition: all 0.15s ease;\n}\n\n.mj-export-close:hover {\n background: #f3f4f6;\n color: #374151;\n}\n\n/* Content */\n.mj-export-content {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n/* Sections */\n.mj-export-section {\n margin-bottom: 24px;\n}\n\n.mj-export-section:last-child {\n margin-bottom: 0;\n}\n\n.mj-export-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n margin-bottom: 8px;\n}\n\n/* Format Selection Buttons */\n.mj-export-formats {\n display: flex;\n gap: 12px;\n}\n\n.mj-export-format-btn {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 16px 12px;\n border: 2px solid #e5e7eb;\n border-radius: 10px;\n background: #ffffff;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mj-export-format-btn:hover {\n border-color: #3b82f6;\n background: #f0f9ff;\n}\n\n.mj-export-format-btn.selected {\n border-color: #3b82f6;\n background: #eff6ff;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-format-icon {\n font-size: 24px;\n margin-bottom: 8px;\n color: #6b7280;\n}\n\n.mj-export-format-btn.selected .mj-export-format-icon {\n color: #3b82f6;\n}\n\n.mj-export-format-label {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n margin-bottom: 4px;\n}\n\n.mj-export-format-desc {\n font-size: 11px;\n color: #6b7280;\n text-align: center;\n}\n\n/* Input Group */\n.mj-export-input-group {\n display: flex;\n flex-direction: column;\n}\n\n.mj-export-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n transition: all 0.15s ease;\n box-sizing: border-box;\n}\n\n.mj-export-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-input-hint {\n font-size: 12px;\n color: #9ca3af;\n margin-top: 4px;\n}\n\n/* Checkbox */\n.mj-export-checkbox-section {\n padding: 12px 0;\n}\n\n.mj-export-checkbox {\n display: flex;\n align-items: center;\n gap: 10px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.mj-export-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n accent-color: #3b82f6;\n cursor: pointer;\n}\n\n/* Select Dropdown */\n.mj-export-select {\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n background: #ffffff;\n cursor: pointer;\n min-width: 160px;\n transition: all 0.15s ease;\n}\n\n.mj-export-select:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n/* Sampling Row */\n.mj-export-sampling-row {\n display: flex;\n gap: 12px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.mj-export-number-input {\n width: 100px;\n padding: 10px 14px;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n font-size: 14px;\n color: #111827;\n transition: all 0.15s ease;\n}\n\n.mj-export-number-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n}\n\n.mj-export-sampling-desc {\n font-size: 13px;\n color: #6b7280;\n margin-top: 8px;\n font-style: italic;\n}\n\n/* Summary Section */\n.mj-export-summary {\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px;\n}\n\n.mj-export-summary-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 6px 0;\n}\n\n.mj-export-summary-label {\n font-size: 14px;\n color: #6b7280;\n}\n\n.mj-export-summary-value {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n}\n\n.mj-export-highlight {\n color: #3b82f6;\n font-size: 16px;\n}\n\n/* Error Message */\n.mj-export-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n margin-top: 16px;\n}\n\n/* Footer Actions */\n.mj-export-actions {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n border-top: 1px solid #e5e7eb;\n background: #f9fafb;\n border-radius: 0 0 12px 12px;\n}\n\n.mj-export-btn {\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: all 0.15s ease;\n border: none;\n}\n\n.mj-export-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mj-export-btn-primary {\n background: #3b82f6;\n color: #ffffff;\n}\n\n.mj-export-btn-primary:hover:not(:disabled) {\n background: #2563eb;\n}\n\n.mj-export-btn-secondary {\n background: #ffffff;\n color: #374151;\n border: 1px solid #d1d5db;\n}\n\n.mj-export-btn-secondary:hover:not(:disabled) {\n background: #f3f4f6;\n}\n\n/* Animations */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideIn {\n from {\n opacity: 0;\n transform: translate(-50%, -48%);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%);\n }\n}\n\n/* Spinner animation */\n.fa-spin {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n"] }]
395
396
  }], () => [{ type: i1.ExportService }, { type: i0.ChangeDetectorRef }], { visible: [{
396
397
  type: Input
397
398
  }], config: [{
@@ -399,5 +400,5 @@ export class ExportDialogComponent {
399
400
  }], closed: [{
400
401
  type: Output
401
402
  }] }); })();
402
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExportDialogComponent, { className: "ExportDialogComponent", filePath: "src/lib/export-dialog.component.ts", lineNumber: 28 }); })();
403
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExportDialogComponent, { className: "ExportDialogComponent", filePath: "src/lib/export-dialog.component.ts", lineNumber: 29 }); })();
403
404
  //# sourceMappingURL=export-dialog.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-dialog.component.js","sourceRoot":"","sources":["../../src/lib/export-dialog.component.ts","../../src/lib/export-dialog.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-dialog.component.js","sourceRoot":"","sources":["../../src/lib/export-dialog.component.ts","../../src/lib/export-dialog.component.html"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.service.js","sourceRoot":"","sources":["../../src/lib/export.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.service.js","sourceRoot":"","sources":["../../src/lib/export.service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  export * from './lib/module';
2
2
  export * from './lib/export.service';
3
3
  export * from './lib/export-dialog.component';
4
- export declare function LoadExportService(): void;
5
4
  //# sourceMappingURL=public-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAKA,cAAc,cAAc,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,+BAA+B,CAAC;AAG9C,wBAAgB,iBAAiB,SAAK"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAKA,cAAc,cAAc,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,+BAA+B,CAAC"}
@@ -7,7 +7,5 @@ export * from './lib/module';
7
7
  export * from './lib/export.service';
8
8
  // Components
9
9
  export * from './lib/export-dialog.component';
10
- // Prevent tree-shaking
11
- export function LoadExportService() { }
12
10
  // NOTE: For export types (ExportFormat, ExportOptions, etc.), import directly from @memberjunction/export-engine
13
11
  //# sourceMappingURL=public-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,cAAc,cAAc,CAAC;AAE7B,UAAU;AACV,cAAc,sBAAsB,CAAC;AAErC,aAAa;AACb,cAAc,+BAA+B,CAAC;AAE9C,uBAAuB;AACvB,MAAM,UAAU,iBAAiB,KAAI,CAAC;AAEtC,iHAAiH"}
1
+ {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,cAAc,cAAc,CAAC;AAE7B,UAAU;AACV,cAAc,sBAAsB,CAAC;AAErC,aAAa;AACb,cAAc,+BAA+B,CAAC;AAE9C,iHAAiH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-export-service",
3
- "version": "3.4.0",
3
+ "version": "4.1.0",
4
4
  "description": "MemberJunction: Angular export service and dialog for exporting data to Excel, CSV, and JSON",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -22,18 +22,18 @@
22
22
  "author": "",
23
23
  "license": "ISC",
24
24
  "devDependencies": {
25
- "@angular/compiler": "18.2.14",
26
- "@angular/compiler-cli": "18.2.14"
25
+ "@angular/compiler": "21.1.3",
26
+ "@angular/compiler-cli": "21.1.3"
27
27
  },
28
28
  "peerDependencies": {
29
- "@angular/common": "18.2.14",
30
- "@angular/core": "18.2.14",
31
- "@angular/forms": "18.2.14",
32
- "@angular/cdk": "18.2.14"
29
+ "@angular/common": "21.1.3",
30
+ "@angular/core": "21.1.3",
31
+ "@angular/forms": "21.1.3",
32
+ "@angular/cdk": "21.1.3"
33
33
  },
34
34
  "dependencies": {
35
- "@memberjunction/export-engine": "3.4.0",
36
- "tslib": "^2.3.0"
35
+ "@memberjunction/export-engine": "4.1.0",
36
+ "tslib": "^2.8.1"
37
37
  },
38
38
  "sideEffects": false,
39
39
  "repository": {