raise-common-lib 0.0.248 → 0.0.250

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/bundles/raise-common-lib.umd.js +2134 -803
  2. package/bundles/raise-common-lib.umd.js.map +1 -1
  3. package/bundles/raise-common-lib.umd.min.js +1 -1
  4. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/lib/common-grid/index.component.js +210 -8
  6. package/esm2015/lib/date-tree-filter/date-tree-filter-popover/index.component.js +761 -0
  7. package/esm2015/lib/date-tree-filter/date-tree-filter.helper.js +679 -0
  8. package/esm2015/lib/dialog/common-dialog/index.component.js +1 -1
  9. package/esm2015/lib/form/richtexteditor/data-config.js +68 -1
  10. package/esm2015/lib/form/richtexteditor/index.component.js +130 -474
  11. package/esm2015/lib/raise-common-lib.module.js +4 -1
  12. package/esm2015/public-api.js +3 -1
  13. package/esm2015/raise-common-lib.js +2 -2
  14. package/esm5/lib/common-grid/index.component.js +244 -8
  15. package/esm5/lib/date-tree-filter/date-tree-filter-popover/index.component.js +902 -0
  16. package/esm5/lib/date-tree-filter/date-tree-filter.helper.js +787 -0
  17. package/esm5/lib/dialog/common-dialog/index.component.js +1 -1
  18. package/esm5/lib/form/richtexteditor/data-config.js +68 -1
  19. package/esm5/lib/form/richtexteditor/index.component.js +132 -523
  20. package/esm5/lib/raise-common-lib.module.js +4 -1
  21. package/esm5/public-api.js +3 -1
  22. package/esm5/raise-common-lib.js +2 -2
  23. package/fesm2015/raise-common-lib.js +1845 -716
  24. package/fesm2015/raise-common-lib.js.map +1 -1
  25. package/fesm5/raise-common-lib.js +2129 -802
  26. package/fesm5/raise-common-lib.js.map +1 -1
  27. package/lib/common-grid/index.component.d.ts +30 -1
  28. package/lib/date-tree-filter/date-tree-filter-popover/index.component.d.ts +46 -0
  29. package/lib/date-tree-filter/date-tree-filter.helper.d.ts +54 -0
  30. package/lib/form/richtexteditor/data-config.d.ts +8 -0
  31. package/lib/form/richtexteditor/index.component.d.ts +41 -65
  32. package/package.json +1 -1
  33. package/public-api.d.ts +2 -0
  34. package/raise-common-lib.metadata.json +1 -1
  35. package/src/assets/img/bullet-dash.svg +3 -0
  36. package/src/assets/img/raise_logo_main_new.svg +27 -27
  37. package/esm2015/lib/form/richtexteditor/ai-config.js +0 -70
  38. package/esm2015/lib/form/richtexteditor/openapi.js +0 -175
  39. package/esm5/lib/form/richtexteditor/ai-config.js +0 -73
  40. package/esm5/lib/form/richtexteditor/openapi.js +0 -208
  41. package/lib/form/richtexteditor/ai-config.d.ts +0 -10
  42. package/lib/form/richtexteditor/openapi.d.ts +0 -3
@@ -1,7 +1,8 @@
1
1
  import { __assign, __awaiter, __generator, __decorate, __metadata, __spread, __read, __values } from 'tslib';
2
- import { EventEmitter, Component, ChangeDetectorRef, ViewChild, Input, Output, HostBinding, Injectable, ɵɵdefineInjectable, Inject, ɵɵinject, ContentChild, HostListener, ComponentFactoryResolver, ViewContainerRef, ViewChildren, ElementRef, InjectionToken, Optional, ChangeDetectionStrategy, ViewEncapsulation, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2
+ import { EventEmitter, Component, ChangeDetectorRef, ViewChild, Input, Output, ElementRef, HostListener, HostBinding, Injectable, ɵɵdefineInjectable, Inject, ɵɵinject, ContentChild, ComponentFactoryResolver, ViewContainerRef, ViewChildren, InjectionToken, Optional, ChangeDetectionStrategy, ViewEncapsulation, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
3
  import { GridComponent, ExcelExportService, ColumnChooserService, VirtualScrollService, FilterService, ResizeService, GridModule, PagerModule, GridAllModule, PageService, RowDDService, SortService, EditService, ToolbarService as ToolbarService$1, AggregateService, ColumnMenuService, DetailRowService, SelectionService, GroupService } from '@syncfusion/ej2-angular-grids';
4
4
  import { times, debounce as debounce$1, forEach, throttle, find, cloneDeep, startsWith, filter as filter$1, meanBy, sumBy, minBy, maxBy, sortBy, uniqBy, differenceWith, mean } from 'lodash';
5
+ import moment from 'moment';
5
6
  import { Subject, BehaviorSubject, Observable } from 'rxjs';
6
7
  import { MAT_SNACK_BAR_DATA, MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
7
8
  import { MAT_DIALOG_DATA, MatDialogRef, MatDialog, MatDialogModule } from '@angular/material/dialog';
@@ -14,7 +15,6 @@ import { HttpClient, HttpHeaders, HttpClientModule } from '@angular/common/http'
14
15
  import { setCulture, L10n, addClass, enableRipple, Browser, createElement } from '@syncfusion/ej2-base';
15
16
  import ResizeObserver from 'resize-observer-polyfill';
16
17
  import { Query, DataUtil } from '@syncfusion/ej2-data';
17
- import moment from 'moment';
18
18
  import CircularJSON from 'circular-json';
19
19
  import { MAT_DATE_FORMATS } from '@angular/material/core';
20
20
  import { DashboardLayoutModule } from '@syncfusion/ej2-angular-layouts';
@@ -32,7 +32,7 @@ import { DropDownListModule, DropDownTreeModule, MultiSelectAllModule, AutoCompl
32
32
  import { ToolbarService, FieldListService, NumberFormattingService, CalculatedFieldService, GroupingBarService, VirtualScrollService as VirtualScrollService$1, DrillThroughService, PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview';
33
33
  import { ChartAllModule, AccumulationChartAllModule, RangeNavigatorAllModule, AccumulationChartModule, PieSeriesService, AccumulationLegendService, AccumulationTooltipService, AccumulationAnnotationService, AccumulationDataLabelService } from '@syncfusion/ej2-angular-charts';
34
34
  import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService as ToolbarService$2, NavigationService, TextSearchService, TextSelectionService, PrintService } from '@syncfusion/ej2-angular-pdfviewer';
35
- import { DropDownButton, DropDownButtonModule, SplitButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
35
+ import { DropDownButtonModule, SplitButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
36
36
  import { RichTextEditorAllModule, HtmlEditorService, ToolbarService as ToolbarService$3 } from '@syncfusion/ej2-angular-richtexteditor';
37
37
  import { MatMenuModule } from '@angular/material/menu';
38
38
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -77,6 +77,791 @@ function getTranslation() {
77
77
  return {};
78
78
  }
79
79
 
80
+ /**
81
+ * @fileoverview added by tsickle
82
+ * Generated from: lib/date-tree-filter/date-tree-filter.helper.ts
83
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
84
+ */
85
+ /**
86
+ * @record
87
+ */
88
+ function DateTreeFilterSetupOptions() { }
89
+ if (false) {
90
+ /** @type {?} */
91
+ DateTreeFilterSetupOptions.prototype.rows;
92
+ /** @type {?} */
93
+ DateTreeFilterSetupOptions.prototype.fields;
94
+ /** @type {?} */
95
+ DateTreeFilterSetupOptions.prototype.hints;
96
+ }
97
+ /**
98
+ * @record
99
+ */
100
+ function DateTreeFilterHelperOptions() { }
101
+ if (false) {
102
+ /** @type {?} */
103
+ DateTreeFilterHelperOptions.prototype.getTranslation;
104
+ /** @type {?} */
105
+ DateTreeFilterHelperOptions.prototype.getPopoverElement;
106
+ /** @type {?} */
107
+ DateTreeFilterHelperOptions.prototype.getGridElement;
108
+ /** @type {?} */
109
+ DateTreeFilterHelperOptions.prototype.applyRows;
110
+ /** @type {?|undefined} */
111
+ DateTreeFilterHelperOptions.prototype.parseDateValue;
112
+ /** @type {?|undefined} */
113
+ DateTreeFilterHelperOptions.prototype.dateFormats;
114
+ }
115
+ /**
116
+ * @record
117
+ */
118
+ function RsCommonGridDateTreeFactoryHost() { }
119
+ if (false) {
120
+ /** @type {?} */
121
+ RsCommonGridDateTreeFactoryHost.prototype.translation;
122
+ /** @type {?} */
123
+ RsCommonGridDateTreeFactoryHost.prototype.dateTreePopoverRef;
124
+ /** @type {?} */
125
+ RsCommonGridDateTreeFactoryHost.prototype.grid;
126
+ }
127
+ /** @type {?} */
128
+ var DATE_TREE_DEFAULT_DATE_FORMATS = [
129
+ "YYYY-MM-DD",
130
+ "MM/DD/YYYY",
131
+ "DD/MM/YYYY",
132
+ "YYYY/MM/DD",
133
+ "DD-MMM-YYYY",
134
+ "MMM DD, YYYY",
135
+ ];
136
+ var DateTreeFilterHelper = /** @class */ (function () {
137
+ function DateTreeFilterHelper(options) {
138
+ this.popoverVisible = false;
139
+ this.popoverField = "";
140
+ this.popoverStyle = {};
141
+ this.selectedByField = {};
142
+ this.fieldLabelMap = {};
143
+ this.dateFields = [];
144
+ this.sourceRows = [];
145
+ this.defaultDateFormats = [
146
+ "YYYY-MM-DD",
147
+ "MM/DD/YYYY",
148
+ "DD/MM/YYYY",
149
+ "YYYY/MM/DD",
150
+ "DD-MMM-YYYY",
151
+ "DD-MMM-YYYY hh:mm A",
152
+ "MMM DD, YYYY",
153
+ moment.ISO_8601,
154
+ ];
155
+ this.options = options;
156
+ }
157
+ /**
158
+ * @param {?} config
159
+ * @return {?}
160
+ */
161
+ DateTreeFilterHelper.prototype.setup = /**
162
+ * @param {?} config
163
+ * @return {?}
164
+ */
165
+ function (config) {
166
+ var _this = this;
167
+ /** @type {?} */
168
+ var rows = config && config.rows ? config.rows : [];
169
+ /** @type {?} */
170
+ var fields = config && config.fields ? config.fields : [];
171
+ /** @type {?} */
172
+ var hints = config && config.hints ? config.hints : [];
173
+ this.sourceRows = rows;
174
+ this.dateFields = this.resolveDateTreeFieldsByHints(fields, hints);
175
+ this.fieldLabelMap = {};
176
+ (fields || []).forEach((/**
177
+ * @param {?} item
178
+ * @return {?}
179
+ */
180
+ function (item) {
181
+ if (!item || !item.columnName) {
182
+ return;
183
+ }
184
+ _this.fieldLabelMap[item.columnName] =
185
+ item.columnDisplayName || item.columnName;
186
+ }));
187
+ this.apply();
188
+ };
189
+ /**
190
+ * @param {?} args
191
+ * @return {?}
192
+ */
193
+ DateTreeFilterHelper.prototype.handleGridActionBegin = /**
194
+ * @param {?} args
195
+ * @return {?}
196
+ */
197
+ function (args) {
198
+ /** @type {?} */
199
+ var requestType = this.getRequestType(args);
200
+ if (requestType === "filterchoicerequest" ||
201
+ requestType === "filtersearchbegin") {
202
+ args.filterChoiceCount = 15000;
203
+ }
204
+ if (requestType !== "filterbeforeopen") {
205
+ return;
206
+ }
207
+ /** @type {?} */
208
+ var columnName = this.resolveActionColumnName(args);
209
+ if (!this.isDateTreeField(columnName)) {
210
+ this.close();
211
+ return;
212
+ }
213
+ args.cancel = true;
214
+ this.open(columnName);
215
+ };
216
+ /**
217
+ * @param {?} selectionMap
218
+ * @return {?}
219
+ */
220
+ DateTreeFilterHelper.prototype.updateSelection = /**
221
+ * @param {?} selectionMap
222
+ * @return {?}
223
+ */
224
+ function (selectionMap) {
225
+ this.selectedByField = selectionMap || {};
226
+ this.apply();
227
+ };
228
+ /**
229
+ * @return {?}
230
+ */
231
+ DateTreeFilterHelper.prototype.close = /**
232
+ * @return {?}
233
+ */
234
+ function () {
235
+ if (!this.popoverVisible) {
236
+ return;
237
+ }
238
+ this.popoverVisible = false;
239
+ this.popoverField = "";
240
+ this.popoverStyle = {};
241
+ };
242
+ /**
243
+ * @param {?} event
244
+ * @return {?}
245
+ */
246
+ DateTreeFilterHelper.prototype.handleDocumentMouseDown = /**
247
+ * @param {?} event
248
+ * @return {?}
249
+ */
250
+ function (event) {
251
+ if (!this.popoverVisible) {
252
+ return;
253
+ }
254
+ /** @type {?} */
255
+ var target = (/** @type {?} */ (event.target));
256
+ if (!target) {
257
+ return;
258
+ }
259
+ if (this.isInsidePopover(target) || this.isDateFilterMenuItem(target)) {
260
+ return;
261
+ }
262
+ this.close();
263
+ };
264
+ /**
265
+ * @param {?} event
266
+ * @return {?}
267
+ */
268
+ DateTreeFilterHelper.prototype.handleDocumentMouseOver = /**
269
+ * @param {?} event
270
+ * @return {?}
271
+ */
272
+ function (event) {
273
+ if (!this.popoverVisible) {
274
+ return;
275
+ }
276
+ /** @type {?} */
277
+ var target = (/** @type {?} */ (event.target));
278
+ if (!target) {
279
+ return;
280
+ }
281
+ if (this.isInsidePopover(target)) {
282
+ return;
283
+ }
284
+ /** @type {?} */
285
+ var menuItem = (/** @type {?} */ (target.closest(".e-menu-item")));
286
+ if (menuItem) {
287
+ if (!this.isDateFilterMenuItem(menuItem)) {
288
+ this.close();
289
+ }
290
+ return;
291
+ }
292
+ /** @type {?} */
293
+ var otherFilterTarget = (/** @type {?} */ (target.closest(".e-filtermenudiv, .e-headercell .e-columnmenu, .e-columnmenu, .e-contextmenu")));
294
+ if (otherFilterTarget && !this.isDateFilterMenuItem(otherFilterTarget)) {
295
+ this.close();
296
+ }
297
+ };
298
+ /**
299
+ * @return {?}
300
+ */
301
+ DateTreeFilterHelper.prototype.updatePosition = /**
302
+ * @return {?}
303
+ */
304
+ function () {
305
+ if (!this.popoverVisible) {
306
+ return;
307
+ }
308
+ /** @type {?} */
309
+ var anchor = this.findDateFilterAnchorElement();
310
+ if (anchor) {
311
+ /** @type {?} */
312
+ var rect = anchor.getBoundingClientRect();
313
+ /** @type {?} */
314
+ var viewportWidth = window.innerWidth || document.documentElement.clientWidth;
315
+ /** @type {?} */
316
+ var viewportHeight = window.innerHeight || document.documentElement.clientHeight;
317
+ /** @type {?} */
318
+ var popoverElement = this.options.getPopoverElement
319
+ ? this.options.getPopoverElement()
320
+ : null;
321
+ /** @type {?} */
322
+ var popoverWidth = popoverElement && popoverElement.offsetWidth
323
+ ? popoverElement.offsetWidth
324
+ : 300;
325
+ /** @type {?} */
326
+ var popoverHeight = popoverElement && popoverElement.offsetHeight
327
+ ? popoverElement.offsetHeight
328
+ : 420;
329
+ /** @type {?} */
330
+ var edgeGap = 8;
331
+ /** @type {?} */
332
+ var anchorGap = 8;
333
+ /** @type {?} */
334
+ var top = rect.top - 6;
335
+ /** @type {?} */
336
+ var left = rect.right + anchorGap;
337
+ if (left + popoverWidth > viewportWidth - edgeGap) {
338
+ left = rect.left - popoverWidth - anchorGap;
339
+ }
340
+ if (left < edgeGap) {
341
+ left = edgeGap;
342
+ }
343
+ if (left + popoverWidth > viewportWidth - edgeGap) {
344
+ left = Math.max(edgeGap, viewportWidth - popoverWidth - edgeGap);
345
+ }
346
+ if (top + popoverHeight > viewportHeight - edgeGap) {
347
+ top = Math.max(edgeGap, viewportHeight - popoverHeight - edgeGap);
348
+ }
349
+ this.popoverStyle = {
350
+ position: "fixed",
351
+ left: left + "px",
352
+ top: top + "px",
353
+ };
354
+ return;
355
+ }
356
+ /** @type {?} */
357
+ var gridElement = this.options.getGridElement
358
+ ? this.options.getGridElement()
359
+ : null;
360
+ if (gridElement && gridElement.getBoundingClientRect) {
361
+ /** @type {?} */
362
+ var fallbackRect = gridElement.getBoundingClientRect();
363
+ this.popoverStyle = {
364
+ position: "fixed",
365
+ left: Math.max(8, fallbackRect.right - 312) + "px",
366
+ top: Math.max(8, fallbackRect.top + 8) + "px",
367
+ };
368
+ }
369
+ };
370
+ /**
371
+ * @private
372
+ * @param {?} field
373
+ * @return {?}
374
+ */
375
+ DateTreeFilterHelper.prototype.open = /**
376
+ * @private
377
+ * @param {?} field
378
+ * @return {?}
379
+ */
380
+ function (field) {
381
+ var _this = this;
382
+ this.popoverField = field;
383
+ this.popoverVisible = true;
384
+ this.updatePosition();
385
+ setTimeout((/**
386
+ * @return {?}
387
+ */
388
+ function () { return _this.updatePosition(); }), 50);
389
+ setTimeout((/**
390
+ * @return {?}
391
+ */
392
+ function () { return _this.updatePosition(); }), 150);
393
+ };
394
+ /**
395
+ * @private
396
+ * @return {?}
397
+ */
398
+ DateTreeFilterHelper.prototype.apply = /**
399
+ * @private
400
+ * @return {?}
401
+ */
402
+ function () {
403
+ /** @type {?} */
404
+ var filteredRows = this.filterRowsBySelectedDateTree(this.sourceRows || []);
405
+ this.options.applyRows(filteredRows);
406
+ };
407
+ /**
408
+ * @private
409
+ * @param {?} args
410
+ * @return {?}
411
+ */
412
+ DateTreeFilterHelper.prototype.getRequestType = /**
413
+ * @private
414
+ * @param {?} args
415
+ * @return {?}
416
+ */
417
+ function (args) {
418
+ if (!args || !args.requestType) {
419
+ return "";
420
+ }
421
+ return String(args.requestType).trim().toLowerCase();
422
+ };
423
+ /**
424
+ * @private
425
+ * @param {?} args
426
+ * @return {?}
427
+ */
428
+ DateTreeFilterHelper.prototype.resolveActionColumnName = /**
429
+ * @private
430
+ * @param {?} args
431
+ * @return {?}
432
+ */
433
+ function (args) {
434
+ if (!args) {
435
+ return "";
436
+ }
437
+ return (args.columnName ||
438
+ args.field ||
439
+ args.currentFilteringColumn ||
440
+ (args.column && (args.column.field || args.column.columnName)) ||
441
+ "");
442
+ };
443
+ /**
444
+ * @private
445
+ * @param {?} fields
446
+ * @param {?} hints
447
+ * @return {?}
448
+ */
449
+ DateTreeFilterHelper.prototype.resolveDateTreeFieldsByHints = /**
450
+ * @private
451
+ * @param {?} fields
452
+ * @param {?} hints
453
+ * @return {?}
454
+ */
455
+ function (fields, hints) {
456
+ /** @type {?} */
457
+ var normalizedHints = (hints || [])
458
+ .filter((/**
459
+ * @param {?} item
460
+ * @return {?}
461
+ */
462
+ function (item) { return !!item; }))
463
+ .map((/**
464
+ * @param {?} item
465
+ * @return {?}
466
+ */
467
+ function (item) { return String(item).trim().toLowerCase(); }));
468
+ if (!fields || !fields.length || !normalizedHints.length) {
469
+ return [];
470
+ }
471
+ return fields
472
+ .filter((/**
473
+ * @param {?} item
474
+ * @return {?}
475
+ */
476
+ function (item) {
477
+ if (!item || !item.columnName) {
478
+ return false;
479
+ }
480
+ /** @type {?} */
481
+ var columnName = String(item.columnName || "").toLowerCase();
482
+ /** @type {?} */
483
+ var displayName = String(item.columnDisplayName || "").toLowerCase();
484
+ return normalizedHints.some((/**
485
+ * @param {?} hint
486
+ * @return {?}
487
+ */
488
+ function (hint) {
489
+ return (columnName === hint ||
490
+ displayName === hint ||
491
+ (hint.length >= 3 &&
492
+ (columnName.indexOf(hint) > -1 ||
493
+ displayName.indexOf(hint) > -1)));
494
+ }));
495
+ }))
496
+ .map((/**
497
+ * @param {?} item
498
+ * @return {?}
499
+ */
500
+ function (item) { return item.columnName; }));
501
+ };
502
+ /**
503
+ * @private
504
+ * @param {?} field
505
+ * @return {?}
506
+ */
507
+ DateTreeFilterHelper.prototype.isDateTreeField = /**
508
+ * @private
509
+ * @param {?} field
510
+ * @return {?}
511
+ */
512
+ function (field) {
513
+ return this.dateFields.indexOf(field) > -1;
514
+ };
515
+ /**
516
+ * @private
517
+ * @param {?} field
518
+ * @return {?}
519
+ */
520
+ DateTreeFilterHelper.prototype.getFieldDaySelectionMap = /**
521
+ * @private
522
+ * @param {?} field
523
+ * @return {?}
524
+ */
525
+ function (field) {
526
+ if (!this.selectedByField[field]) {
527
+ this.selectedByField[field] = {};
528
+ }
529
+ return this.selectedByField[field];
530
+ };
531
+ /**
532
+ * @private
533
+ * @param {?} rows
534
+ * @param {?=} excludeField
535
+ * @return {?}
536
+ */
537
+ DateTreeFilterHelper.prototype.filterRowsBySelectedDateTree = /**
538
+ * @private
539
+ * @param {?} rows
540
+ * @param {?=} excludeField
541
+ * @return {?}
542
+ */
543
+ function (rows, excludeField) {
544
+ var _this = this;
545
+ /** @type {?} */
546
+ var filteredRows = rows ? rows.slice() : [];
547
+ this.dateFields.forEach((/**
548
+ * @param {?} field
549
+ * @return {?}
550
+ */
551
+ function (field) {
552
+ if (excludeField && field === excludeField) {
553
+ return;
554
+ }
555
+ /** @type {?} */
556
+ var selectedMap = _this.getFieldDaySelectionMap(field);
557
+ /** @type {?} */
558
+ var selectedKeys = Object.keys(selectedMap);
559
+ if (!selectedKeys.length) {
560
+ return;
561
+ }
562
+ filteredRows = filteredRows.filter((/**
563
+ * @param {?} row
564
+ * @return {?}
565
+ */
566
+ function (row) {
567
+ /** @type {?} */
568
+ var dayKey = _this.getDayKeyByRowValue(row[field]);
569
+ return dayKey ? !!selectedMap[dayKey] : false;
570
+ }));
571
+ }));
572
+ return filteredRows;
573
+ };
574
+ /**
575
+ * @private
576
+ * @param {?} value
577
+ * @return {?}
578
+ */
579
+ DateTreeFilterHelper.prototype.getDayKeyByRowValue = /**
580
+ * @private
581
+ * @param {?} value
582
+ * @return {?}
583
+ */
584
+ function (value) {
585
+ /** @type {?} */
586
+ var date = this.parseDateValue(value);
587
+ if (!date) {
588
+ return "";
589
+ }
590
+ return this.toDayKey(date.getFullYear(), date.getMonth() + 1, date.getDate());
591
+ };
592
+ /**
593
+ * @private
594
+ * @param {?} value
595
+ * @return {?}
596
+ */
597
+ DateTreeFilterHelper.prototype.parseDateValue = /**
598
+ * @private
599
+ * @param {?} value
600
+ * @return {?}
601
+ */
602
+ function (value) {
603
+ if (this.options.parseDateValue) {
604
+ return this.options.parseDateValue(value);
605
+ }
606
+ if (!value) {
607
+ return null;
608
+ }
609
+ if (value instanceof Date) {
610
+ return value;
611
+ }
612
+ /** @type {?} */
613
+ var formats = this.options && this.options.dateFormats && this.options.dateFormats.length
614
+ ? this.options.dateFormats
615
+ : this.defaultDateFormats;
616
+ /** @type {?} */
617
+ var parsed = moment(value, formats, true);
618
+ if (parsed.isValid()) {
619
+ return parsed.toDate();
620
+ }
621
+ /** @type {?} */
622
+ var fallback = new Date(value);
623
+ return isNaN(fallback.getTime()) ? null : fallback;
624
+ };
625
+ /**
626
+ * @private
627
+ * @param {?} year
628
+ * @param {?} month
629
+ * @param {?} day
630
+ * @return {?}
631
+ */
632
+ DateTreeFilterHelper.prototype.toDayKey = /**
633
+ * @private
634
+ * @param {?} year
635
+ * @param {?} month
636
+ * @param {?} day
637
+ * @return {?}
638
+ */
639
+ function (year, month, day) {
640
+ return year + "-" + this.pad2(month) + "-" + this.pad2(day);
641
+ };
642
+ /**
643
+ * @private
644
+ * @param {?} value
645
+ * @return {?}
646
+ */
647
+ DateTreeFilterHelper.prototype.pad2 = /**
648
+ * @private
649
+ * @param {?} value
650
+ * @return {?}
651
+ */
652
+ function (value) {
653
+ return value < 10 ? "0" + value : String(value);
654
+ };
655
+ /**
656
+ * @private
657
+ * @param {?} target
658
+ * @return {?}
659
+ */
660
+ DateTreeFilterHelper.prototype.isInsidePopover = /**
661
+ * @private
662
+ * @param {?} target
663
+ * @return {?}
664
+ */
665
+ function (target) {
666
+ /** @type {?} */
667
+ var popoverElement = this.options.getPopoverElement
668
+ ? this.options.getPopoverElement()
669
+ : null;
670
+ if (!target || !popoverElement) {
671
+ return false;
672
+ }
673
+ return popoverElement.contains(target);
674
+ };
675
+ /**
676
+ * @private
677
+ * @param {?} element
678
+ * @return {?}
679
+ */
680
+ DateTreeFilterHelper.prototype.isDateFilterMenuItem = /**
681
+ * @private
682
+ * @param {?} element
683
+ * @return {?}
684
+ */
685
+ function (element) {
686
+ if (!element) {
687
+ return false;
688
+ }
689
+ /** @type {?} */
690
+ var menuItem = (/** @type {?} */ (element.closest(".e-menu-item")));
691
+ if (!menuItem) {
692
+ return false;
693
+ }
694
+ /** @type {?} */
695
+ var text = (menuItem.textContent || "").trim().toLowerCase();
696
+ /** @type {?} */
697
+ var translation = this.options.getTranslation
698
+ ? this.options.getTranslation()
699
+ : null;
700
+ /** @type {?} */
701
+ var filterText = String((translation && translation.FILTER) || "filter")
702
+ .trim()
703
+ .toLowerCase();
704
+ if (!text) {
705
+ return false;
706
+ }
707
+ if (text.indexOf(filterText) > -1 || text.indexOf("filter") > -1) {
708
+ return true;
709
+ }
710
+ /** @type {?} */
711
+ var cls = (menuItem.className || "").toLowerCase();
712
+ return cls.indexOf("filter") > -1;
713
+ };
714
+ /**
715
+ * @private
716
+ * @return {?}
717
+ */
718
+ DateTreeFilterHelper.prototype.findDateFilterAnchorElement = /**
719
+ * @private
720
+ * @return {?}
721
+ */
722
+ function () {
723
+ var _this = this;
724
+ /** @type {?} */
725
+ var menuContainers = (/** @type {?} */ (Array.from(document.querySelectorAll(".e-columnmenu, .e-contextmenu"))));
726
+ /** @type {?} */
727
+ var visibleContainers = menuContainers.filter((/**
728
+ * @param {?} container
729
+ * @return {?}
730
+ */
731
+ function (container) {
732
+ if (!container || !container.getBoundingClientRect) {
733
+ return false;
734
+ }
735
+ /** @type {?} */
736
+ var rect = container.getBoundingClientRect();
737
+ if (rect.width <= 0 || rect.height <= 0) {
738
+ return false;
739
+ }
740
+ /** @type {?} */
741
+ var style = window.getComputedStyle(container);
742
+ if (!style || style.display === "none" || style.visibility === "hidden") {
743
+ return false;
744
+ }
745
+ return true;
746
+ }));
747
+ if (!visibleContainers.length) {
748
+ return null;
749
+ }
750
+ /** @type {?} */
751
+ var currentContainer = visibleContainers[visibleContainers.length - 1];
752
+ /** @type {?} */
753
+ var menuItems = (/** @type {?} */ (Array.from(currentContainer.querySelectorAll(".e-menu-item"))));
754
+ /** @type {?} */
755
+ var visibleFilterItems = menuItems.filter((/**
756
+ * @param {?} item
757
+ * @return {?}
758
+ */
759
+ function (item) {
760
+ if (!_this.isDateFilterMenuItem(item)) {
761
+ return false;
762
+ }
763
+ if (!item.getBoundingClientRect) {
764
+ return false;
765
+ }
766
+ /** @type {?} */
767
+ var rect = item.getBoundingClientRect();
768
+ return rect.width > 0 && rect.height > 0;
769
+ }));
770
+ if (!visibleFilterItems.length) {
771
+ return null;
772
+ }
773
+ /** @type {?} */
774
+ var focusedItem = visibleFilterItems.find((/**
775
+ * @param {?} item
776
+ * @return {?}
777
+ */
778
+ function (item) {
779
+ return (item.classList.contains("e-focused") ||
780
+ item.classList.contains("e-selected") ||
781
+ item.classList.contains("e-hover"));
782
+ }));
783
+ return focusedItem || visibleFilterItems[visibleFilterItems.length - 1];
784
+ };
785
+ return DateTreeFilterHelper;
786
+ }());
787
+ if (false) {
788
+ /** @type {?} */
789
+ DateTreeFilterHelper.prototype.popoverVisible;
790
+ /** @type {?} */
791
+ DateTreeFilterHelper.prototype.popoverField;
792
+ /** @type {?} */
793
+ DateTreeFilterHelper.prototype.popoverStyle;
794
+ /** @type {?} */
795
+ DateTreeFilterHelper.prototype.selectedByField;
796
+ /** @type {?} */
797
+ DateTreeFilterHelper.prototype.fieldLabelMap;
798
+ /** @type {?} */
799
+ DateTreeFilterHelper.prototype.dateFields;
800
+ /**
801
+ * @type {?}
802
+ * @private
803
+ */
804
+ DateTreeFilterHelper.prototype.sourceRows;
805
+ /**
806
+ * @type {?}
807
+ * @private
808
+ */
809
+ DateTreeFilterHelper.prototype.options;
810
+ /**
811
+ * @type {?}
812
+ * @private
813
+ */
814
+ DateTreeFilterHelper.prototype.defaultDateFormats;
815
+ }
816
+ /**
817
+ * @param {?} host
818
+ * @return {?}
819
+ */
820
+ function resolveGridElement(host) {
821
+ if (!host || !host.grid) {
822
+ return null;
823
+ }
824
+ /** @type {?} */
825
+ var gridRef = host.grid;
826
+ if (gridRef.grid && gridRef.grid.element) {
827
+ return gridRef.grid.element;
828
+ }
829
+ if (gridRef.element) {
830
+ return gridRef.element;
831
+ }
832
+ return null;
833
+ }
834
+ /**
835
+ * @param {?} host
836
+ * @param {?} applyRows
837
+ * @param {?=} dateFormats
838
+ * @return {?}
839
+ */
840
+ function createRsCommonGridDateTreeHelper(host, applyRows, dateFormats) {
841
+ return new DateTreeFilterHelper({
842
+ getTranslation: (/**
843
+ * @return {?}
844
+ */
845
+ function () { return (host ? host.translation : null); }),
846
+ getPopoverElement: (/**
847
+ * @return {?}
848
+ */
849
+ function () {
850
+ return host && host.dateTreePopoverRef
851
+ ? host.dateTreePopoverRef.nativeElement
852
+ : null;
853
+ }),
854
+ getGridElement: (/**
855
+ * @return {?}
856
+ */
857
+ function () { return resolveGridElement(host); }),
858
+ applyRows: applyRows,
859
+ dateFormats: dateFormats && dateFormats.length
860
+ ? dateFormats
861
+ : DATE_TREE_DEFAULT_DATE_FORMATS,
862
+ });
863
+ }
864
+
80
865
  /**
81
866
  * @fileoverview added by tsickle
82
867
  * Generated from: lib/common-grid/index.component.ts
@@ -84,6 +869,7 @@ function getTranslation() {
84
869
  */
85
870
  var CommonGridComponent = /** @class */ (function () {
86
871
  function CommonGridComponent(ref) {
872
+ var _this = this;
87
873
  this.ref = ref;
88
874
  this.showCheckBox = true;
89
875
  this.loaded = true;
@@ -130,6 +916,23 @@ var CommonGridComponent = /** @class */ (function () {
130
916
  this.alwaysShowCheckbox = false;
131
917
  this.disableSystemRow = false; // 禁用IsSytem = true的整行
132
918
  // 禁用IsSytem = true的整行
919
+ /**
920
+ * 开启日期树筛选(默认关闭,不影响现有页面)
921
+ */
922
+ this.enableDateTreeFilter = false;
923
+ /**
924
+ * 参与日期树筛选的列名或 hint,如 ['CreatedOn', 'ModifiedOn']
925
+ */
926
+ this.dateTreeFilterFields = [];
927
+ /**
928
+ * 未筛选原始数据(可选)。
929
+ * 不传时由组件在 dataSource 变更时自动快照;传则由页面自行维护 raw。
930
+ */
931
+ this.dateTreeSourceRows = null;
932
+ /**
933
+ * 内聚模式下仍向页面同步筛选结果(默认 false,一般无需绑定)
934
+ */
935
+ this.dateTreeEmitFilteredRows = false;
133
936
  this.recordDoubleClick = new EventEmitter();
134
937
  this.actionComplete = new EventEmitter();
135
938
  this.rowSelected = new EventEmitter();
@@ -147,6 +950,16 @@ var CommonGridComponent = /** @class */ (function () {
147
950
  this.rowDrop = new EventEmitter();
148
951
  this.rowDrag = new EventEmitter();
149
952
  this.rowDragStart = new EventEmitter();
953
+ /**
954
+ * 日期树筛选后的行数据(可选,复杂页面与 dateTreeSourceRows 搭配使用)
955
+ */
956
+ this.dateTreeFilteredRows = new EventEmitter();
957
+ /**
958
+ * 内聚模式:表格实际绑定的数据
959
+ */
960
+ this.dateTreeDisplayRows = [];
961
+ this.dateTreeRawRows = [];
962
+ this.dateTreeApplyingFilter = false;
150
963
  this.selectId = [];
151
964
  this.startPaging = false;
152
965
  this.indexList = [];
@@ -174,6 +987,11 @@ var CommonGridComponent = /** @class */ (function () {
174
987
  return list;
175
988
  });
176
989
  this.translation = getTranslation();
990
+ this.dateTreeHelper = createRsCommonGridDateTreeHelper(this, (/**
991
+ * @param {?} rows
992
+ * @return {?}
993
+ */
994
+ function (rows) { return _this.onDateTreeRowsApplied(rows); }));
177
995
  }
178
996
  /**
179
997
  * @return {?}
@@ -201,6 +1019,36 @@ var CommonGridComponent = /** @class */ (function () {
201
1019
  function (index, item) {
202
1020
  return index; // or a unique identifier in your object
203
1021
  };
1022
+ Object.defineProperty(CommonGridComponent.prototype, "gridBindDataSource", {
1023
+ /** ejs-grid 绑定数据源:内聚模式用内部展示数据,否则用 dataSource */
1024
+ get: /**
1025
+ * ejs-grid 绑定数据源:内聚模式用内部展示数据,否则用 dataSource
1026
+ * @return {?}
1027
+ */
1028
+ function () {
1029
+ if (this.enableDateTreeFilter && this.dateTreeSourceRows == null) {
1030
+ return this.dateTreeDisplayRows;
1031
+ }
1032
+ return this.dataSource;
1033
+ },
1034
+ enumerable: true,
1035
+ configurable: true
1036
+ });
1037
+ Object.defineProperty(CommonGridComponent.prototype, "dateTreePopoverSourceRows", {
1038
+ /** 日期树 popover 用的全量数据 */
1039
+ get: /**
1040
+ * 日期树 popover 用的全量数据
1041
+ * @return {?}
1042
+ */
1043
+ function () {
1044
+ if (this.dateTreeSourceRows != null) {
1045
+ return this.dateTreeSourceRows;
1046
+ }
1047
+ return this.dateTreeRawRows;
1048
+ },
1049
+ enumerable: true,
1050
+ configurable: true
1051
+ });
204
1052
  /**
205
1053
  * @param {?} changes
206
1054
  * @return {?}
@@ -210,12 +1058,16 @@ var CommonGridComponent = /** @class */ (function () {
210
1058
  * @return {?}
211
1059
  */
212
1060
  function (changes) {
213
- if (changes.dataSource && changes.dataSource.currentValue) {
1061
+ /** @type {?} */
1062
+ var bindRows = changes.dataSource && changes.dataSource.currentValue
1063
+ ? changes.dataSource.currentValue
1064
+ : null;
1065
+ if (bindRows) {
214
1066
  if (this.allowPaging &&
215
- changes.dataSource.currentValue.length &&
1067
+ bindRows.length &&
216
1068
  !this.pageSettings) {
217
1069
  this.pageSettings =
218
- changes.dataSource.currentValue.length > 9
1070
+ bindRows.length > 9
219
1071
  ? {
220
1072
  pageSizes: ["All", "25", "50", "100"],
221
1073
  pageSize: 50,
@@ -223,11 +1075,123 @@ var CommonGridComponent = /** @class */ (function () {
223
1075
  : null;
224
1076
  }
225
1077
  }
1078
+ if (this.enableDateTreeFilter &&
1079
+ this.dateTreeSourceRows == null &&
1080
+ changes.dataSource &&
1081
+ !this.dateTreeApplyingFilter) {
1082
+ this.captureDateTreeRawFromDataSource(changes.dataSource.currentValue);
1083
+ }
1084
+ if (changes.enableDateTreeFilter && changes.enableDateTreeFilter.currentValue) {
1085
+ this.captureDateTreeRawFromDataSource(this.dataSource);
1086
+ }
1087
+ if (changes.enableDateTreeFilter && !changes.enableDateTreeFilter.currentValue) {
1088
+ this.dateTreeHelper && this.dateTreeHelper.close();
1089
+ this.dateTreeDisplayRows = [];
1090
+ this.dateTreeRawRows = [];
1091
+ }
1092
+ if (this.enableDateTreeFilter &&
1093
+ (changes.enableDateTreeFilter ||
1094
+ changes.dateTreeFilterFields ||
1095
+ changes.dateTreeSourceRows ||
1096
+ changes.fields ||
1097
+ changes.dataSource)) {
1098
+ this.refreshDateTreeFilter();
1099
+ }
226
1100
  };
227
1101
  /**
1102
+ * @private
1103
+ * @param {?} rows
228
1104
  * @return {?}
229
1105
  */
230
- CommonGridComponent.prototype._load = /**
1106
+ CommonGridComponent.prototype.captureDateTreeRawFromDataSource = /**
1107
+ * @private
1108
+ * @param {?} rows
1109
+ * @return {?}
1110
+ */
1111
+ function (rows) {
1112
+ this.dateTreeRawRows = rows ? rows.slice() : [];
1113
+ };
1114
+ /**
1115
+ * @param {?} event
1116
+ * @return {?}
1117
+ */
1118
+ CommonGridComponent.prototype.onDocumentMouseDown = /**
1119
+ * @param {?} event
1120
+ * @return {?}
1121
+ */
1122
+ function (event) {
1123
+ if (this.enableDateTreeFilter && this.dateTreeHelper) {
1124
+ this.dateTreeHelper.handleDocumentMouseDown(event);
1125
+ }
1126
+ };
1127
+ /**
1128
+ * @param {?} event
1129
+ * @return {?}
1130
+ */
1131
+ CommonGridComponent.prototype.onDocumentMouseOver = /**
1132
+ * @param {?} event
1133
+ * @return {?}
1134
+ */
1135
+ function (event) {
1136
+ if (this.enableDateTreeFilter && this.dateTreeHelper) {
1137
+ this.dateTreeHelper.handleDocumentMouseOver(event);
1138
+ }
1139
+ };
1140
+ /**
1141
+ * @private
1142
+ * @return {?}
1143
+ */
1144
+ CommonGridComponent.prototype.refreshDateTreeFilter = /**
1145
+ * @private
1146
+ * @return {?}
1147
+ */
1148
+ function () {
1149
+ if (!this.enableDateTreeFilter || !this.dateTreeHelper) {
1150
+ return;
1151
+ }
1152
+ /** @type {?} */
1153
+ var rows = this.dateTreeSourceRows != null
1154
+ ? this.dateTreeSourceRows
1155
+ : this.dateTreeRawRows || [];
1156
+ this.dateTreeHelper.setup({
1157
+ rows: rows,
1158
+ fields: this.fields || [],
1159
+ hints: this.dateTreeFilterFields || [],
1160
+ });
1161
+ };
1162
+ /**
1163
+ * @private
1164
+ * @param {?} rows
1165
+ * @return {?}
1166
+ */
1167
+ CommonGridComponent.prototype.onDateTreeRowsApplied = /**
1168
+ * @private
1169
+ * @param {?} rows
1170
+ * @return {?}
1171
+ */
1172
+ function (rows) {
1173
+ var _this = this;
1174
+ /** @type {?} */
1175
+ var result = rows || [];
1176
+ this.dateTreeApplyingFilter = true;
1177
+ if (this.enableDateTreeFilter && this.dateTreeSourceRows == null) {
1178
+ this.dateTreeDisplayRows = result;
1179
+ }
1180
+ if (this.dateTreeSourceRows != null || this.dateTreeEmitFilteredRows) {
1181
+ this.dateTreeFilteredRows.emit(result);
1182
+ }
1183
+ this.ref && this.ref.markForCheck();
1184
+ setTimeout((/**
1185
+ * @return {?}
1186
+ */
1187
+ function () {
1188
+ _this.dateTreeApplyingFilter = false;
1189
+ }), 0);
1190
+ };
1191
+ /**
1192
+ * @return {?}
1193
+ */
1194
+ CommonGridComponent.prototype._load = /**
231
1195
  * @return {?}
232
1196
  */
233
1197
  function () {
@@ -481,7 +1445,10 @@ var CommonGridComponent = /** @class */ (function () {
481
1445
  args.requestType === "sorting")) {
482
1446
  this.startPaging = true;
483
1447
  }
484
- if (args.requestType == "filterchoicerequest" ||
1448
+ if (this.enableDateTreeFilter && this.dateTreeHelper) {
1449
+ this.dateTreeHelper.handleGridActionBegin(args);
1450
+ }
1451
+ else if (args.requestType == "filterchoicerequest" ||
485
1452
  args.requestType === "filtersearchbegin") {
486
1453
  args.filterChoiceCount = 15000;
487
1454
  }
@@ -854,7 +1821,7 @@ var CommonGridComponent = /** @class */ (function () {
854
1821
  CommonGridComponent.decorators = [
855
1822
  { type: Component, args: [{
856
1823
  selector: "rs-common-grid",
857
- template: "<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"dataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"dataSource && dataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n [headerTemplate]=\"item.showHeaderTemplate ? headerTemplate : undefined\"\r\n [isPrimaryKey]=\"item?.isPrimaryKey ? true : false\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
1824
+ template: "<rs-date-tree-filter-popover\r\n *ngIf=\"enableDateTreeFilter && dateTreeHelper && dateTreeHelper.popoverVisible\"\r\n #dateTreePopoverRef\r\n [ngStyle]=\"dateTreeHelper.popoverStyle\"\r\n [field]=\"dateTreeHelper.popoverField\"\r\n [translation]=\"translation\"\r\n [sourceRows]=\"dateTreePopoverSourceRows\"\r\n [dateFields]=\"dateTreeHelper.dateFields\"\r\n [selectedByField]=\"dateTreeHelper.selectedByField\"\r\n [fieldLabelMap]=\"dateTreeHelper.fieldLabelMap\"\r\n (apply)=\"dateTreeHelper.updateSelection($event)\"\r\n (close)=\"dateTreeHelper.close()\"\r\n></rs-date-tree-filter-popover>\r\n<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"gridBindDataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"gridBindDataSource && gridBindDataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n [headerTemplate]=\"item.showHeaderTemplate ? headerTemplate : undefined\"\r\n [isPrimaryKey]=\"item?.isPrimaryKey ? true : false\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
858
1825
  styles: [""]
859
1826
  }] }
860
1827
  ];
@@ -892,6 +1859,10 @@ var CommonGridComponent = /** @class */ (function () {
892
1859
  alwaysShowCheckbox: [{ type: Input }],
893
1860
  defaultRecord: [{ type: Input }],
894
1861
  disableSystemRow: [{ type: Input }],
1862
+ enableDateTreeFilter: [{ type: Input }],
1863
+ dateTreeFilterFields: [{ type: Input }],
1864
+ dateTreeSourceRows: [{ type: Input }],
1865
+ dateTreeEmitFilteredRows: [{ type: Input }],
895
1866
  recordDoubleClick: [{ type: Output }],
896
1867
  actionComplete: [{ type: Output }],
897
1868
  rowSelected: [{ type: Output }],
@@ -908,7 +1879,11 @@ var CommonGridComponent = /** @class */ (function () {
908
1879
  rowSelecting: [{ type: Output }],
909
1880
  rowDrop: [{ type: Output }],
910
1881
  rowDrag: [{ type: Output }],
911
- rowDragStart: [{ type: Output }]
1882
+ rowDragStart: [{ type: Output }],
1883
+ dateTreeFilteredRows: [{ type: Output }],
1884
+ dateTreePopoverRef: [{ type: ViewChild, args: ["dateTreePopoverRef", { read: ElementRef, static: false },] }],
1885
+ onDocumentMouseDown: [{ type: HostListener, args: ["document:mousedown", ["$event"],] }],
1886
+ onDocumentMouseOver: [{ type: HostListener, args: ["document:mouseover", ["$event"],] }]
912
1887
  };
913
1888
  return CommonGridComponent;
914
1889
  }());
@@ -988,6 +1963,27 @@ if (false) {
988
1963
  CommonGridComponent.prototype.defaultRecord;
989
1964
  /** @type {?} */
990
1965
  CommonGridComponent.prototype.disableSystemRow;
1966
+ /**
1967
+ * 开启日期树筛选(默认关闭,不影响现有页面)
1968
+ * @type {?}
1969
+ */
1970
+ CommonGridComponent.prototype.enableDateTreeFilter;
1971
+ /**
1972
+ * 参与日期树筛选的列名或 hint,如 ['CreatedOn', 'ModifiedOn']
1973
+ * @type {?}
1974
+ */
1975
+ CommonGridComponent.prototype.dateTreeFilterFields;
1976
+ /**
1977
+ * 未筛选原始数据(可选)。
1978
+ * 不传时由组件在 dataSource 变更时自动快照;传则由页面自行维护 raw。
1979
+ * @type {?}
1980
+ */
1981
+ CommonGridComponent.prototype.dateTreeSourceRows;
1982
+ /**
1983
+ * 内聚模式下仍向页面同步筛选结果(默认 false,一般无需绑定)
1984
+ * @type {?}
1985
+ */
1986
+ CommonGridComponent.prototype.dateTreeEmitFilteredRows;
991
1987
  /** @type {?} */
992
1988
  CommonGridComponent.prototype.recordDoubleClick;
993
1989
  /** @type {?} */
@@ -1022,6 +2018,30 @@ if (false) {
1022
2018
  CommonGridComponent.prototype.rowDrag;
1023
2019
  /** @type {?} */
1024
2020
  CommonGridComponent.prototype.rowDragStart;
2021
+ /**
2022
+ * 日期树筛选后的行数据(可选,复杂页面与 dateTreeSourceRows 搭配使用)
2023
+ * @type {?}
2024
+ */
2025
+ CommonGridComponent.prototype.dateTreeFilteredRows;
2026
+ /** @type {?} */
2027
+ CommonGridComponent.prototype.dateTreePopoverRef;
2028
+ /** @type {?} */
2029
+ CommonGridComponent.prototype.dateTreeHelper;
2030
+ /**
2031
+ * 内聚模式:表格实际绑定的数据
2032
+ * @type {?}
2033
+ */
2034
+ CommonGridComponent.prototype.dateTreeDisplayRows;
2035
+ /**
2036
+ * @type {?}
2037
+ * @private
2038
+ */
2039
+ CommonGridComponent.prototype.dateTreeRawRows;
2040
+ /**
2041
+ * @type {?}
2042
+ * @private
2043
+ */
2044
+ CommonGridComponent.prototype.dateTreeApplyingFilter;
1025
2045
  /** @type {?} */
1026
2046
  CommonGridComponent.prototype.selectId;
1027
2047
  /** @type {?} */
@@ -1161,6 +2181,905 @@ if (false) {
1161
2181
  GridActionItemComponent.prototype.ImageType;
1162
2182
  }
1163
2183
 
2184
+ /**
2185
+ * @fileoverview added by tsickle
2186
+ * Generated from: lib/date-tree-filter/date-tree-filter-popover/index.component.ts
2187
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2188
+ */
2189
+ var DateTreeFilterPopoverComponent = /** @class */ (function () {
2190
+ function DateTreeFilterPopoverComponent() {
2191
+ this.field = "";
2192
+ this.sourceRows = [];
2193
+ this.dateFields = [];
2194
+ this.selectedByField = {};
2195
+ this.fieldLabelMap = {};
2196
+ this.apply = new EventEmitter();
2197
+ this.close = new EventEmitter();
2198
+ this.keyword = "";
2199
+ this.years = [];
2200
+ this.expandStateByField = {};
2201
+ this.workingSelectedByField = {};
2202
+ }
2203
+ /**
2204
+ * @param {?} changes
2205
+ * @return {?}
2206
+ */
2207
+ DateTreeFilterPopoverComponent.prototype.ngOnChanges = /**
2208
+ * @param {?} changes
2209
+ * @return {?}
2210
+ */
2211
+ function (changes) {
2212
+ if (changes.field ||
2213
+ changes.sourceRows ||
2214
+ changes.selectedByField ||
2215
+ changes.dateFields) {
2216
+ this.keyword = "";
2217
+ this.workingSelectedByField = this.cloneSelectionMap(this.selectedByField);
2218
+ this.rebuildTree();
2219
+ }
2220
+ };
2221
+ /**
2222
+ * @return {?}
2223
+ */
2224
+ DateTreeFilterPopoverComponent.prototype.closePopover = /**
2225
+ * @return {?}
2226
+ */
2227
+ function () {
2228
+ this.close.emit();
2229
+ };
2230
+ /**
2231
+ * @param {?} value
2232
+ * @return {?}
2233
+ */
2234
+ DateTreeFilterPopoverComponent.prototype.onKeywordChange = /**
2235
+ * @param {?} value
2236
+ * @return {?}
2237
+ */
2238
+ function (value) {
2239
+ this.keyword = value || "";
2240
+ };
2241
+ /**
2242
+ * @return {?}
2243
+ */
2244
+ DateTreeFilterPopoverComponent.prototype.getVisibleYears = /**
2245
+ * @return {?}
2246
+ */
2247
+ function () {
2248
+ /** @type {?} */
2249
+ var searchText = (this.keyword || "").trim().toLowerCase();
2250
+ if (!searchText) {
2251
+ return this.years;
2252
+ }
2253
+ return this.years
2254
+ .map((/**
2255
+ * @param {?} yearNode
2256
+ * @return {?}
2257
+ */
2258
+ function (yearNode) {
2259
+ /** @type {?} */
2260
+ var yearMatched = String(yearNode.year).toLowerCase().indexOf(searchText) > -1;
2261
+ /** @type {?} */
2262
+ var months = yearNode.months
2263
+ .map((/**
2264
+ * @param {?} monthNode
2265
+ * @return {?}
2266
+ */
2267
+ function (monthNode) {
2268
+ /** @type {?} */
2269
+ var monthMatched = String(monthNode.label)
2270
+ .toLowerCase()
2271
+ .indexOf(searchText) > -1;
2272
+ /** @type {?} */
2273
+ var days = monthNode.days.filter((/**
2274
+ * @param {?} dayNode
2275
+ * @return {?}
2276
+ */
2277
+ function (dayNode) {
2278
+ return (String(dayNode.label)
2279
+ .toLowerCase()
2280
+ .indexOf(searchText) > -1);
2281
+ }));
2282
+ if (yearMatched || monthMatched) {
2283
+ return monthNode;
2284
+ }
2285
+ return Object.assign({}, monthNode, { days: days });
2286
+ }))
2287
+ .filter((/**
2288
+ * @param {?} monthNode
2289
+ * @return {?}
2290
+ */
2291
+ function (monthNode) { return monthNode.days.length > 0; }));
2292
+ if (yearMatched) {
2293
+ return yearNode;
2294
+ }
2295
+ return Object.assign({}, yearNode, { months: months });
2296
+ }))
2297
+ .filter((/**
2298
+ * @param {?} yearNode
2299
+ * @return {?}
2300
+ */
2301
+ function (yearNode) { return yearNode.months.length > 0; }));
2302
+ };
2303
+ /**
2304
+ * @param {?} yearNode
2305
+ * @return {?}
2306
+ */
2307
+ DateTreeFilterPopoverComponent.prototype.toggleYearExpanded = /**
2308
+ * @param {?} yearNode
2309
+ * @return {?}
2310
+ */
2311
+ function (yearNode) {
2312
+ /** @type {?} */
2313
+ var state = this.getOrCreateExpandState(this.field);
2314
+ state.years[yearNode.key] = !state.years[yearNode.key];
2315
+ yearNode.expanded = !!state.years[yearNode.key];
2316
+ };
2317
+ /**
2318
+ * @param {?} monthNode
2319
+ * @return {?}
2320
+ */
2321
+ DateTreeFilterPopoverComponent.prototype.toggleMonthExpanded = /**
2322
+ * @param {?} monthNode
2323
+ * @return {?}
2324
+ */
2325
+ function (monthNode) {
2326
+ /** @type {?} */
2327
+ var state = this.getOrCreateExpandState(this.field);
2328
+ state.months[monthNode.key] = !state.months[monthNode.key];
2329
+ monthNode.expanded = !!state.months[monthNode.key];
2330
+ };
2331
+ /**
2332
+ * @return {?}
2333
+ */
2334
+ DateTreeFilterPopoverComponent.prototype.isAllChecked = /**
2335
+ * @return {?}
2336
+ */
2337
+ function () {
2338
+ /** @type {?} */
2339
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2340
+ /** @type {?} */
2341
+ var enabledDayKeys = this.getEnabledDayKeysInCurrentField();
2342
+ if (!enabledDayKeys.length) {
2343
+ return false;
2344
+ }
2345
+ return enabledDayKeys.every((/**
2346
+ * @param {?} key
2347
+ * @return {?}
2348
+ */
2349
+ function (key) { return !!selectedMap[key]; }));
2350
+ };
2351
+ /**
2352
+ * @return {?}
2353
+ */
2354
+ DateTreeFilterPopoverComponent.prototype.isAllIndeterminate = /**
2355
+ * @return {?}
2356
+ */
2357
+ function () {
2358
+ /** @type {?} */
2359
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2360
+ /** @type {?} */
2361
+ var enabledDayKeys = this.getEnabledDayKeysInCurrentField();
2362
+ if (!enabledDayKeys.length) {
2363
+ return false;
2364
+ }
2365
+ /** @type {?} */
2366
+ var selectedCount = enabledDayKeys.filter((/**
2367
+ * @param {?} key
2368
+ * @return {?}
2369
+ */
2370
+ function (key) { return !!selectedMap[key]; }))
2371
+ .length;
2372
+ return selectedCount > 0 && selectedCount < enabledDayKeys.length;
2373
+ };
2374
+ /**
2375
+ * @param {?} checked
2376
+ * @return {?}
2377
+ */
2378
+ DateTreeFilterPopoverComponent.prototype.toggleAllDays = /**
2379
+ * @param {?} checked
2380
+ * @return {?}
2381
+ */
2382
+ function (checked) {
2383
+ /** @type {?} */
2384
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2385
+ /** @type {?} */
2386
+ var enabledDayKeys = this.getEnabledDayKeysInCurrentField();
2387
+ enabledDayKeys.forEach((/**
2388
+ * @param {?} key
2389
+ * @return {?}
2390
+ */
2391
+ function (key) {
2392
+ if (checked) {
2393
+ selectedMap[key] = true;
2394
+ }
2395
+ else {
2396
+ delete selectedMap[key];
2397
+ }
2398
+ }));
2399
+ };
2400
+ /**
2401
+ * @param {?} dayNode
2402
+ * @return {?}
2403
+ */
2404
+ DateTreeFilterPopoverComponent.prototype.isDayChecked = /**
2405
+ * @param {?} dayNode
2406
+ * @return {?}
2407
+ */
2408
+ function (dayNode) {
2409
+ /** @type {?} */
2410
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2411
+ return !!selectedMap[dayNode.key];
2412
+ };
2413
+ /**
2414
+ * @param {?} dayNode
2415
+ * @param {?} checked
2416
+ * @return {?}
2417
+ */
2418
+ DateTreeFilterPopoverComponent.prototype.toggleDay = /**
2419
+ * @param {?} dayNode
2420
+ * @param {?} checked
2421
+ * @return {?}
2422
+ */
2423
+ function (dayNode, checked) {
2424
+ if (dayNode.disabled) {
2425
+ return;
2426
+ }
2427
+ /** @type {?} */
2428
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2429
+ if (checked) {
2430
+ selectedMap[dayNode.key] = true;
2431
+ }
2432
+ else {
2433
+ delete selectedMap[dayNode.key];
2434
+ }
2435
+ };
2436
+ /**
2437
+ * @param {?} monthNode
2438
+ * @return {?}
2439
+ */
2440
+ DateTreeFilterPopoverComponent.prototype.isMonthDisabled = /**
2441
+ * @param {?} monthNode
2442
+ * @return {?}
2443
+ */
2444
+ function (monthNode) {
2445
+ return monthNode.days.every((/**
2446
+ * @param {?} dayNode
2447
+ * @return {?}
2448
+ */
2449
+ function (dayNode) { return dayNode.disabled; }));
2450
+ };
2451
+ /**
2452
+ * @param {?} monthNode
2453
+ * @return {?}
2454
+ */
2455
+ DateTreeFilterPopoverComponent.prototype.isMonthChecked = /**
2456
+ * @param {?} monthNode
2457
+ * @return {?}
2458
+ */
2459
+ function (monthNode) {
2460
+ if (this.isMonthDisabled(monthNode)) {
2461
+ return false;
2462
+ }
2463
+ /** @type {?} */
2464
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2465
+ /** @type {?} */
2466
+ var enabledDays = monthNode.days.filter((/**
2467
+ * @param {?} dayNode
2468
+ * @return {?}
2469
+ */
2470
+ function (dayNode) { return !dayNode.disabled; }));
2471
+ return enabledDays.every((/**
2472
+ * @param {?} dayNode
2473
+ * @return {?}
2474
+ */
2475
+ function (dayNode) { return !!selectedMap[dayNode.key]; }));
2476
+ };
2477
+ /**
2478
+ * @param {?} monthNode
2479
+ * @return {?}
2480
+ */
2481
+ DateTreeFilterPopoverComponent.prototype.isMonthIndeterminate = /**
2482
+ * @param {?} monthNode
2483
+ * @return {?}
2484
+ */
2485
+ function (monthNode) {
2486
+ if (this.isMonthDisabled(monthNode)) {
2487
+ return false;
2488
+ }
2489
+ /** @type {?} */
2490
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2491
+ /** @type {?} */
2492
+ var enabledDays = monthNode.days.filter((/**
2493
+ * @param {?} dayNode
2494
+ * @return {?}
2495
+ */
2496
+ function (dayNode) { return !dayNode.disabled; }));
2497
+ /** @type {?} */
2498
+ var selectedCount = enabledDays.filter((/**
2499
+ * @param {?} dayNode
2500
+ * @return {?}
2501
+ */
2502
+ function (dayNode) {
2503
+ return !!selectedMap[dayNode.key];
2504
+ })).length;
2505
+ return selectedCount > 0 && selectedCount < enabledDays.length;
2506
+ };
2507
+ /**
2508
+ * @param {?} monthNode
2509
+ * @param {?} checked
2510
+ * @return {?}
2511
+ */
2512
+ DateTreeFilterPopoverComponent.prototype.toggleMonth = /**
2513
+ * @param {?} monthNode
2514
+ * @param {?} checked
2515
+ * @return {?}
2516
+ */
2517
+ function (monthNode, checked) {
2518
+ if (this.isMonthDisabled(monthNode)) {
2519
+ return;
2520
+ }
2521
+ /** @type {?} */
2522
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2523
+ monthNode.days.forEach((/**
2524
+ * @param {?} dayNode
2525
+ * @return {?}
2526
+ */
2527
+ function (dayNode) {
2528
+ if (dayNode.disabled) {
2529
+ return;
2530
+ }
2531
+ if (checked) {
2532
+ selectedMap[dayNode.key] = true;
2533
+ }
2534
+ else {
2535
+ delete selectedMap[dayNode.key];
2536
+ }
2537
+ }));
2538
+ };
2539
+ /**
2540
+ * @param {?} yearNode
2541
+ * @return {?}
2542
+ */
2543
+ DateTreeFilterPopoverComponent.prototype.isYearDisabled = /**
2544
+ * @param {?} yearNode
2545
+ * @return {?}
2546
+ */
2547
+ function (yearNode) {
2548
+ var _this = this;
2549
+ return yearNode.months.every((/**
2550
+ * @param {?} monthNode
2551
+ * @return {?}
2552
+ */
2553
+ function (monthNode) {
2554
+ return _this.isMonthDisabled(monthNode);
2555
+ }));
2556
+ };
2557
+ /**
2558
+ * @param {?} yearNode
2559
+ * @return {?}
2560
+ */
2561
+ DateTreeFilterPopoverComponent.prototype.isYearChecked = /**
2562
+ * @param {?} yearNode
2563
+ * @return {?}
2564
+ */
2565
+ function (yearNode) {
2566
+ var _this = this;
2567
+ if (this.isYearDisabled(yearNode)) {
2568
+ return false;
2569
+ }
2570
+ /** @type {?} */
2571
+ var enabledMonths = yearNode.months.filter((/**
2572
+ * @param {?} monthNode
2573
+ * @return {?}
2574
+ */
2575
+ function (monthNode) { return !_this.isMonthDisabled(monthNode); }));
2576
+ return enabledMonths.every((/**
2577
+ * @param {?} monthNode
2578
+ * @return {?}
2579
+ */
2580
+ function (monthNode) { return _this.isMonthChecked(monthNode); }));
2581
+ };
2582
+ /**
2583
+ * @param {?} yearNode
2584
+ * @return {?}
2585
+ */
2586
+ DateTreeFilterPopoverComponent.prototype.isYearIndeterminate = /**
2587
+ * @param {?} yearNode
2588
+ * @return {?}
2589
+ */
2590
+ function (yearNode) {
2591
+ if (this.isYearDisabled(yearNode)) {
2592
+ return false;
2593
+ }
2594
+ /** @type {?} */
2595
+ var selectedMap = this.getFieldDaySelectionMap(this.field);
2596
+ /** @type {?} */
2597
+ var enabledDays = [];
2598
+ yearNode.months.forEach((/**
2599
+ * @param {?} monthNode
2600
+ * @return {?}
2601
+ */
2602
+ function (monthNode) {
2603
+ monthNode.days.forEach((/**
2604
+ * @param {?} dayNode
2605
+ * @return {?}
2606
+ */
2607
+ function (dayNode) {
2608
+ if (!dayNode.disabled) {
2609
+ enabledDays.push(dayNode.key);
2610
+ }
2611
+ }));
2612
+ }));
2613
+ /** @type {?} */
2614
+ var selectedCount = enabledDays.filter((/**
2615
+ * @param {?} key
2616
+ * @return {?}
2617
+ */
2618
+ function (key) { return !!selectedMap[key]; })).length;
2619
+ return selectedCount > 0 && selectedCount < enabledDays.length;
2620
+ };
2621
+ /**
2622
+ * @param {?} yearNode
2623
+ * @param {?} checked
2624
+ * @return {?}
2625
+ */
2626
+ DateTreeFilterPopoverComponent.prototype.toggleYear = /**
2627
+ * @param {?} yearNode
2628
+ * @param {?} checked
2629
+ * @return {?}
2630
+ */
2631
+ function (yearNode, checked) {
2632
+ var _this = this;
2633
+ if (this.isYearDisabled(yearNode)) {
2634
+ return;
2635
+ }
2636
+ yearNode.months.forEach((/**
2637
+ * @param {?} monthNode
2638
+ * @return {?}
2639
+ */
2640
+ function (monthNode) {
2641
+ _this.toggleMonth(monthNode, checked);
2642
+ }));
2643
+ };
2644
+ /**
2645
+ * @return {?}
2646
+ */
2647
+ DateTreeFilterPopoverComponent.prototype.clearSelection = /**
2648
+ * @return {?}
2649
+ */
2650
+ function () {
2651
+ if (this.field) {
2652
+ this.workingSelectedByField[this.field] = {};
2653
+ }
2654
+ this.apply.emit(this.cloneSelectionMap(this.workingSelectedByField));
2655
+ this.rebuildTree();
2656
+ };
2657
+ /**
2658
+ * @return {?}
2659
+ */
2660
+ DateTreeFilterPopoverComponent.prototype.applySelection = /**
2661
+ * @return {?}
2662
+ */
2663
+ function () {
2664
+ this.apply.emit(this.cloneSelectionMap(this.workingSelectedByField));
2665
+ this.closePopover();
2666
+ };
2667
+ /**
2668
+ * @private
2669
+ * @return {?}
2670
+ */
2671
+ DateTreeFilterPopoverComponent.prototype.rebuildTree = /**
2672
+ * @private
2673
+ * @return {?}
2674
+ */
2675
+ function () {
2676
+ var _this = this;
2677
+ if (!this.field) {
2678
+ this.years = [];
2679
+ return;
2680
+ }
2681
+ /** @type {?} */
2682
+ var sourceRows = this.sourceRows || [];
2683
+ /** @type {?} */
2684
+ var rowsByOtherFilters = this.filterRowsBySelectedDateTree(sourceRows, this.field);
2685
+ /** @type {?} */
2686
+ var availableDayKeyMap = {};
2687
+ rowsByOtherFilters.forEach((/**
2688
+ * @param {?} row
2689
+ * @return {?}
2690
+ */
2691
+ function (row) {
2692
+ /** @type {?} */
2693
+ var dayKey = _this.getDayKeyByRowValue(row[_this.field]);
2694
+ if (dayKey) {
2695
+ availableDayKeyMap[dayKey] = true;
2696
+ }
2697
+ }));
2698
+ /** @type {?} */
2699
+ var groupedMap = {};
2700
+ sourceRows.forEach((/**
2701
+ * @param {?} row
2702
+ * @return {?}
2703
+ */
2704
+ function (row) {
2705
+ /** @type {?} */
2706
+ var date = _this.parseDateValue(row[_this.field]);
2707
+ if (!date) {
2708
+ return;
2709
+ }
2710
+ /** @type {?} */
2711
+ var year = date.getFullYear();
2712
+ /** @type {?} */
2713
+ var month = date.getMonth() + 1;
2714
+ /** @type {?} */
2715
+ var day = date.getDate();
2716
+ if (!groupedMap[year]) {
2717
+ groupedMap[year] = {};
2718
+ }
2719
+ if (!groupedMap[year][month]) {
2720
+ groupedMap[year][month] = {};
2721
+ }
2722
+ if (!groupedMap[year][month][day]) {
2723
+ groupedMap[year][month][day] = 0;
2724
+ }
2725
+ groupedMap[year][month][day] += 1;
2726
+ }));
2727
+ /** @type {?} */
2728
+ var expandState = this.getOrCreateExpandState(this.field);
2729
+ this.years = Object.keys(groupedMap)
2730
+ .map((/**
2731
+ * @param {?} key
2732
+ * @return {?}
2733
+ */
2734
+ function (key) { return Number(key); }))
2735
+ .sort((/**
2736
+ * @param {?} a
2737
+ * @param {?} b
2738
+ * @return {?}
2739
+ */
2740
+ function (a, b) { return b - a; }))
2741
+ .map((/**
2742
+ * @param {?} year
2743
+ * @return {?}
2744
+ */
2745
+ function (year) {
2746
+ /** @type {?} */
2747
+ var months = Object.keys(groupedMap[year])
2748
+ .map((/**
2749
+ * @param {?} key
2750
+ * @return {?}
2751
+ */
2752
+ function (key) { return Number(key); }))
2753
+ .sort((/**
2754
+ * @param {?} a
2755
+ * @param {?} b
2756
+ * @return {?}
2757
+ */
2758
+ function (a, b) { return a - b; }))
2759
+ .map((/**
2760
+ * @param {?} month
2761
+ * @return {?}
2762
+ */
2763
+ function (month) {
2764
+ /** @type {?} */
2765
+ var monthKey = year + "-" + _this.pad2(month);
2766
+ if (expandState.months[monthKey] === undefined) {
2767
+ expandState.months[monthKey] = true;
2768
+ }
2769
+ /** @type {?} */
2770
+ var days = Object.keys(groupedMap[year][month])
2771
+ .map((/**
2772
+ * @param {?} key
2773
+ * @return {?}
2774
+ */
2775
+ function (key) { return Number(key); }))
2776
+ .sort((/**
2777
+ * @param {?} a
2778
+ * @param {?} b
2779
+ * @return {?}
2780
+ */
2781
+ function (a, b) { return a - b; }))
2782
+ .map((/**
2783
+ * @param {?} day
2784
+ * @return {?}
2785
+ */
2786
+ function (day) {
2787
+ /** @type {?} */
2788
+ var dayKey = _this.toDayKey(year, month, day);
2789
+ /** @type {?} */
2790
+ var dayDate = new Date(year, month - 1, day);
2791
+ return {
2792
+ key: dayKey,
2793
+ day: day,
2794
+ label: moment(dayDate).format("D MMM YYYY"),
2795
+ count: groupedMap[year][month][day],
2796
+ disabled: !availableDayKeyMap[dayKey],
2797
+ };
2798
+ }));
2799
+ return {
2800
+ key: monthKey,
2801
+ month: month,
2802
+ label: moment()
2803
+ .month(month - 1)
2804
+ .format("MMM"),
2805
+ expanded: !!expandState.months[monthKey],
2806
+ days: days,
2807
+ };
2808
+ }));
2809
+ /** @type {?} */
2810
+ var yearKey = String(year);
2811
+ if (expandState.years[yearKey] === undefined) {
2812
+ expandState.years[yearKey] = true;
2813
+ }
2814
+ return {
2815
+ key: yearKey,
2816
+ year: year,
2817
+ expanded: !!expandState.years[yearKey],
2818
+ months: months,
2819
+ };
2820
+ }));
2821
+ };
2822
+ /**
2823
+ * @private
2824
+ * @param {?} rows
2825
+ * @param {?=} excludeField
2826
+ * @return {?}
2827
+ */
2828
+ DateTreeFilterPopoverComponent.prototype.filterRowsBySelectedDateTree = /**
2829
+ * @private
2830
+ * @param {?} rows
2831
+ * @param {?=} excludeField
2832
+ * @return {?}
2833
+ */
2834
+ function (rows, excludeField) {
2835
+ var _this = this;
2836
+ /** @type {?} */
2837
+ var filteredRows = rows ? rows.slice() : [];
2838
+ (this.dateFields || []).forEach((/**
2839
+ * @param {?} field
2840
+ * @return {?}
2841
+ */
2842
+ function (field) {
2843
+ if (excludeField && field === excludeField) {
2844
+ return;
2845
+ }
2846
+ /** @type {?} */
2847
+ var selectedMap = _this.getFieldDaySelectionMap(field);
2848
+ /** @type {?} */
2849
+ var selectedKeys = Object.keys(selectedMap);
2850
+ if (!selectedKeys.length) {
2851
+ return;
2852
+ }
2853
+ filteredRows = filteredRows.filter((/**
2854
+ * @param {?} row
2855
+ * @return {?}
2856
+ */
2857
+ function (row) {
2858
+ /** @type {?} */
2859
+ var dayKey = _this.getDayKeyByRowValue(row[field]);
2860
+ return dayKey ? !!selectedMap[dayKey] : false;
2861
+ }));
2862
+ }));
2863
+ return filteredRows;
2864
+ };
2865
+ /**
2866
+ * @private
2867
+ * @param {?} value
2868
+ * @return {?}
2869
+ */
2870
+ DateTreeFilterPopoverComponent.prototype.parseDateValue = /**
2871
+ * @private
2872
+ * @param {?} value
2873
+ * @return {?}
2874
+ */
2875
+ function (value) {
2876
+ if (!value) {
2877
+ return null;
2878
+ }
2879
+ if (value instanceof Date) {
2880
+ return value;
2881
+ }
2882
+ /** @type {?} */
2883
+ var parsed = moment(value, [
2884
+ "YYYY-MM-DD",
2885
+ "MM/DD/YYYY",
2886
+ "DD/MM/YYYY",
2887
+ "YYYY/MM/DD",
2888
+ "DD-MMM-YYYY",
2889
+ "MMM DD, YYYY",
2890
+ moment.ISO_8601,
2891
+ ], true);
2892
+ if (parsed.isValid()) {
2893
+ return parsed.toDate();
2894
+ }
2895
+ /** @type {?} */
2896
+ var fallback = new Date(value);
2897
+ return isNaN(fallback.getTime()) ? null : fallback;
2898
+ };
2899
+ /**
2900
+ * @private
2901
+ * @param {?} field
2902
+ * @return {?}
2903
+ */
2904
+ DateTreeFilterPopoverComponent.prototype.getOrCreateExpandState = /**
2905
+ * @private
2906
+ * @param {?} field
2907
+ * @return {?}
2908
+ */
2909
+ function (field) {
2910
+ if (!this.expandStateByField[field]) {
2911
+ this.expandStateByField[field] = { years: {}, months: {} };
2912
+ }
2913
+ return this.expandStateByField[field];
2914
+ };
2915
+ /**
2916
+ * @private
2917
+ * @param {?} field
2918
+ * @return {?}
2919
+ */
2920
+ DateTreeFilterPopoverComponent.prototype.getFieldDaySelectionMap = /**
2921
+ * @private
2922
+ * @param {?} field
2923
+ * @return {?}
2924
+ */
2925
+ function (field) {
2926
+ if (!this.workingSelectedByField[field]) {
2927
+ this.workingSelectedByField[field] = {};
2928
+ }
2929
+ return this.workingSelectedByField[field];
2930
+ };
2931
+ /**
2932
+ * @private
2933
+ * @param {?} year
2934
+ * @param {?} month
2935
+ * @param {?} day
2936
+ * @return {?}
2937
+ */
2938
+ DateTreeFilterPopoverComponent.prototype.toDayKey = /**
2939
+ * @private
2940
+ * @param {?} year
2941
+ * @param {?} month
2942
+ * @param {?} day
2943
+ * @return {?}
2944
+ */
2945
+ function (year, month, day) {
2946
+ return year + "-" + this.pad2(month) + "-" + this.pad2(day);
2947
+ };
2948
+ /**
2949
+ * @private
2950
+ * @param {?} value
2951
+ * @return {?}
2952
+ */
2953
+ DateTreeFilterPopoverComponent.prototype.pad2 = /**
2954
+ * @private
2955
+ * @param {?} value
2956
+ * @return {?}
2957
+ */
2958
+ function (value) {
2959
+ return value < 10 ? "0" + value : String(value);
2960
+ };
2961
+ /**
2962
+ * @private
2963
+ * @param {?} value
2964
+ * @return {?}
2965
+ */
2966
+ DateTreeFilterPopoverComponent.prototype.getDayKeyByRowValue = /**
2967
+ * @private
2968
+ * @param {?} value
2969
+ * @return {?}
2970
+ */
2971
+ function (value) {
2972
+ /** @type {?} */
2973
+ var date = this.parseDateValue(value);
2974
+ if (!date) {
2975
+ return "";
2976
+ }
2977
+ return this.toDayKey(date.getFullYear(), date.getMonth() + 1, date.getDate());
2978
+ };
2979
+ /**
2980
+ * @private
2981
+ * @return {?}
2982
+ */
2983
+ DateTreeFilterPopoverComponent.prototype.getEnabledDayKeysInCurrentField = /**
2984
+ * @private
2985
+ * @return {?}
2986
+ */
2987
+ function () {
2988
+ /** @type {?} */
2989
+ var keys = [];
2990
+ this.years.forEach((/**
2991
+ * @param {?} yearNode
2992
+ * @return {?}
2993
+ */
2994
+ function (yearNode) {
2995
+ yearNode.months.forEach((/**
2996
+ * @param {?} monthNode
2997
+ * @return {?}
2998
+ */
2999
+ function (monthNode) {
3000
+ monthNode.days.forEach((/**
3001
+ * @param {?} dayNode
3002
+ * @return {?}
3003
+ */
3004
+ function (dayNode) {
3005
+ if (!dayNode.disabled) {
3006
+ keys.push(dayNode.key);
3007
+ }
3008
+ }));
3009
+ }));
3010
+ }));
3011
+ return keys;
3012
+ };
3013
+ /**
3014
+ * @private
3015
+ * @param {?} source
3016
+ * @return {?}
3017
+ */
3018
+ DateTreeFilterPopoverComponent.prototype.cloneSelectionMap = /**
3019
+ * @private
3020
+ * @param {?} source
3021
+ * @return {?}
3022
+ */
3023
+ function (source) {
3024
+ try {
3025
+ return source ? JSON.parse(JSON.stringify(source)) : {};
3026
+ }
3027
+ catch (e) {
3028
+ return {};
3029
+ }
3030
+ };
3031
+ DateTreeFilterPopoverComponent.decorators = [
3032
+ { type: Component, args: [{
3033
+ selector: "rs-date-tree-filter-popover",
3034
+ template: "<div class=\"date-tree-filter-popover\">\r\n <div class=\"popover-search\">\r\n <span class=\"search-icon\"><img src=\"/assets/img/search.svg\" alt=\"\" /></span>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"translation.SEARCH || '.SEARCH'\"\r\n [value]=\"keyword\"\r\n (input)=\"onKeywordChange($event.target.value)\"\r\n />\r\n </div>\r\n\r\n <div class=\"popover-tree\">\r\n <label class=\"tree-row all-row\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllChecked()\"\r\n [indeterminate]=\"isAllIndeterminate()\"\r\n (change)=\"toggleAllDays($event.target.checked)\"\r\n />\r\n <span class=\"row-label\">{{ translation.ALL || '.ALL' }}</span>\r\n </label>\r\n\r\n <div class=\"year-block\" *ngFor=\"let yearNode of getVisibleYears()\">\r\n <div class=\"tree-row\">\r\n <button\r\n type=\"button\"\r\n class=\"tree-toggle-btn\"\r\n (click)=\"toggleYearExpanded(yearNode); $event.stopPropagation()\"\r\n >\r\n <span class=\"tree-arrow\" [ngClass]=\"{ expanded: yearNode.expanded }\"></span>\r\n </button>\r\n <input\r\n type=\"checkbox\"\r\n [disabled]=\"isYearDisabled(yearNode)\"\r\n [checked]=\"isYearChecked(yearNode)\"\r\n [indeterminate]=\"isYearIndeterminate(yearNode)\"\r\n (change)=\"toggleYear(yearNode, $event.target.checked)\"\r\n />\r\n <span class=\"row-label\">{{ yearNode.year }}</span>\r\n </div>\r\n\r\n <div class=\"month-block\" *ngIf=\"yearNode.expanded\">\r\n <div class=\"month-item\" *ngFor=\"let monthNode of yearNode.months\">\r\n <div class=\"tree-row\">\r\n <button\r\n type=\"button\"\r\n class=\"tree-toggle-btn\"\r\n (click)=\"toggleMonthExpanded(monthNode); $event.stopPropagation()\"\r\n >\r\n <span class=\"tree-arrow\" [ngClass]=\"{ expanded: monthNode.expanded }\"></span>\r\n </button>\r\n <input\r\n type=\"checkbox\"\r\n [disabled]=\"isMonthDisabled(monthNode)\"\r\n [checked]=\"isMonthChecked(monthNode)\"\r\n [indeterminate]=\"isMonthIndeterminate(monthNode)\"\r\n (change)=\"toggleMonth(monthNode, $event.target.checked)\"\r\n />\r\n <span class=\"row-label\">{{ monthNode.label }}</span>\r\n </div>\r\n\r\n <div class=\"day-block\" *ngIf=\"monthNode.expanded\">\r\n <label\r\n class=\"tree-row day-row\"\r\n *ngFor=\"let dayNode of monthNode.days\"\r\n [ngClass]=\"{ disabled: dayNode.disabled }\"\r\n >\r\n <span class=\"tree-toggle-spacer\"></span>\r\n <input\r\n type=\"checkbox\"\r\n [disabled]=\"dayNode.disabled\"\r\n [checked]=\"isDayChecked(dayNode)\"\r\n (change)=\"toggleDay(dayNode, $event.target.checked)\"\r\n />\r\n <span class=\"row-label\">{{ dayNode.label }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popover-footer\">\r\n <button type=\"button\" (click)=\"clearSelection()\">\r\n {{ translation.CLEAR || '.CLEAR' }}\r\n </button>\r\n <button type=\"button\" class=\"primary-btn\" (click)=\"applySelection()\">\r\n {{ translation.APPLY || '.APPLY' }}\r\n </button>\r\n </div>\r\n</div>\r\n",
3035
+ styles: [":host{position:fixed;left:12px;top:12px;z-index:20;width:300px}.date-tree-filter-popover{background:#fff;border:1px solid #eaedf0;border-radius:10px;box-shadow:0 0 4px rgba(0,0,0,.25);padding:4px 8px;display:flex;flex-direction:column;color:#44566c;font-family:Arial}.popover-search{position:relative;padding:4px 0 8px}.popover-search .search-icon{position:absolute;left:10px;top:10px;color:#929dab;font-size:12px;line-height:12px}.popover-search input{width:100%;height:28px;border:1px solid #eaedf0;border-radius:16px;padding:0 10px 0 28px;outline:0;font-size:12px;color:#44566c}.popover-tree{max-height:320px;overflow:auto;padding-right:2px}.tree-row{display:flex;align-items:center;min-height:24px;font-size:11px;line-height:14px;color:#44566c}.tree-row input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;margin:0 6px 0 0;box-sizing:border-box;border:1px solid #d8d8d8;border-radius:3px;background-color:#fff;cursor:pointer;vertical-align:middle;flex-shrink:0}.tree-row input[type=checkbox]:checked{border-color:#1f7bff;background-color:#1f7bff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 9 9' fill='none'%3E%3Cpath d='M0.5 4.31818L3 7.5L5.75 4L8.5 0.5' stroke='white' stroke-linecap='round'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center;background-size:9px 9px}.tree-row input[type=checkbox]:indeterminate{border-color:#1f7bff;background-color:#1f7bff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='9' viewBox='0 0 9 9' fill='none'%3E%3Cpath d='M1.5 4.5H7.5' stroke='white' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:center;background-size:9px 9px}.tree-row input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.all-row{padding-left:20px;margin-bottom:2px}.year-block{margin-bottom:2px}.month-block{padding-left:20px}.day-block{padding-left:24px}.tree-toggle-btn{width:16px;height:16px;padding:0;margin-right:4px;border:none;background:0 0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.tree-arrow{display:inline-block;width:6px;height:6px;border-right:1px solid #6c7c90;border-bottom:1px solid #6c7c90;transform:rotate(-45deg);transition:transform .15s}.tree-arrow.expanded{transform:rotate(45deg)}.tree-toggle-spacer{width:20px;display:inline-block}.row-label{color:#44566c}.day-row.disabled .row-label{color:#adb5bd}.popover-footer{margin-top:8px;padding:12px 0 8px;border-top:1px solid #eaedf0;display:flex;justify-content:flex-end;gap:12px}.popover-footer button{min-width:56px;height:26px;padding:0 8px;border-radius:4px;border:1px solid #dbe1e7;background:#fff;font-size:11px;color:#44566c;cursor:pointer}.popover-footer .primary-btn{background:#1364b3;border-color:#1364b3;color:#fff}"]
3036
+ }] }
3037
+ ];
3038
+ DateTreeFilterPopoverComponent.propDecorators = {
3039
+ field: [{ type: Input }],
3040
+ translation: [{ type: Input }],
3041
+ sourceRows: [{ type: Input }],
3042
+ dateFields: [{ type: Input }],
3043
+ selectedByField: [{ type: Input }],
3044
+ fieldLabelMap: [{ type: Input }],
3045
+ apply: [{ type: Output }],
3046
+ close: [{ type: Output }]
3047
+ };
3048
+ return DateTreeFilterPopoverComponent;
3049
+ }());
3050
+ if (false) {
3051
+ /** @type {?} */
3052
+ DateTreeFilterPopoverComponent.prototype.field;
3053
+ /** @type {?} */
3054
+ DateTreeFilterPopoverComponent.prototype.translation;
3055
+ /** @type {?} */
3056
+ DateTreeFilterPopoverComponent.prototype.sourceRows;
3057
+ /** @type {?} */
3058
+ DateTreeFilterPopoverComponent.prototype.dateFields;
3059
+ /** @type {?} */
3060
+ DateTreeFilterPopoverComponent.prototype.selectedByField;
3061
+ /** @type {?} */
3062
+ DateTreeFilterPopoverComponent.prototype.fieldLabelMap;
3063
+ /** @type {?} */
3064
+ DateTreeFilterPopoverComponent.prototype.apply;
3065
+ /** @type {?} */
3066
+ DateTreeFilterPopoverComponent.prototype.close;
3067
+ /** @type {?} */
3068
+ DateTreeFilterPopoverComponent.prototype.keyword;
3069
+ /** @type {?} */
3070
+ DateTreeFilterPopoverComponent.prototype.years;
3071
+ /**
3072
+ * @type {?}
3073
+ * @private
3074
+ */
3075
+ DateTreeFilterPopoverComponent.prototype.expandStateByField;
3076
+ /**
3077
+ * @type {?}
3078
+ * @private
3079
+ */
3080
+ DateTreeFilterPopoverComponent.prototype.workingSelectedByField;
3081
+ }
3082
+
1164
3083
  /**
1165
3084
  * @fileoverview added by tsickle
1166
3085
  * Generated from: lib/float-box/index.component.ts
@@ -23864,7 +25783,7 @@ var CommonDialogComponent = /** @class */ (function () {
23864
25783
  { type: Component, args: [{
23865
25784
  selector: "rs-common-dialog",
23866
25785
  template: "<div class=\"dialog\" [ngClass]=\"size\" [ngStyle]=\"dialogStyle\">\r\n <!-- \u5934\u90E8 -->\r\n <div *ngIf=\"!hideHeader\" mat-dialog-title class=\"dialog__header\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n </div>\r\n </ng-template>\r\n <!-- <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </div> -->\r\n <div class=\"header__actions\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-btn\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div *ngIf=\"!hideCloseIcon\" class=\"header-btn\" (click)=\"onClose()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- \u5185\u5BB9 -->\r\n <div class=\"dialog__content\" mat-dialog-content>\r\n <ng-content></ng-content>\r\n </div>\r\n <!-- \u5E95\u90E8\u6309\u94AE -->\r\n <div mat-dialog-actions class=\"dialog__footer\">\r\n <ng-content select=\"[footerSlot]\"></ng-content>\r\n <!-- \u9ED8\u8BA4\u5C55\u793A\u4FDD\u5B58/\u5173\u95ED\u6309\u94AE -->\r\n <ng-container *ngIf=\"!customFooter\">\r\n <ng-template [ngTemplateOutlet]=\"defaultTemplate\"></ng-template>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <button *ngIf=\"!hideCloseBtn\" class=\"e-btn\" (click)=\"onClose()\">\r\n {{ cancelBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideDiscardBtn\" class=\"e-btn\" (click)=\"onDiscard()\">\r\n {{ discardBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideSaveBtn\" class=\"e-btn e-primary\" (click)=\"onSave()\">\r\n {{ saveBtnLabel }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- loading -->\r\n <div class=\"dialog__loading\" [hidden]=\"!loading\">\r\n <img src=\"../../../assets/img/raise_loading.gif\" alt=\"\" />\r\n </div>\r\n</div>\r\n",
23867
- styles: [":host::ng-deep .dialog{position:relative;max-height:90vh;font-weight:400;padding:20px;overflow:hidden;display:flex;flex-direction:column}:host::ng-deep .dialog.largest{width:96vw!important;height:88vh!important;max-width:2100px;padding:20px}:host::ng-deep .dialog.medium{width:500px;padding:20px}:host::ng-deep .dialog.small{width:350px;padding:20px 16px}:host::ng-deep .dialog.small .dialog__header{color:#002c4f;margin-bottom:16px}:host::ng-deep .dialog.small .dialog__header .header__title{font-size:13px;line-height:16px}:host::ng-deep .dialog.small .dialog__content{font-size:12px;line-height:16px}:host::ng-deep .dialog.small .dialog__footer{min-height:42px;padding:16px 0 0;font-size:12px;line-height:14px}:host::ng-deep .dialog.small .dialog__footer button{padding:6px 12px;min-width:60px}:host::ng-deep .dialog.large{width:800px;padding:20px}:host::ng-deep .dialog .dialog__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:0}:host::ng-deep .dialog .dialog__header::before{display:none}:host::ng-deep .dialog .dialog__header .header__title{color:#002c4f;font-family:Arial;font-size:15px;font-weight:700;line-height:18px;flex:1;overflow:hidden;display:flex;align-items:center;gap:8px}:host::ng-deep .dialog .dialog__header .header__actions{display:flex;align-items:center;gap:20px}:host::ng-deep .dialog .dialog__header .header-icon{display:block}:host::ng-deep .dialog .dialog__header .header-btn{cursor:pointer;padding:2px;display:flex;justify-content:center;align-items:center}:host::ng-deep .dialog .dialog__content{width:100%;min-height:38px;position:relative;overflow-y:auto;overflow-x:hidden;margin:0;padding:0;font-size:13px;line-height:19px;flex:1;height:0}:host::ng-deep .dialog .dialog__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:20px 0 0;font-size:13px;line-height:16px;margin-bottom:0}:host::ng-deep .dialog .dialog__loading{height:100%;background:0 0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999}:host::ng-deep .dialog .dialog__loading img{position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}"]
25786
+ styles: [":host::ng-deep .dialog{position:relative;max-height:90vh;max-width:90vw;font-weight:400;padding:20px;overflow:hidden;display:flex;flex-direction:column}:host::ng-deep .dialog.largest{width:96vw!important;height:88vh!important;max-width:2100px;padding:20px}:host::ng-deep .dialog.medium{width:500px;padding:20px}:host::ng-deep .dialog.small{width:350px;padding:20px 16px}:host::ng-deep .dialog.small .dialog__header{color:#002c4f;margin-bottom:16px}:host::ng-deep .dialog.small .dialog__header .header__title{font-size:13px;line-height:16px}:host::ng-deep .dialog.small .dialog__content{font-size:12px;line-height:16px}:host::ng-deep .dialog.small .dialog__footer{min-height:42px;padding:16px 0 0;font-size:12px;line-height:14px}:host::ng-deep .dialog.small .dialog__footer button{padding:6px 12px;min-width:60px}:host::ng-deep .dialog.large{width:800px;padding:20px}:host::ng-deep .dialog .dialog__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:0}:host::ng-deep .dialog .dialog__header::before{display:none}:host::ng-deep .dialog .dialog__header .header__title{color:#002c4f;font-family:Arial;font-size:15px;font-weight:700;line-height:18px;flex:1;overflow:hidden;display:flex;align-items:center;gap:8px}:host::ng-deep .dialog .dialog__header .header__actions{display:flex;align-items:center;gap:20px}:host::ng-deep .dialog .dialog__header .header-icon{display:block}:host::ng-deep .dialog .dialog__header .header-btn{cursor:pointer;padding:2px;display:flex;justify-content:center;align-items:center}:host::ng-deep .dialog .dialog__content{width:100%;min-height:38px;position:relative;overflow-y:auto;overflow-x:hidden;margin:0;padding:0;font-size:13px;line-height:19px;flex:1;height:0}:host::ng-deep .dialog .dialog__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:20px 0 0;font-size:13px;line-height:16px;margin-bottom:0}:host::ng-deep .dialog .dialog__loading{height:100%;background:0 0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999}:host::ng-deep .dialog .dialog__loading img{position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}"]
23868
25787
  }] }
23869
25788
  ];
23870
25789
  /** @nocollapse */
@@ -36083,284 +38002,6 @@ if (false) {
36083
38002
  ConfirmSelectComponent.prototype.isInteracted;
36084
38003
  }
36085
38004
 
36086
- /**
36087
- * @fileoverview added by tsickle
36088
- * Generated from: lib/form/richtexteditor/ai-config.ts
36089
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
36090
- */
36091
- /**
36092
- * @record
36093
- */
36094
- function AIConfig() { }
36095
- if (false) {
36096
- /** @type {?} */
36097
- AIConfig.prototype.endpoint;
36098
- /** @type {?} */
36099
- AIConfig.prototype.apiKey;
36100
- /** @type {?} */
36101
- AIConfig.prototype.deployment;
36102
- /** @type {?} */
36103
- AIConfig.prototype.apiVersion;
36104
- /** @type {?} */
36105
- AIConfig.prototype.enabled;
36106
- }
36107
- // 从环境配置获取AI配置
36108
- /**
36109
- * @return {?}
36110
- */
36111
- function getAIConfig() {
36112
- return {
36113
- endpoint: "https://aidevused.openai.azure.com/",
36114
- apiKey: "ccba76e279f64653a50ac4fee90afe5c",
36115
- deployment: "gpt-4",
36116
- apiVersion: "2025-01-01-preview",
36117
- enabled: true,
36118
- };
36119
- }
36120
- // 检查配置是否有效
36121
- /**
36122
- * @param {?} config
36123
- * @return {?}
36124
- */
36125
- function isAIConfigValid(config) {
36126
- // 检查是否为aidevused端点且有有效API密钥
36127
- return !!((config.endpoint &&
36128
- config.apiKey &&
36129
- config.deployment &&
36130
- config.enabled &&
36131
- config.endpoint === "https://aidevused.openai.azure.com/" &&
36132
- config.apiKey !== "your-api-key-here") // Azure OpenAI API密钥通常以sk-开头
36133
- );
36134
- }
36135
- // 从后端API获取AI配置(推荐方式)
36136
- /**
36137
- * @return {?}
36138
- * @this {*}
36139
- */
36140
- function getAIConfigFromBackend() {
36141
- return __awaiter(this, void 0, void 0, function () {
36142
- return __generator(this, function (_a) {
36143
- try {
36144
- // 这里应该调用你的后端API来获取AI配置
36145
- // 例如:return await this.http.get('/api/ai-config');
36146
- // 临时返回默认配置
36147
- return [2 /*return*/, getAIConfig()];
36148
- }
36149
- catch (error) {
36150
- console.error("Failed to get AI config from backend:", error);
36151
- return [2 /*return*/, getAIConfig()];
36152
- }
36153
- return [2 /*return*/];
36154
- });
36155
- });
36156
- }
36157
-
36158
- /**
36159
- * @fileoverview added by tsickle
36160
- * Generated from: lib/form/richtexteditor/openapi.ts
36161
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
36162
- */
36163
- // import { testAIFunction } from './ai-test';
36164
- // testAIFunction();
36165
- // 使用fetch API发送请求到Azure OpenAI
36166
- /**
36167
- * @param {?} messages
36168
- * @param {?} config
36169
- * @return {?}
36170
- * @this {*}
36171
- */
36172
- function sendAIRequest(messages, config) {
36173
- return __awaiter(this, void 0, void 0, function () {
36174
- var url, url1, response, errorText, data, error_1;
36175
- return __generator(this, function (_a) {
36176
- switch (_a.label) {
36177
- case 0:
36178
- _a.trys.push([0, 5, , 6]);
36179
- url = config.endpoint + "/openai/deployments/" + config.deployment + "/chat/completions?api-version=" + config.apiVersion;
36180
- url1 = "" + config.endpoint;
36181
- return [4 /*yield*/, fetch(url, {
36182
- method: 'POST',
36183
- headers: {
36184
- 'Content-Type': 'application/json',
36185
- 'api-key': config.apiKey,
36186
- },
36187
- body: JSON.stringify({
36188
- messages: messages,
36189
- max_tokens: 1000,
36190
- temperature: 0.7,
36191
- top_p: 1,
36192
- frequency_penalty: 0,
36193
- presence_penalty: 0,
36194
- }),
36195
- })];
36196
- case 1:
36197
- response = _a.sent();
36198
- if (!!response.ok) return [3 /*break*/, 3];
36199
- return [4 /*yield*/, response.text()];
36200
- case 2:
36201
- errorText = _a.sent();
36202
- throw new Error("HTTP error! status: " + response.status + ", message: " + errorText);
36203
- case 3: return [4 /*yield*/, response.json()];
36204
- case 4:
36205
- data = _a.sent();
36206
- if (!data.choices || !data.choices[0] || !data.choices[0].message) {
36207
- throw new Error('Invalid response format from AI service');
36208
- }
36209
- return [2 /*return*/, data.choices[0].message.content];
36210
- case 5:
36211
- error_1 = _a.sent();
36212
- console.error('AI request failed:', error_1);
36213
- throw error_1;
36214
- case 6: return [2 /*return*/];
36215
- }
36216
- });
36217
- });
36218
- }
36219
- // 备用方案:使用模拟数据(用于开发测试)
36220
- /**
36221
- * @param {?} subQuery
36222
- * @param {?} promptQuery
36223
- * @return {?}
36224
- */
36225
- function getMockAIResponse(subQuery, promptQuery) {
36226
- var e_1, _a;
36227
- /** @type {?} */
36228
- var mockResponses = {
36229
- Rephrase: "Rephrased: " + promptQuery,
36230
- Grammar: "Corrected: " + promptQuery,
36231
- Summarize: "Summary: " + promptQuery.substring(0, 100) + "...",
36232
- Elaborate: "Elaborated: " + promptQuery + " with additional details and context.",
36233
- Translate: "Translated: " + promptQuery,
36234
- SentimentAnalysis: '😊 Positive',
36235
- };
36236
- try {
36237
- for (var _b = __values(Object.entries(mockResponses)), _c = _b.next(); !_c.done; _c = _b.next()) {
36238
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
36239
- if (subQuery.includes(key)) {
36240
- return value;
36241
- }
36242
- }
36243
- }
36244
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
36245
- finally {
36246
- try {
36247
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
36248
- }
36249
- finally { if (e_1) throw e_1.error; }
36250
- }
36251
- return "AI processed: " + promptQuery;
36252
- }
36253
- // 主要的AI请求方法
36254
- /**
36255
- * @param {?} subQuery
36256
- * @param {?} promptQuery
36257
- * @return {?}
36258
- * @this {*}
36259
- */
36260
- function OpenAiModelRTE(subQuery, promptQuery) {
36261
- return __awaiter(this, void 0, void 0, function () {
36262
- var config, messages, result, error_2;
36263
- return __generator(this, function (_a) {
36264
- switch (_a.label) {
36265
- case 0:
36266
- _a.trys.push([0, 2, , 3]);
36267
- config = getAIConfig();
36268
- // 检查配置是否有效
36269
- if (!isAIConfigValid(config)) {
36270
- console.warn('AI configuration is incomplete or disabled, using mock response');
36271
- return [2 /*return*/, getMockAIResponse(subQuery, promptQuery)];
36272
- }
36273
- messages = [
36274
- {
36275
- role: 'system',
36276
- content: subQuery.includes('emoji followed by the sentiment in the format')
36277
- ? 'You are a helpful assistant. Please respond in string format.'
36278
- : "NOTE: Return same html format just do changes content only. don't change html formats.",
36279
- },
36280
- {
36281
- role: 'user',
36282
- content: subQuery + " " + promptQuery,
36283
- },
36284
- ];
36285
- return [4 /*yield*/, sendAIRequest(messages, config)];
36286
- case 1:
36287
- result = _a.sent();
36288
- return [2 /*return*/, result];
36289
- case 2:
36290
- error_2 = _a.sent();
36291
- console.error('AI request failed, using mock response:', error_2);
36292
- return [2 /*return*/, getMockAIResponse(subQuery, promptQuery)];
36293
- case 3: return [2 /*return*/];
36294
- }
36295
- });
36296
- });
36297
- }
36298
- // 兼容性方法(保持向后兼容)
36299
- /**
36300
- * @param {?} options
36301
- * @return {?}
36302
- * @this {*}
36303
- */
36304
- function getAzureChatAIRequest(options) {
36305
- return __awaiter(this, void 0, void 0, function () {
36306
- var config, result, err_1;
36307
- return __generator(this, function (_a) {
36308
- switch (_a.label) {
36309
- case 0:
36310
- _a.trys.push([0, 2, , 3]);
36311
- config = getAIConfig();
36312
- if (!isAIConfigValid(config)) {
36313
- return [2 /*return*/, null];
36314
- }
36315
- return [4 /*yield*/, sendAIRequest(options.messages, config)];
36316
- case 1:
36317
- result = _a.sent();
36318
- return [2 /*return*/, result];
36319
- case 2:
36320
- err_1 = _a.sent();
36321
- console.error('Error occurred:', err_1);
36322
- return [2 /*return*/, null];
36323
- case 3: return [2 /*return*/];
36324
- }
36325
- });
36326
- });
36327
- }
36328
- /**
36329
- * @param {?} prompt
36330
- * @return {?}
36331
- * @this {*}
36332
- */
36333
- function getAzureTextAIRequest(prompt) {
36334
- return __awaiter(this, void 0, void 0, function () {
36335
- var config, messages, result, err_2;
36336
- return __generator(this, function (_a) {
36337
- switch (_a.label) {
36338
- case 0:
36339
- _a.trys.push([0, 2, , 3]);
36340
- config = getAIConfig();
36341
- if (!isAIConfigValid(config)) {
36342
- return [2 /*return*/, undefined];
36343
- }
36344
- messages = [
36345
- {
36346
- role: 'user',
36347
- content: prompt,
36348
- },
36349
- ];
36350
- return [4 /*yield*/, sendAIRequest(messages, config)];
36351
- case 1:
36352
- result = _a.sent();
36353
- return [2 /*return*/, result];
36354
- case 2:
36355
- err_2 = _a.sent();
36356
- console.error('Error occurred:', err_2);
36357
- return [2 /*return*/, undefined];
36358
- case 3: return [2 /*return*/];
36359
- }
36360
- });
36361
- });
36362
- }
36363
-
36364
38005
  /**
36365
38006
  * @fileoverview added by tsickle
36366
38007
  * Generated from: lib/form/richtexteditor/data-config.ts
@@ -36455,6 +38096,73 @@ var fontFamily = {
36455
38096
  command: "Font",
36456
38097
  subCommand: "FontName",
36457
38098
  },
38099
+ // New fonts
38100
+ {
38101
+ text: "Tiempos Headline - Semibold",
38102
+ value: "Tiempos Headline Semibold",
38103
+ cssClass: "e-tiempos-headline",
38104
+ command: "Font",
38105
+ subCommand: "FontName",
38106
+ },
38107
+ {
38108
+ text: "微软雅黑",
38109
+ value: "Microsoft YaHei,微软雅黑,SimHei, sans-serif",
38110
+ cssClass: "e-yahei",
38111
+ command: "Font",
38112
+ subCommand: "FontName",
38113
+ },
38114
+ {
38115
+ text: "等线",
38116
+ value: "DengXian,等线,sans-serif",
38117
+ cssClass: "e-dengxian",
38118
+ command: "Font",
38119
+ subCommand: "FontName",
38120
+ },
38121
+ {
38122
+ text: "思源黑体",
38123
+ value: "Source Han Sans CN, Microsoft YaHei,'微软雅黑', sans-serif",
38124
+ cssClass: "e-source-han-sans-cn-regular",
38125
+ command: "Font",
38126
+ subCommand: "FontName",
38127
+ },
38128
+ {
38129
+ text: "思源宋体",
38130
+ value: "Source Han Serif CN, SimSun,'宋体',serif",
38131
+ cssClass: "e-source-han-serif-cn-regular",
38132
+ command: "Font",
38133
+ subCommand: "FontName",
38134
+ },
38135
+ {
38136
+ text: "霞鹜文楷",
38137
+ value: "LXGW WenKai,'霞鹜文楷',STKaiti, KaiTi, '楷体', '华文楷体', Arial, sans-serif",
38138
+ cssClass: "e-lxgw",
38139
+ command: "Font",
38140
+ subCommand: "FontName",
38141
+ },
38142
+ // Ping Fang SC 系列
38143
+ {
38144
+ text: "Ping Fang SC - Light",
38145
+ value: "苹方-简",
38146
+ cssClass: "e-ping-fang-sc-light",
38147
+ command: "Font",
38148
+ subCommand: "FontName",
38149
+ },
38150
+ ],
38151
+ };
38152
+ /** @type {?} */
38153
+ var size = {
38154
+ default: "11pt",
38155
+ width: "40px",
38156
+ items: [
38157
+ { text: "8 pt", value: "8pt" },
38158
+ { text: "9 pt", value: "9pt" },
38159
+ { text: "10 pt", value: "10pt" },
38160
+ { text: "11 pt", value: "11pt" },
38161
+ { text: "12 pt", value: "12pt" },
38162
+ { text: "14 pt", value: "14pt" },
38163
+ { text: "18 pt", value: "18pt" },
38164
+ { text: "24 pt", value: "24pt" },
38165
+ { text: "36 pt", value: "36pt" },
36458
38166
  ],
36459
38167
  };
36460
38168
  // line height配置
@@ -36640,71 +38348,30 @@ function applyBulletStyle(ul, style) {
36640
38348
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
36641
38349
  */
36642
38350
  var RichtexteditorComponent = /** @class */ (function () {
36643
- function RichtexteditorComponent(ref) {
36644
- this.ref = ref;
36645
- // @ViewChild("chipList", { static: false }) public chipList!: ChipListComponent;
36646
- this.placeholder = "";
38351
+ function RichtexteditorComponent() {
36647
38352
  this.value = "";
38353
+ this.editorId = "editorId";
36648
38354
  this.height = 150;
36649
38355
  this.autoSaveOnIdle = true;
36650
- this.target = "#container"; // dialog 弹窗父级
36651
- // dialog 弹窗父级
36652
- this.toolbarClick = new EventEmitter();
36653
- this.change = new EventEmitter();
36654
- // @Output() change = new EventEmitter();
36655
- this.family = fontFamily;
36656
- this.dialogWidth = "800px";
36657
- this.dialogHeight = "642px";
36658
- this.showZoomBtn = true;
36659
- this.showMsg = false;
38356
+ this.disabled = false;
36660
38357
  this.insertImageSettings = {
36661
38358
  saveFormat: "Blob",
36662
38359
  allowedTypes: [".svg", ".png"],
36663
38360
  display: "none",
36664
38361
  };
36665
- this.size = "";
36666
- this.dropValIndex = 0;
36667
- this.queryList = [
36668
- { id: "Rephrase", text: "Rephrase" },
36669
- { id: "Grammar", text: "Correct Grammar" },
36670
- { id: "Summarize", text: "Summarize" },
36671
- { id: "Elaborate", text: "Elaborate" },
36672
- { id: "Translate", text: "Translate" },
36673
- { id: "SentimentAnalysis", text: "Sentiment Analysis" },
36674
- ];
36675
- this.rephraseTyleList = [
36676
- { text: "Standard", id: "Standard" },
36677
- { text: "Fluent", id: "Fluent" },
36678
- { text: "Professional", id: "Professional" },
36679
- ];
36680
- this.languageList = [
36681
- { id: "EN", text: "English" },
36682
- { id: "ZH", text: "Chinese (Simplified)" },
36683
- { id: "ES", text: "Spanish" },
36684
- { id: "ZHT", text: "Chinese (Traditional)" },
36685
- { id: "HI", text: "Hindi" },
36686
- { id: "AR", text: "Arabic" },
36687
- { id: "BN", text: "Bengali" },
36688
- { id: "PT", text: "Portuguese" },
36689
- { id: "RU", text: "Russian" },
36690
- { id: "JA", text: "Japanese" },
36691
- { id: "DE", text: "German" },
36692
- { id: "KO", text: "Korean" },
36693
- { id: "FR", text: "French" },
36694
- { id: "IT", text: "Italian" },
36695
- { id: "TR", text: "Turkish" },
36696
- ];
36697
- this.promptQuery = "";
36698
- this.isSentimentCheck = false;
36699
- this.subQuery = "";
36700
- this.chipValue = "Standard";
38362
+ this.toolbarClick = new EventEmitter();
38363
+ this.change = new EventEmitter();
38364
+ this.created = new EventEmitter();
38365
+ this.actionBegin = new EventEmitter();
38366
+ this.input = new EventEmitter();
38367
+ this.focus = new EventEmitter();
38368
+ this.blur = new EventEmitter();
38369
+ this.actionComplete = new EventEmitter();
38370
+ this.family = fontFamily;
38371
+ this.fontSize = size;
36701
38372
  this.tools = {
36702
38373
  enableFloating: false,
36703
38374
  items: [
36704
- {
36705
- tooltipText: "AI Assist",
36706
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="ai_assistant_button_tbar" style="width:100%"><div class="e-rte-dropdown-btn-text">AI Assist</div></button>',
36707
- },
36708
38375
  "Bold",
36709
38376
  "Italic",
36710
38377
  "Underline",
@@ -36719,21 +38386,12 @@ var RichtexteditorComponent = /** @class */ (function () {
36719
38386
  "CreateTable",
36720
38387
  "Formats",
36721
38388
  "Alignments",
36722
- {
36723
- tooltipText: "Line Height",
36724
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="lineheight_tbar" style="width:100%"></button>',
36725
- },
36726
- "OrderedList",
36727
- "UnorderedList",
38389
+ "BulletFormatList",
38390
+ "NumberFormatList",
36728
38391
  "Outdent",
36729
38392
  "Indent",
36730
38393
  "|",
36731
38394
  "CreateLink",
36732
- {
36733
- tooltipText: "",
36734
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="custom_tbar" style="width:100%">' +
36735
- '<div class="e-tbar-btn-text" style="font-weight: 500;"><img src="/assets/img/file-icon.svg" style="position: relative;top: -2px;"/><div class="uploadActions"><div id="uploadFromUser">Computer File</div><div id="relationDom">Ticket Attachment</div></div></div></button>',
36736
- },
36737
38395
  "|",
36738
38396
  "FormatPainter",
36739
38397
  "ClearFormat",
@@ -36742,14 +38400,64 @@ var RichtexteditorComponent = /** @class */ (function () {
36742
38400
  "Redo",
36743
38401
  ],
36744
38402
  };
38403
+ /**
38404
+ * 表格快捷工具栏:含 TableCell(合并/拆分单元格)
38405
+ */
38406
+ this.quickToolbarSettings = {
38407
+ table: [
38408
+ "Tableheader",
38409
+ "TableRemove",
38410
+ "|",
38411
+ "TableRows",
38412
+ "TableColumns",
38413
+ "TableCell",
38414
+ "|",
38415
+ "Styles",
38416
+ "BackgroundColor",
38417
+ "Alignments",
38418
+ "TableCellVerticalAlign",
38419
+ ],
38420
+ };
38421
+ this.bulletFormatList = {
38422
+ types: [
38423
+ { text: "None", value: "none" },
38424
+ { text: "●", value: "disc" },
38425
+ { text: "○", value: "circle" },
38426
+ { text: "■", value: "square" },
38427
+ { text: "-", value: "dash" },
38428
+ ],
38429
+ };
38430
+ this.numberFormatList = {
38431
+ types: [
38432
+ { text: "None", value: "none" },
38433
+ { text: "1, 2, 3, …", value: "decimal" },
38434
+ {
38435
+ text: "α, β, γ, …",
38436
+ value: "lowerGreek",
38437
+ },
38438
+ {
38439
+ text: "i, ii, iii, …",
38440
+ value: "lowerRoman",
38441
+ },
38442
+ {
38443
+ text: "A, B, C, …",
38444
+ value: "upperAlpha",
38445
+ },
38446
+ {
38447
+ text: "a, b, c, …",
38448
+ value: "lowerAlpha",
38449
+ },
38450
+ {
38451
+ text: "I, II, III, …",
38452
+ value: "upperRoman",
38453
+ },
38454
+ {
38455
+ text: "(1), (2), (3), …",
38456
+ value: "parentheses",
38457
+ },
38458
+ ],
38459
+ };
36745
38460
  }
36746
- /**
36747
- * @return {?}
36748
- */
36749
- RichtexteditorComponent.prototype.ngOnInit = /**
36750
- * @return {?}
36751
- */
36752
- function () { };
36753
38461
  /**
36754
38462
  * @param {?} args
36755
38463
  * @return {?}
@@ -36759,32 +38467,6 @@ var RichtexteditorComponent = /** @class */ (function () {
36759
38467
  * @return {?}
36760
38468
  */
36761
38469
  function (args) {
36762
- /** @type {?} */
36763
- var tables = document.querySelectorAll("table.e-rte-table");
36764
- tables.forEach((/**
36765
- * @param {?} table
36766
- * @return {?}
36767
- */
36768
- function (table) {
36769
- /** @type {?} */
36770
- var htmlTable = (/** @type {?} */ (table));
36771
- htmlTable.style.marginBottom = "10px";
36772
- htmlTable.style.borderCollapse = "collapse";
36773
- htmlTable.style.emptyCells = "show";
36774
- /** @type {?} */
36775
- var tdElements = table.querySelectorAll("td");
36776
- tdElements.forEach((/**
36777
- * @param {?} td
36778
- * @return {?}
36779
- */
36780
- function (td) {
36781
- td.style.border = "1px solid #adb5bd";
36782
- td.style.height = "20px";
36783
- td.style.minWidth = "20px";
36784
- td.style.padding = "2px 5px";
36785
- td.style.boxSizing = "border-box";
36786
- }));
36787
- }));
36788
38470
  this.change.emit(args);
36789
38471
  };
36790
38472
  /**
@@ -36794,514 +38476,157 @@ var RichtexteditorComponent = /** @class */ (function () {
36794
38476
  * @return {?}
36795
38477
  */
36796
38478
  function () {
36797
- var _this = this;
36798
- //bind the a click event
36799
- // let editorContent = this.rteObj.contentModule.getEditPanel() as HTMLElement;
36800
- // editorContent.addEventListener('click', this.OnClicked.bind(this));
36801
- //add the line height
36802
- this.editorManager = this.rteObj.formatter.editorManager;
36803
- /** @type {?} */
36804
- var splitButton = new DropDownButton({
36805
- items: lineHeight_items,
36806
- iconCss: "e-icons e-line-spacing",
36807
- select: this.onSelect.bind(this),
36808
- });
36809
- splitButton.appendTo("#lineheight_tbar");
36810
- // ai assist
36811
- /** @type {?} */
36812
- var aiassistantButton = new DropDownButton({
36813
- items: this.queryList,
36814
- // iconCss: "e-btn-icon e-icons e-assistview-icon e-icon-left",
36815
- select: (/**
36816
- * @param {?} args
36817
- * @return {?}
36818
- */
36819
- function (args) { return _this.aiQuerySelectedMenu(args); }),
36820
- });
36821
- aiassistantButton.appendTo("#ai_assistant_button_tbar");
38479
+ this.created.emit();
36822
38480
  };
36823
38481
  /**
36824
- * @private
36825
38482
  * @param {?} args
36826
38483
  * @return {?}
36827
38484
  */
36828
- RichtexteditorComponent.prototype.onSelect = /**
36829
- * @private
38485
+ RichtexteditorComponent.prototype._toolbarClick = /**
36830
38486
  * @param {?} args
36831
38487
  * @return {?}
36832
38488
  */
36833
38489
  function (args) {
36834
- if (this.rteObj.formatter.getUndoRedoStack().length === 0) {
36835
- this.rteObj.formatter.saveData();
36836
- }
36837
- /** @type {?} */
36838
- var nodes = this.editorManager.domNode.blockNodes();
36839
- for (var i = 0; nodes.length > i; i++) {
36840
- ((/** @type {?} */ (nodes[i]))).style.lineHeight = args.item.text;
36841
- }
36842
- this.rteObj.formatter.saveData();
36843
- this.rteObj.formatter.enableUndo(this.rteObj);
38490
+ this.toolbarClick.emit(args);
36844
38491
  };
36845
38492
  /**
36846
- * @private
36847
38493
  * @param {?} args
36848
38494
  * @return {?}
36849
38495
  */
36850
- RichtexteditorComponent.prototype.aiQuerySelectedMenu = /**
36851
- * @private
38496
+ RichtexteditorComponent.prototype._actionBegin = /**
36852
38497
  * @param {?} args
36853
38498
  * @return {?}
36854
38499
  */
36855
38500
  function (args) {
36856
- this.dialogueOpen(args.item.text);
36857
- };
36858
- /**
36859
- * @param {?} selectedQuery
36860
- * @return {?}
36861
- */
36862
- RichtexteditorComponent.prototype.dialogueOpen = /**
36863
- * @param {?} selectedQuery
36864
- * @return {?}
36865
- */
36866
- function (selectedQuery) {
36867
- var _this = this;
36868
- /** @type {?} */
36869
- var selectionText = this.rteObj.getSelectedHtml();
36870
- this.selectedQuery = selectedQuery;
36871
- if (selectionText) {
36872
- /** @type {?} */
36873
- var range = ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
36874
- ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.save(range, ((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
36875
- this.dropValIndex = this.queryList.findIndex((/**
36876
- * @param {?} q
36877
- * @return {?}
36878
- */
36879
- function (q) { return q.text.toLowerCase() === selectedQuery.toLowerCase(); }));
36880
- this.queryCategory.index = this.dropValIndex;
36881
- this.leftRte.value = this.promptQuery = selectionText;
36882
- this.leftRte.refreshUI();
36883
- this.AIdialog.show();
36884
- this.updateAISugesstionsData(selectedQuery);
36885
- }
36886
- else {
36887
- this.showMsg = true;
36888
- setTimeout((/**
36889
- * @return {?}
36890
- */
36891
- function () {
36892
- _this.showMsg = false;
36893
- }), 3000);
36894
- console.log("Please select the content to perform the AI operation.");
36895
- }
36896
- };
36897
- /**
36898
- * @param {?} selectedQuery
36899
- * @return {?}
36900
- */
36901
- RichtexteditorComponent.prototype.updateAISugesstionsData = /**
36902
- * @param {?} selectedQuery
36903
- * @return {?}
36904
- */
36905
- function (selectedQuery) {
36906
- this.isSentimentCheck = false;
36907
- switch (selectedQuery) {
36908
- case "Summarize":
36909
- this.subQuery = "Summarize the upcoming sentence shortly.";
36910
- break;
36911
- case "Elaborate":
36912
- this.subQuery = "Elaborate on the upcoming sentence.";
36913
- break;
36914
- case "Rephrase":
36915
- this.subQuery = this.chipValue + " rephrase the upcoming sentence.";
36916
- break;
36917
- case "Correct Grammar":
36918
- this.subQuery = "Correct the grammar of the upcoming sentence.";
36919
- break;
36920
- case "Translate":
36921
- this.subQuery =
36922
- "Translate the upcoming sentence to " + this.translatelanguage + ".";
36923
- break;
36924
- case "Sentiment Analysis":
36925
- this.isSentimentCheck = true;
36926
- this.subQuery =
36927
- 'Analyze the sentiment and grammar of the following paragraphs and provide the expression score with an emoji followed by the sentiment in the format: "😊 Neutral". \n\nNOTE: Avoid any additional text or explanation:';
36928
- break;
36929
- }
36930
- this.updateAISugesstions();
36931
- };
36932
- /**
36933
- * @return {?}
36934
- */
36935
- RichtexteditorComponent.prototype.updateAISugesstions = /**
36936
- * @return {?}
36937
- */
36938
- function () {
36939
- var _this = this;
36940
- try {
36941
- if (this.promptQuery) {
36942
- ((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
36943
- "";
36944
- ((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
36945
- "none";
36946
- this.sentimentButton.element.style.display = "none";
36947
- this.regenerateButton.disabled = true;
36948
- this.copyButton.disabled = true;
36949
- this.replaceButton.disabled = true;
36950
- this.apiResultData = this.getResponseFromOpenAI(this.subQuery, this.promptQuery);
36951
- this.apiResultData.then((/**
36952
- * @param {?} result
36953
- * @return {?}
36954
- */
36955
- function (result) {
36956
- _this.AIResult = _this.isSentimentCheck ? _this.promptQuery : result;
36957
- _this.sentimentButton.content = result
36958
- .toLowerCase()
36959
- .includes("positive")
36960
- ? "😊 Positive"
36961
- : result.toLowerCase().includes("negative")
36962
- ? "😞 Negative"
36963
- : "😐 Neutral";
36964
- _this.sentimentButton.element.style.display = !_this.isSentimentCheck
36965
- ? "none"
36966
- : "";
36967
- _this.rightRte.value = _this.AIResult;
36968
- /** @type {?} */
36969
- var noResultsFound = !(_this.AIResult || _this.promptQuery);
36970
- ((/** @type {?} */ (document.getElementById("no-results-found")))).style.display = noResultsFound ? "" : "none";
36971
- _this.regenerateButton.disabled = noResultsFound;
36972
- _this.copyButton.disabled = noResultsFound;
36973
- _this.replaceButton.disabled = noResultsFound;
36974
- ((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
36975
- "none";
36976
- ((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
36977
- noResultsFound ? "none" : "";
36978
- console.log(noResultsFound, ((/** @type {?} */ (document.getElementById("rightRte")))).style);
36979
- // this.ref.markForCheck();
36980
- }));
36981
- }
36982
- }
36983
- catch (_a) {
36984
- // this.toastObj.show();
36985
- }
36986
- };
36987
- /**
36988
- * @param {?} subQuery
36989
- * @param {?} promptQuery
36990
- * @return {?}
36991
- */
36992
- RichtexteditorComponent.prototype.getResponseFromOpenAI = /**
36993
- * @param {?} subQuery
36994
- * @param {?} promptQuery
36995
- * @return {?}
36996
- */
36997
- function (subQuery, promptQuery) {
36998
- return __awaiter(this, void 0, void 0, function () {
36999
- var content;
37000
- return __generator(this, function (_a) {
37001
- switch (_a.label) {
37002
- case 0: return [4 /*yield*/, OpenAiModelRTE(subQuery, promptQuery)];
37003
- case 1:
37004
- content = _a.sent();
37005
- return [2 /*return*/, content ? ((/** @type {?} */ (content))) : ""];
37006
- }
37007
- });
37008
- });
37009
- };
37010
- /**
37011
- * @return {?}
37012
- */
37013
- RichtexteditorComponent.prototype.dialogShow = /**
37014
- * @return {?}
37015
- */
37016
- function () {
37017
- var _this = this;
37018
- (/** @type {?} */ (this.regenerateButton)).element.addEventListener("click", (/**
37019
- * @return {?}
37020
- */
37021
- function () {
37022
- _this.updateAISugesstions();
37023
- }));
37024
- (/** @type {?} */ (this.copyButton)).element.addEventListener("click", (/**
37025
- * @return {?}
37026
- */
37027
- function () {
37028
- _this.copyTextToClipboard(_this.AIResult);
37029
- }));
37030
- (/** @type {?} */ (this.replaceButton)).element.addEventListener("click", (/**
37031
- * @return {?}
37032
- */
37033
- function () {
37034
- /** @type {?} */
37035
- var range = ((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (_this.rteObj))).contentModule.getDocument());
37036
- ((/** @type {?} */ (_this.rteObj))).formatter.editorManager.nodeSelection.restore(range);
37037
- ((/** @type {?} */ (_this.rteObj))).executeCommand("insertHTML", _this.AIResult, {
37038
- undo: true,
37039
- });
37040
- _this.closeDialog();
37041
- }));
37042
- ((/** @type {?} */ (this.AIdialog))).element.style.display = "";
37043
- };
37044
- /**
37045
- * @return {?}
37046
- */
37047
- RichtexteditorComponent.prototype.closeDialog = /**
37048
- * @return {?}
37049
- */
37050
- function () {
37051
- this.AIdialog.hide();
37052
- this.rightRte.value = "";
37053
- this.leftRte.value = "";
37054
- this.promptQuery = "";
37055
- this.chipValue = "Standard";
37056
- this.AIResult = "";
37057
- this.dropValIndex = 0;
37058
- this.selectedQuery = "Rephrase";
37059
- this.sentimentButton.content = "😊 Neutral";
37060
- };
37061
- /**
37062
- * @param {?} text
37063
- * @return {?}
37064
- */
37065
- RichtexteditorComponent.prototype.copyTextToClipboard = /**
37066
- * @param {?} text
37067
- * @return {?}
37068
- */
37069
- function (text) {
37070
- if (navigator.clipboard) {
37071
- navigator.clipboard
37072
- .writeText(text)
37073
- .then((/**
37074
- * @return {?}
37075
- */
37076
- function () {
37077
- console.log("Text copied to clipboard successfully!");
37078
- }))
37079
- .catch((/**
37080
- * @param {?} err
37081
- * @return {?}
37082
- */
37083
- function (err) {
37084
- console.error("Failed to copy text: ", err);
37085
- }));
37086
- }
37087
- else {
37088
- // Fallback for browsers that do not support the Clipboard API
37089
- /** @type {?} */
37090
- var textarea = document.createElement("textarea");
37091
- textarea.value = text;
37092
- document.body.appendChild(textarea);
37093
- textarea.select();
37094
- try {
37095
- document.execCommand("copy");
37096
- console.log("Text copied to clipboard using execCommand");
37097
- }
37098
- catch (err) {
37099
- console.error("Failed to copy text: ", err);
37100
- }
37101
- finally {
37102
- document.body.removeChild(textarea);
37103
- }
37104
- }
37105
- };
37106
- /**
37107
- * @return {?}
37108
- */
37109
- RichtexteditorComponent.prototype.onOverlayClick = /**
37110
- * @return {?}
37111
- */
37112
- function () {
37113
- /** @type {?} */
37114
- var activeEle = this.AIdialog.element.querySelector(".char_block.e-active");
37115
- if (activeEle) {
37116
- activeEle.classList.remove("e-active");
37117
- }
37118
- this.closeDialog();
38501
+ this.actionBegin.emit(args);
37119
38502
  };
37120
38503
  /**
37121
38504
  * @param {?} args
37122
38505
  * @return {?}
37123
38506
  */
37124
- RichtexteditorComponent.prototype.onQuerySelect = /**
38507
+ RichtexteditorComponent.prototype._input = /**
37125
38508
  * @param {?} args
37126
38509
  * @return {?}
37127
38510
  */
37128
38511
  function (args) {
37129
- // this.chipList.selectedChips = 0;
37130
- this.translatelanguage = "EN";
37131
- this.selectedQuery = args.itemData.text;
37132
- this.updateAISugesstionsData(args.itemData.text);
38512
+ this.input.emit(args);
37133
38513
  };
37134
38514
  /**
37135
38515
  * @param {?} args
37136
38516
  * @return {?}
37137
38517
  */
37138
- RichtexteditorComponent.prototype.onLanguageSelect = /**
38518
+ RichtexteditorComponent.prototype._actionComplete = /**
37139
38519
  * @param {?} args
37140
38520
  * @return {?}
37141
38521
  */
37142
38522
  function (args) {
37143
- this.translatelanguage = args.itemData.id;
37144
- this.updateAISugesstionsData("Translate");
38523
+ if (args.requestType == "UL") {
38524
+ if (args.elements[0].parentElement.style.listStyleType == "dash") {
38525
+ args.elements[0].parentElement.style.listStyleImage =
38526
+ "url('../../../assets/img/bullet-dash.svg')";
38527
+ args.elements[0].parentElement.style.listStyleType = "none";
38528
+ }
38529
+ }
38530
+ else if (args.requestType == "OL") {
38531
+ args.elements[0].parentElement.classList.remove("custom-list", "parentheses");
38532
+ if (args.elements[0].parentElement.style.listStyleType == "parentheses") {
38533
+ args.elements[0].parentElement.classList = "custom-list";
38534
+ args.elements[0].parentElement.classList.add("parentheses");
38535
+ }
38536
+ }
38537
+ this.actionComplete.emit(args);
37145
38538
  };
37146
38539
  /**
37147
38540
  * @param {?} args
37148
38541
  * @return {?}
37149
38542
  */
37150
- RichtexteditorComponent.prototype.onChipClick = /**
38543
+ RichtexteditorComponent.prototype._focus = /**
37151
38544
  * @param {?} args
37152
38545
  * @return {?}
37153
38546
  */
37154
38547
  function (args) {
37155
- this.chipValue = args.itemData.text;
37156
- // 事件会触发两次 必须判断args.text是否有值
37157
- if (args.itemData.text)
37158
- this.updateAISugesstionsData("Rephrase");
38548
+ this.focus.emit(args);
37159
38549
  };
37160
38550
  /**
37161
38551
  * @param {?} args
37162
38552
  * @return {?}
37163
38553
  */
37164
- RichtexteditorComponent.prototype._toolbarClick = /**
38554
+ RichtexteditorComponent.prototype._blur = /**
37165
38555
  * @param {?} args
37166
38556
  * @return {?}
37167
38557
  */
37168
38558
  function (args) {
37169
- this.toolbarClick.emit(args);
37170
- };
37171
- /**
37172
- * @return {?}
37173
- */
37174
- RichtexteditorComponent.prototype.hideToast = /**
37175
- * @return {?}
37176
- */
37177
- function () {
37178
- this.showMsg = false;
37179
- };
37180
- /**
37181
- * @return {?}
37182
- */
37183
- RichtexteditorComponent.prototype.onZoom = /**
37184
- * @return {?}
37185
- */
37186
- function () {
37187
- if (this.size === "largest") {
37188
- this.size = ""; // 恢复到原始大小
37189
- }
37190
- else {
37191
- this.size = "largest"; // 设置为最大化
37192
- }
38559
+ this.blur.emit(args);
37193
38560
  };
37194
38561
  RichtexteditorComponent.decorators = [
37195
38562
  { type: Component, args: [{
37196
38563
  selector: "rs-richtext-editor",
37197
- template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n id=\"editor\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [fontFamily]=\"family\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n <ejs-dialog\r\n #AIdialog\r\n id=\"AIdialog\"\r\n [ngClass]=\"size\"\r\n [visible]=\"false\"\r\n [target]=\"target\"\r\n [isModal]=\"true\"\r\n [height]=\"dialogHeight\"\r\n [width]=\"dialogWidth\"\r\n maxHeight=\"80%\"\r\n cssClass=\"e-rte-elements custom-dialog-rte\"\r\n zIndex=\"1000\"\r\n (close)=\"closeDialog()\"\r\n (overlayClick)=\"onOverlayClick()\"\r\n (open)=\"dialogShow()\"\r\n >\r\n <ng-template #header>\r\n <div class=\"header-title\">AI Assist</div>\r\n <div class=\"header-buttons\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-zoom\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div class=\"header-btn\" (click)=\"closeDialog()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #footerTemplate>\r\n <div id=\"dialog-footer-content\">\r\n <div class=\"custom-row-0\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"width: 100%; align-items: center; justify-content: left\"\r\n ></div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: right; width: 100%\">\r\n <button\r\n ejs-button\r\n #sentimentButton\r\n content=\"\uD83D\uDE0A Neutral\"\r\n disabled=\"false\"\r\n cssClass=\"sentiment\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #copyButton\r\n content=\"Copy\"\r\n disabled=\"false\"\r\n class=\"copy-btn\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #replaceButton\r\n content=\"Replace\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"dialog-content\" style=\"height: 100%\">\r\n <div class=\"custom-row-0\">\r\n <div class=\"cuscol-0\" style=\"width: 100%\">\r\n <ejs-dropdownlist\r\n #queryCategory\r\n style=\"width: 200px\"\r\n id=\"queryCategory\"\r\n [dataSource]=\"queryList\"\r\n index=\"0\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onQuerySelect($event)\"\r\n >\r\n Rephrase\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Rephrase'\"\r\n id=\"chips-container\"\r\n #chipList\r\n style=\"width: 160px\"\r\n [(ngModel)]=\"chipValue\"\r\n [dataSource]=\"rephraseTyleList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onChipClick($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Translate'\"\r\n #languageCategory\r\n index=\"0\"\r\n id=\"language-Category\"\r\n [dataSource]=\"languageList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onLanguageSelect($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <!-- <ejs-chiplist\r\n id=\"chips-container\"\r\n #chipList\r\n [chips]=\"['Standard', 'Fluent', 'Professional']\"\r\n selection=\"Single\"\r\n cssClass=\"e-outline\"\r\n [selectedChips]=\"[0]\"\r\n (click)=\"onChipClick($event)\"\r\n >\r\n </ejs-chiplist> -->\r\n <button\r\n ejs-button\r\n #regenerateButton\r\n content=\"Regenerate\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n <div class=\"custom-row-1\" style=\"height: calc(100% - 40px)\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"\r\n width: 100%;\r\n height: 100%;\r\n align-items: center;\r\n justify-content: left;\r\n \"\r\n >\r\n <div style=\"text-align: left; height: 100%\">\r\n <ejs-richtexteditor\r\n #leftRte\r\n id=\"leftRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n </ejs-richtexteditor>\r\n </div>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: left; width: 100%; height: 100%\">\r\n <ejs-richtexteditor\r\n #rightRte\r\n id=\"rightRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n <!-- style=\"display: none\" -->\r\n </ejs-richtexteditor>\r\n <div\r\n class=\"no-results-found\"\r\n id=\"no-results-found\"\r\n style=\"display: none; height: 244px; align-content: center\"\r\n >\r\n <img\r\n height=\"50\"\r\n width=\"50\"\r\n src=\"https://storage.googleapis.com/cdn-bolddesk/agent-angular-app/images/light/no-records-warning.svg\"\r\n />\r\n <div>No results found</div>\r\n </div>\r\n <div id=\"skeletonId\" style=\"display: none\">\r\n <ejs-skeleton\r\n #skeletonId1\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"100%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId2\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"90%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId3\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"70%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId4\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"50%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId5\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"30%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId6\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"10%\"\r\n ></ejs-skeleton\r\n ><br />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ejs-dialog>\r\n <div class=\"toast\" *ngIf=\"showMsg\">\r\n <span class=\"toast_text\">First, Select some text</span\r\n ><span class=\"close_icon\" (click)=\"hideToast()\"></span>\r\n </div>\r\n</div>\r\n",
38564
+ template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n [id]=\"editorId\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [quickToolbarSettings]=\"quickToolbarSettings\"\r\n [bulletFormatList]=\"bulletFormatList\"\r\n [numberFormatList]=\"numberFormatList\"\r\n [fontFamily]=\"family\"\r\n [fontSize]=\"fontSize\"\r\n [disabled]=\"disabled\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n (input)=\"_input($event)\"\r\n (focus)=\"_focus($event)\"\r\n (blur)=\"_blur($event)\"\r\n (actionComplete)=\"_actionComplete($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n</div>\r\n",
37198
38565
  styles: [".editor_box{position:relative;width:100%;height:100%}.editor_box .toast{position:absolute;left:35%;top:110px;z-index:1;width:400px;border-radius:4px;border:1px solid #e8f2ff;background:#f4f8ff;padding:4px 12px;color:#1f3f5c;font-size:12px;font-style:normal;font-weight:400;height:32px;font-family:Arial;display:flex;align-items:center;justify-content:space-between}.editor_box .toast .toast_text::before{content:url(../../assets/img/info.svg);display:inline-block;width:16px;height:16px;vertical-align:bottom;margin-right:8px}.editor_box .toast .close_icon{background-image:url(../../assets/img/notification-close.svg);cursor:pointer;display:inline-block;width:16px;height:16px}.custom-dialog-rte{padding:0 20px;border-radius:10px}.custom-row-0,.custom-row-1,.custom-row-2{display:flex;align-items:center;padding:12px 24px}.e-rte-dropdown-btn-text{padding-left:4px}.no-results-found{text-align:center}.no-results-found img{display:block;margin:0 auto}.e-custom{margin-right:.5rem;border-radius:25px!important}.custom-dialog-rte .skeleton-rectangle{border-radius:4px}@media (max-width:767px){.cuscol-0,.cuscol-1,.cuscol-2{justify-content:center!important}.custom-row-0,.custom-row-1,.custom-row-2{flex-direction:column!important}.cuscol-1{border-right:none!important}.cuscol-0{width:100%;align-items:center}::ng-deep:host .e-dialog{max-height:80%!important}.custom-dialog-rte .e-dialog .e-dlg-content{overflow-y:auto!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor{height:100px!important}.cuscol-noresult{padding-bottom:20px!important}.e-chip-list{padding:5px!important}.cuscol{padding-right:.2rem!important;width:auto!important}.custom-row-1{height:auto!important}}.cuscol-1{display:flex;flex-direction:row!important}.cuscol-2{display:flex;flex-direction:column!important}.sentiment{color:#000!important}.custom-dialog-rte .e-dialog .e-dlg-content{padding:0!important;overflow-y:hidden}.custom-dialog-rte .e-dialog .e-dlg-header-content{padding:20px 0!important;border:0!important}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header{display:flex;align-items:center;line-height:18px;justify-content:space-between}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header .header-title{font-family:Arial;font-size:15px;font-weight:700;font-style:normal}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons{display:flex}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons img{width:16px;height:16px;cursor:pointer;padding:2px;margin-left:12px}.custom-dialog-rte .e-dialog .e-footer-content{padding:0!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor.e-rte-tb-expand .e-rte-content,.e-richtexteditor.e-rte-tb-expand .e-source-content{border:0;border-bottom:1px solid #dee2e6;border-top:0 solid #dee2e6!important}.custom-dialog-rte .dialog-content .custom-row-0{border-top:0 solid #ddd!important;padding:0;margin-bottom:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-0{justify-content:left;border-right:none!important;padding:0;display:flex;gap:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1{padding:0;margin-left:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1 .e-primary{color:#44566c;border-radius:4px;border:1px solid #dbe1e7;background:#fff;width:87px;margin:0;padding:2px 12px;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;height:28px}.custom-dialog-rte .dialog-content .custom-row-1{padding:0;height:calc(100% - 40px);gap:12px}.custom-dialog-rte .e-footer-content{border:0}.custom-dialog-rte .e-footer-content .custom-row-0{padding:20px 0}.custom-dialog-rte .e-footer-content .e-control.e-btn{font-family:Arial;font-size:12px;line-height:14px;padding:2px 12px;height:28px;background:#fff;color:#44566c}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn{border-color:#dbe1e7}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn::before{content:url(../../assets/img/editor-copy.svg);vertical-align:middle;margin-right:6px}.custom-dialog-rte .e-footer-content .e-control.e-btn.e-primary{color:#fff;background:#1364b3}.editor_box .e-dialog.largest{width:96vw!important;height:88vh!important;max-height:88vh;max-width:2100px}"]
37199
38566
  }] }
37200
38567
  ];
37201
- /** @nocollapse */
37202
- RichtexteditorComponent.ctorParameters = function () { return [
37203
- { type: ChangeDetectorRef }
37204
- ]; };
37205
38568
  RichtexteditorComponent.propDecorators = {
37206
- rteObj: [{ type: ViewChild, args: ["editor", { static: false },] }],
37207
- queryCategory: [{ type: ViewChild, args: ["queryCategory", { static: false },] }],
37208
- leftRte: [{ type: ViewChild, args: ["leftRte", { static: false },] }],
37209
- rightRte: [{ type: ViewChild, args: ["rightRte", { static: false },] }],
37210
- AIdialog: [{ type: ViewChild, args: ["AIdialog", { static: true },] }],
37211
- sentimentButton: [{ type: ViewChild, args: ["sentimentButton", { static: false },] }],
37212
- regenerateButton: [{ type: ViewChild, args: ["regenerateButton", { static: false },] }],
37213
- copyButton: [{ type: ViewChild, args: ["copyButton", { static: false },] }],
37214
- replaceButton: [{ type: ViewChild, args: ["replaceButton", { static: false },] }],
37215
- placeholder: [{ type: Input }],
37216
38569
  value: [{ type: Input }],
38570
+ editorId: [{ type: Input }],
37217
38571
  height: [{ type: Input }],
37218
38572
  autoSaveOnIdle: [{ type: Input }],
37219
- target: [{ type: Input }],
38573
+ disabled: [{ type: Input }],
38574
+ insertImageSettings: [{ type: Input }],
37220
38575
  toolbarClick: [{ type: Output }],
37221
- change: [{ type: Output }]
38576
+ change: [{ type: Output }],
38577
+ created: [{ type: Output }],
38578
+ actionBegin: [{ type: Output }],
38579
+ input: [{ type: Output }],
38580
+ focus: [{ type: Output }],
38581
+ blur: [{ type: Output }],
38582
+ actionComplete: [{ type: Output }]
37222
38583
  };
37223
38584
  return RichtexteditorComponent;
37224
38585
  }());
37225
38586
  if (false) {
37226
- /** @type {?} */
37227
- RichtexteditorComponent.prototype.rteObj;
37228
- /** @type {?} */
37229
- RichtexteditorComponent.prototype.queryCategory;
37230
- /** @type {?} */
37231
- RichtexteditorComponent.prototype.leftRte;
37232
- /** @type {?} */
37233
- RichtexteditorComponent.prototype.rightRte;
37234
- /** @type {?} */
37235
- RichtexteditorComponent.prototype.AIdialog;
37236
- /** @type {?} */
37237
- RichtexteditorComponent.prototype.sentimentButton;
37238
- /** @type {?} */
37239
- RichtexteditorComponent.prototype.regenerateButton;
37240
- /** @type {?} */
37241
- RichtexteditorComponent.prototype.copyButton;
37242
- /** @type {?} */
37243
- RichtexteditorComponent.prototype.replaceButton;
37244
- /** @type {?} */
37245
- RichtexteditorComponent.prototype.placeholder;
37246
38587
  /** @type {?} */
37247
38588
  RichtexteditorComponent.prototype.value;
37248
38589
  /** @type {?} */
38590
+ RichtexteditorComponent.prototype.editorId;
38591
+ /** @type {?} */
37249
38592
  RichtexteditorComponent.prototype.height;
37250
38593
  /** @type {?} */
37251
38594
  RichtexteditorComponent.prototype.autoSaveOnIdle;
37252
38595
  /** @type {?} */
37253
- RichtexteditorComponent.prototype.target;
37254
- /** @type {?} */
37255
- RichtexteditorComponent.prototype.toolbarClick;
37256
- /** @type {?} */
37257
- RichtexteditorComponent.prototype.change;
37258
- /** @type {?} */
37259
- RichtexteditorComponent.prototype.family;
37260
- /** @type {?} */
37261
- RichtexteditorComponent.prototype.dialogWidth;
37262
- /** @type {?} */
37263
- RichtexteditorComponent.prototype.dialogHeight;
37264
- /** @type {?} */
37265
- RichtexteditorComponent.prototype.showZoomBtn;
37266
- /** @type {?} */
37267
- RichtexteditorComponent.prototype.showMsg;
38596
+ RichtexteditorComponent.prototype.disabled;
37268
38597
  /** @type {?} */
37269
38598
  RichtexteditorComponent.prototype.insertImageSettings;
37270
38599
  /** @type {?} */
37271
- RichtexteditorComponent.prototype.editorManager;
37272
- /** @type {?} */
37273
- RichtexteditorComponent.prototype.size;
37274
- /** @type {?} */
37275
- RichtexteditorComponent.prototype.selectedQuery;
37276
- /** @type {?} */
37277
- RichtexteditorComponent.prototype.dropValIndex;
37278
- /** @type {?} */
37279
- RichtexteditorComponent.prototype.queryList;
38600
+ RichtexteditorComponent.prototype.toolbarClick;
37280
38601
  /** @type {?} */
37281
- RichtexteditorComponent.prototype.rephraseTyleList;
38602
+ RichtexteditorComponent.prototype.change;
37282
38603
  /** @type {?} */
37283
- RichtexteditorComponent.prototype.languageList;
38604
+ RichtexteditorComponent.prototype.created;
37284
38605
  /** @type {?} */
37285
- RichtexteditorComponent.prototype.promptQuery;
38606
+ RichtexteditorComponent.prototype.actionBegin;
37286
38607
  /** @type {?} */
37287
- RichtexteditorComponent.prototype.isSentimentCheck;
38608
+ RichtexteditorComponent.prototype.input;
37288
38609
  /** @type {?} */
37289
- RichtexteditorComponent.prototype.subQuery;
38610
+ RichtexteditorComponent.prototype.focus;
37290
38611
  /** @type {?} */
37291
- RichtexteditorComponent.prototype.translatelanguage;
38612
+ RichtexteditorComponent.prototype.blur;
37292
38613
  /** @type {?} */
37293
- RichtexteditorComponent.prototype.chipValue;
38614
+ RichtexteditorComponent.prototype.actionComplete;
37294
38615
  /** @type {?} */
37295
- RichtexteditorComponent.prototype.apiResultData;
38616
+ RichtexteditorComponent.prototype.family;
37296
38617
  /** @type {?} */
37297
- RichtexteditorComponent.prototype.AIResult;
38618
+ RichtexteditorComponent.prototype.fontSize;
37298
38619
  /** @type {?} */
37299
38620
  RichtexteditorComponent.prototype.tools;
37300
38621
  /**
38622
+ * 表格快捷工具栏:含 TableCell(合并/拆分单元格)
37301
38623
  * @type {?}
37302
- * @private
37303
38624
  */
37304
- RichtexteditorComponent.prototype.ref;
38625
+ RichtexteditorComponent.prototype.quickToolbarSettings;
38626
+ /** @type {?} */
38627
+ RichtexteditorComponent.prototype.bulletFormatList;
38628
+ /** @type {?} */
38629
+ RichtexteditorComponent.prototype.numberFormatList;
37305
38630
  }
37306
38631
 
37307
38632
  /**
@@ -53639,6 +54964,7 @@ var RaiseCommonLibModule = /** @class */ (function () {
53639
54964
  CommonGridComponent,
53640
54965
  GridActionComponent,
53641
54966
  GridActionItemComponent,
54967
+ DateTreeFilterPopoverComponent,
53642
54968
  FloatBoxComponent,
53643
54969
  RsPageListComponent,
53644
54970
  RsPageTabComponent,
@@ -53825,6 +55151,7 @@ var RaiseCommonLibModule = /** @class */ (function () {
53825
55151
  CommonGridComponent,
53826
55152
  GridActionComponent,
53827
55153
  GridActionItemComponent,
55154
+ DateTreeFilterPopoverComponent,
53828
55155
  FloatBoxComponent,
53829
55156
  RsPageListComponent,
53830
55157
  RsPageTabComponent,
@@ -53891,5 +55218,5 @@ var RaiseCommonLibModule = /** @class */ (function () {
53891
55218
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
53892
55219
  */
53893
55220
 
53894
- export { API_SERVICE_TOKEN, CheckboxGroupComponent, CommonDialogComponent, CommonFunctionService, CommonGridComponent, DefaultDrawerConfig, DialogService, DrawerComponent, DrawerFormComponent, DrawerService, EmailPattern, EncryptedInputComponent, FloatBoxComponent, GridActionComponent, GridActionItemComponent, GridBoxComponent, IconLoaderService, KeepAliveService, MainContainerComponent, MessageType, MultiTabComponent, PBF_TOKEN, PaneGroupNewComponent, ROLE_SERVICE_TOKEN, RSAsideComponent, RSFooterComponent, RSHeaderComponent, RSNavCardGroupComponent, RSStepperComponent, RSToolbarComponent, RadioGroupComponent, RaiseCommonLibModule, RsCommentaryComponent, RsPageListComponent, RsPageTabComponent, SearchInputComponent, SmartPopupComponent, StaticResourceService, SwitchInputComponent, TagInputComponent, ToolbarItemComponent, TranslationService, TruncatedTextToggleComponent, filterShowSection, Debounce as ɵa, DashboardService as ɵb, ApiList as ɵc, DashboardPorletsService as ɵd, debounce as ɵe, RichtexteditorComponent as ɵf, ConfirmSelectComponent as ɵg, NewActionNotificationComponent as ɵh, CommonDeleteComponent as ɵi, SidebarIconlistNewComponent as ɵj, EmptyIconPromptComponent as ɵk, GadgetTableComponent as ɵl, GadgetPivotComponent as ɵm, GadgetPivotChartComponent as ɵn, GadgetTransposeComponent as ɵo, PortletTypeNewComponent as ɵp, FieldFilterComponent as ɵq, FieldFormatComponent as ɵr, DataMartNewComponent as ɵs, BarChartsComponent as ɵt, PaneDownloadComponent as ɵu };
55221
+ export { API_SERVICE_TOKEN, CheckboxGroupComponent, CommonDialogComponent, CommonFunctionService, CommonGridComponent, DATE_TREE_DEFAULT_DATE_FORMATS, DateTreeFilterHelper, DateTreeFilterPopoverComponent, DefaultDrawerConfig, DialogService, DrawerComponent, DrawerFormComponent, DrawerService, EmailPattern, EncryptedInputComponent, FloatBoxComponent, GridActionComponent, GridActionItemComponent, GridBoxComponent, IconLoaderService, KeepAliveService, MainContainerComponent, MessageType, MultiTabComponent, PBF_TOKEN, PaneGroupNewComponent, ROLE_SERVICE_TOKEN, RSAsideComponent, RSFooterComponent, RSHeaderComponent, RSNavCardGroupComponent, RSStepperComponent, RSToolbarComponent, RadioGroupComponent, RaiseCommonLibModule, RsCommentaryComponent, RsPageListComponent, RsPageTabComponent, SearchInputComponent, SmartPopupComponent, StaticResourceService, SwitchInputComponent, TagInputComponent, ToolbarItemComponent, TranslationService, TruncatedTextToggleComponent, createRsCommonGridDateTreeHelper, filterShowSection, Debounce as ɵa, DashboardService as ɵb, ApiList as ɵc, DashboardPorletsService as ɵd, debounce as ɵe, RichtexteditorComponent as ɵf, ConfirmSelectComponent as ɵg, NewActionNotificationComponent as ɵh, CommonDeleteComponent as ɵi, SidebarIconlistNewComponent as ɵj, EmptyIconPromptComponent as ɵk, GadgetTableComponent as ɵl, GadgetPivotComponent as ɵm, GadgetPivotChartComponent as ɵn, GadgetTransposeComponent as ɵo, PortletTypeNewComponent as ɵp, FieldFilterComponent as ɵq, FieldFormatComponent as ɵr, DataMartNewComponent as ɵs, BarChartsComponent as ɵt, PaneDownloadComponent as ɵu };
53895
55222
  //# sourceMappingURL=raise-common-lib.js.map