igniteui-angular 20.1.5 → 20.2.0-alpha.3

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 (40) hide show
  1. package/fesm2022/igniteui-angular.mjs +723 -407
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/index.d.ts +120 -14
  4. package/lib/core/styles/components/action-strip/_action-strip-theme.scss +0 -58
  5. package/lib/core/styles/components/carousel/_carousel-theme.scss +12 -11
  6. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +4 -10
  7. package/lib/core/styles/components/combo/_combo-theme.scss +23 -1
  8. package/lib/core/styles/components/date-range-picker/_date-range-picker-theme.scss +9 -4
  9. package/lib/core/styles/components/grid/_pivot-data-selector-theme.scss +0 -25
  10. package/lib/core/styles/components/input/_file-input-theme.scss +0 -82
  11. package/lib/core/styles/components/input/_input-group-theme.scss +70 -70
  12. package/lib/core/styles/components/time-picker/_time-picker-theme.scss +15 -1
  13. package/lib/core/styles/typography/_bootstrap.scss +3 -1
  14. package/package.json +2 -2
  15. package/styles/igniteui-angular-dark.css +1 -1
  16. package/styles/igniteui-angular.css +1 -1
  17. package/styles/igniteui-bootstrap-dark.css +1 -1
  18. package/styles/igniteui-bootstrap-light.css +1 -1
  19. package/styles/igniteui-dark-green.css +1 -1
  20. package/styles/igniteui-fluent-dark-excel.css +1 -1
  21. package/styles/igniteui-fluent-dark-word.css +1 -1
  22. package/styles/igniteui-fluent-dark.css +1 -1
  23. package/styles/igniteui-fluent-light-excel.css +1 -1
  24. package/styles/igniteui-fluent-light-word.css +1 -1
  25. package/styles/igniteui-fluent-light.css +1 -1
  26. package/styles/igniteui-indigo-dark.css +1 -1
  27. package/styles/igniteui-indigo-light.css +1 -1
  28. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  29. package/styles/maps/igniteui-angular.css.map +1 -1
  30. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  31. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  32. package/styles/maps/igniteui-dark-green.css.map +1 -1
  33. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  34. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  35. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  36. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  37. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  38. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  39. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  40. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, HostListener, Input, Directive, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, DOCUMENT, HostBinding, Output, Self, Optional, booleanAttribute, afterRenderEffect, SecurityContext, DestroyRef, Component, ContentChild, ContentChildren, RendererStyleFlags2, Pipe, ViewChild, Renderer2, NgZone, signal, QueryList, effect, LOCALE_ID, forwardRef, Host, ViewChildren, TemplateRef, ChangeDetectionStrategy, input, SimpleChange, ChangeDetectorRef, SkipSelf, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule } from '@angular/core';
2
+ import { Injectable, HostListener, Input, Directive, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, DOCUMENT, HostBinding, Output, Self, Optional, booleanAttribute, afterRenderEffect, SecurityContext, DestroyRef, Component, ContentChild, ContentChildren, RendererStyleFlags2, Pipe, ViewChild, Renderer2, NgZone, signal, QueryList, effect, LOCALE_ID, forwardRef, Host, ViewChildren, TemplateRef, ChangeDetectionStrategy, input, SimpleChange, ChangeDetectorRef, SkipSelf, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule, output, untracked } from '@angular/core';
3
3
  import * as i4 from '@angular/forms';
4
4
  import { TouchedChangeEvent, NgModel, NgControl, FormControlName, NG_VALUE_ACCESSOR, Validators, NG_VALIDATORS, FormGroup, FormsModule, RequiredValidator, MinValidator, MaxValidator, EmailValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, FormControl, ReactiveFormsModule } from '@angular/forms';
5
5
  import { Observable, NEVER, Subject, fromEvent, BehaviorSubject, filter as filter$1, interval, animationFrameScheduler, noop, takeUntil as takeUntil$1, merge, Subscription, timer, sampleTime, pipe, take as take$1 } from 'rxjs';
@@ -12,11 +12,16 @@ import { scaleOutVerTop, scaleInVerTop, AnimationUtil, fadeOut, fadeIn, slideOut
12
12
  import * as i1 from '@angular/animations';
13
13
  import { style, animate, useAnimation } from '@angular/animations';
14
14
  import * as i1$1 from '@angular/platform-browser';
15
- import { ɵgetDOM as _getDOM, HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
15
+ import { ɵgetDOM as _getDOM, HammerGestureConfig, HAMMER_GESTURE_CONFIG, DomSanitizer } from '@angular/platform-browser';
16
16
  import * as i2 from '@angular/common/http';
17
17
  import { addRow, addChild, pinLeft, unpinLeft, jumpDown, jumpUp, caseSensitive, editor } from '@igniteui/material-icons-extended';
18
18
  import { __decorate, __param } from 'tslib';
19
19
  import { IgcTrialWatermark } from 'igniteui-trial-watermark';
20
+ import { IgcChatComponent } from 'igniteui-webcomponents';
21
+ import DOMPurify from 'dompurify';
22
+ import { Marked } from 'marked';
23
+ import markedShiki from 'marked-shiki';
24
+ import { createHighlighter, bundledThemes } from 'shiki/bundle/web';
20
25
 
21
26
  /**
22
27
  * Common service to be injected between components where those implementing common
@@ -1059,6 +1064,9 @@ class IgxSorting {
1059
1064
  prepareExpressions(expressions, grid) {
1060
1065
  const multipleSortingExpressions = [];
1061
1066
  for (const expr of expressions) {
1067
+ if (expr.dir === SortingDirection.None) {
1068
+ continue;
1069
+ }
1062
1070
  if (!expr.strategy) {
1063
1071
  expr.strategy = DefaultSortingStrategy.instance();
1064
1072
  }
@@ -1398,290 +1406,12 @@ class ByLevelTreeGridMergeStrategy extends DefaultMergeStrategy {
1398
1406
  }
1399
1407
  }
1400
1408
 
1401
- /**
1402
- * @hidden
1403
- */
1404
- const DataType = {
1405
- String: 'string',
1406
- Number: 'number',
1407
- Boolean: 'boolean',
1408
- Date: 'date',
1409
- DateTime: 'dateTime',
1410
- Time: 'time',
1411
- Currency: 'currency',
1412
- Percent: 'percent',
1413
- Image: 'image'
1414
- };
1415
- /**
1416
- * @hidden
1417
- */
1418
- const GridColumnDataType = DataType;
1419
- /**
1420
- * @hidden
1421
- */
1422
- class DataUtil {
1423
- static sort(data, expressions, sorting = new IgxSorting(), grid) {
1424
- return sorting.sort(data, expressions, grid);
1425
- }
1426
- static treeGridSort(hierarchicalData, expressions, sorting = new IgxDataRecordSorting(), grid) {
1427
- const res = [];
1428
- const stack = [];
1429
- stack.push({ original: hierarchicalData, parent: null, result: res });
1430
- while (stack.length > 0) {
1431
- const { original, parent, result } = stack.pop();
1432
- const clonedRecords = [];
1433
- for (const treeRecord of original) {
1434
- const rec = DataUtil.cloneTreeGridRecord(treeRecord);
1435
- rec.parent = parent;
1436
- clonedRecords.push(rec);
1437
- // If it has children, process them later
1438
- if (rec.children && rec.children.length > 0) {
1439
- const childClones = [];
1440
- rec.children = childClones;
1441
- stack.push({
1442
- original: treeRecord.children,
1443
- parent: rec,
1444
- result: childClones
1445
- });
1446
- }
1447
- }
1448
- // Sort the clonedRecords before assigning to the result
1449
- const sorted = DataUtil.sort(clonedRecords, expressions, sorting, grid);
1450
- for (const item of sorted) {
1451
- result.push(item);
1452
- }
1453
- }
1454
- return res;
1455
- }
1456
- static cloneTreeGridRecord(hierarchicalRecord) {
1457
- const rec = {
1458
- key: hierarchicalRecord.key,
1459
- data: hierarchicalRecord.data,
1460
- children: hierarchicalRecord.children,
1461
- isFilteredOutParent: hierarchicalRecord.isFilteredOutParent,
1462
- level: hierarchicalRecord.level,
1463
- expanded: hierarchicalRecord.expanded
1464
- };
1465
- return rec;
1466
- }
1467
- static group(data, state, grouping = new IgxGrouping(), grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
1468
- groupsRecords.splice(0, groupsRecords.length);
1469
- return grouping.groupBy(data, state, grid, groupsRecords, fullResult);
1470
- }
1471
- static merge(data, columns, strategy = new DefaultMergeStrategy(), activeRowIndexes = [], grid = null) {
1472
- const result = [];
1473
- for (const col of columns) {
1474
- const isDate = col?.dataType === 'date' || col?.dataType === 'dateTime';
1475
- const isTime = col?.dataType === 'time' || col?.dataType === 'dateTime';
1476
- strategy.merge(data, col.field, col.mergingComparer, result, activeRowIndexes, isDate, isTime, grid);
1477
- }
1478
- return result;
1479
- }
1480
- static page(data, state, dataLength) {
1481
- if (!state) {
1482
- return data;
1483
- }
1484
- const len = dataLength !== undefined ? dataLength : data.length;
1485
- const index = state.index;
1486
- const res = [];
1487
- const recordsPerPage = dataLength !== undefined && state.recordsPerPage > dataLength ? dataLength : state.recordsPerPage;
1488
- state.metadata = {
1489
- countPages: 0,
1490
- countRecords: len,
1491
- error: PagingError.None
1492
- };
1493
- if (index < 0 || isNaN(index)) {
1494
- state.metadata.error = PagingError.IncorrectPageIndex;
1495
- return res;
1496
- }
1497
- if (recordsPerPage <= 0 || isNaN(recordsPerPage)) {
1498
- state.metadata.error = PagingError.IncorrectRecordsPerPage;
1499
- return res;
1500
- }
1501
- state.metadata.countPages = Math.ceil(len / recordsPerPage);
1502
- if (!len) {
1503
- return data;
1504
- }
1505
- if (index >= state.metadata.countPages) {
1506
- state.metadata.error = PagingError.IncorrectPageIndex;
1507
- return res;
1508
- }
1509
- return data.slice(index * recordsPerPage, (index + 1) * recordsPerPage);
1510
- }
1511
- static correctPagingState(state, length) {
1512
- const maxPage = Math.ceil(length / state.recordsPerPage) - 1;
1513
- if (!isNaN(maxPage) && state.index > maxPage) {
1514
- state.index = maxPage;
1515
- }
1516
- }
1517
- static getHierarchy(gRow) {
1518
- return getHierarchy(gRow);
1519
- }
1520
- static isHierarchyMatch(h1, h2, expressions) {
1521
- return isHierarchyMatch(h1, h2, expressions);
1522
- }
1523
- /**
1524
- * Merges all changes from provided transactions into provided data collection
1525
- *
1526
- * @param data Collection to merge
1527
- * @param transactions Transactions to merge into data
1528
- * @param primaryKey Primary key of the collection, if any
1529
- * @param deleteRows Should delete rows with DELETE transaction type from data
1530
- * @returns Provided data collections updated with all provided transactions
1531
- */
1532
- static mergeTransactions(data, transactions, primaryKey, cloneStrategy = new DefaultDataCloneStrategy(), deleteRows = false) {
1533
- data.forEach((item, index) => {
1534
- const rowId = primaryKey ? item[primaryKey] : item;
1535
- const transaction = transactions.find(t => t.id === rowId);
1536
- if (transaction && transaction.type === TransactionType.UPDATE) {
1537
- data[index] = mergeObjects(cloneStrategy.clone(data[index]), transaction.newValue);
1538
- }
1539
- });
1540
- if (deleteRows) {
1541
- transactions
1542
- .filter(t => t.type === TransactionType.DELETE)
1543
- .forEach(t => {
1544
- const index = primaryKey ? data.findIndex(d => d[primaryKey] === t.id) : data.findIndex(d => d === t.id);
1545
- if (0 <= index && index < data.length) {
1546
- data.splice(index, 1);
1547
- }
1548
- });
1549
- }
1550
- data.push(...transactions
1551
- .filter(t => t.type === TransactionType.ADD)
1552
- .map(t => t.newValue));
1553
- return data;
1554
- }
1555
- /**
1556
- * Merges all changes from provided transactions into provided hierarchical data collection
1557
- *
1558
- * @param data Collection to merge
1559
- * @param transactions Transactions to merge into data
1560
- * @param childDataKey Data key of child collections
1561
- * @param primaryKey Primary key of the collection, if any
1562
- * @param deleteRows Should delete rows with DELETE transaction type from data
1563
- * @returns Provided data collections updated with all provided transactions
1564
- */
1565
- static mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKey, cloneStrategy = new DefaultDataCloneStrategy(), deleteRows = false) {
1566
- for (const transaction of transactions) {
1567
- if (transaction.path) {
1568
- const parent = this.findParentFromPath(data, primaryKey, childDataKey, transaction.path);
1569
- let collection = parent ? parent[childDataKey] : data;
1570
- switch (transaction.type) {
1571
- case TransactionType.ADD:
1572
- // if there is no parent this is ADD row at root level
1573
- if (parent && !parent[childDataKey]) {
1574
- parent[childDataKey] = collection = [];
1575
- }
1576
- collection.push(transaction.newValue);
1577
- break;
1578
- case TransactionType.UPDATE:
1579
- const updateIndex = collection.findIndex(x => x[primaryKey] === transaction.id);
1580
- if (updateIndex !== -1) {
1581
- collection[updateIndex] = mergeObjects(cloneStrategy.clone(collection[updateIndex]), transaction.newValue);
1582
- }
1583
- break;
1584
- case TransactionType.DELETE:
1585
- if (deleteRows) {
1586
- const deleteIndex = collection.findIndex(r => r[primaryKey] === transaction.id);
1587
- if (deleteIndex !== -1) {
1588
- collection.splice(deleteIndex, 1);
1589
- }
1590
- }
1591
- break;
1592
- }
1593
- }
1594
- else {
1595
- // if there is no path this is ADD row in root. Push the newValue to data
1596
- data.push(transaction.newValue);
1597
- }
1598
- }
1599
- return data;
1600
- }
1601
- static parseValue(dataType, value) {
1602
- if (dataType === GridColumnDataType.Number || dataType === GridColumnDataType.Currency || dataType === GridColumnDataType.Percent) {
1603
- value = parseFloat(value);
1604
- }
1605
- return value;
1606
- }
1607
- static findParentFromPath(data, primaryKey, childDataKey, path) {
1608
- let collection = data;
1609
- let result;
1610
- for (const id of path) {
1611
- result = collection && collection.find(x => x[primaryKey] === id);
1612
- if (!result) {
1613
- break;
1614
- }
1615
- collection = result[childDataKey];
1616
- }
1617
- return result;
1618
- }
1619
- }
1620
-
1621
- /**
1622
- * @hidden
1623
- */
1624
- class ExportUtilities {
1625
- static getKeysFromData(data) {
1626
- const length = data.length;
1627
- if (length === 0) {
1628
- return [];
1629
- }
1630
- const dataEntry = data[0];
1631
- const dataEntryMiddle = data[Math.floor(length / 2)];
1632
- const dataEntryLast = data[length - 1];
1633
- const keys1 = Object.keys(dataEntry);
1634
- const keys2 = Object.keys(dataEntryMiddle);
1635
- const keys3 = Object.keys(dataEntryLast);
1636
- const keys = new Set(keys1.concat(keys2).concat(keys3));
1637
- return !ExportUtilities.isSpecialData(dataEntry) ? Array.from(keys) : ['Column 1'];
1638
- }
1639
- static saveBlobToFile(blob, fileName) {
1640
- const doc = globalThis.document;
1641
- const a = doc.createElement('a');
1642
- const url = window.URL.createObjectURL(blob);
1643
- a.download = fileName;
1644
- a.href = url;
1645
- doc.body.appendChild(a);
1646
- a.click();
1647
- doc.body.removeChild(a);
1648
- window.URL.revokeObjectURL(url);
1649
- }
1650
- static stringToArrayBuffer(s) {
1651
- const buf = new ArrayBuffer(s.length);
1652
- const view = new Uint8Array(buf);
1653
- for (let i = 0; i !== s.length; ++i) {
1654
- view[i] = s.charCodeAt(i) & 0xFF;
1655
- }
1656
- return buf;
1657
- }
1658
- static isSpecialData(data) {
1659
- return (typeof data === 'string' ||
1660
- typeof data === 'number' ||
1661
- data instanceof Date);
1662
- }
1663
- static hasValue(value) {
1664
- return value !== undefined && value !== null;
1665
- }
1666
- static isNullOrWhitespaces(value) {
1667
- return value === undefined || value === null || !value.trim();
1668
- }
1669
- static sanitizeValue(value) {
1670
- if (!this.hasValue(value)) {
1671
- return '';
1672
- }
1673
- else {
1674
- const stringValue = String(value);
1675
- return stringValue.replace(/&/g, '&amp;')
1676
- .replace(/</g, '&lt;')
1677
- .replace(/>/g, '&gt;')
1678
- .replace(/"/g, '&quot;')
1679
- .replace(/'/g, '&apos;')
1680
- // Bug #14944 - Remove the not supported null character (\u0000, \x00)
1681
- .replace(/\x00/g, '');
1682
- }
1683
- }
1684
- }
1409
+ /* mustCoerceToInt */
1410
+ var FilteringLogic;
1411
+ (function (FilteringLogic) {
1412
+ FilteringLogic[FilteringLogic["And"] = 0] = "And";
1413
+ FilteringLogic[FilteringLogic["Or"] = 1] = "Or";
1414
+ })(FilteringLogic || (FilteringLogic = {}));
1685
1415
 
1686
1416
  /**
1687
1417
  * Specify a particular date, time or AmPm part.
@@ -3537,13 +3267,6 @@ class FilteringExpressionsTree {
3537
3267
  }
3538
3268
  }
3539
3269
 
3540
- /* mustCoerceToInt */
3541
- var FilteringLogic;
3542
- (function (FilteringLogic) {
3543
- FilteringLogic[FilteringLogic["And"] = 0] = "And";
3544
- FilteringLogic[FilteringLogic["Or"] = 1] = "Or";
3545
- })(FilteringLogic || (FilteringLogic = {}));
3546
-
3547
3270
  const DateType = 'date';
3548
3271
  const DateTimeType = 'dateTime';
3549
3272
  const TimeType = 'time';
@@ -3637,21 +3360,27 @@ class BaseFilteringStrategy {
3637
3360
  }
3638
3361
  getFilterItems(column, tree) {
3639
3362
  const applyFormatter = column.formatter && this.shouldFormatFilterValues(column);
3640
- let data = column.grid.gridAPI.filterDataByExpressions(tree);
3641
- data = column.grid.gridAPI.sortDataByExpressions(data, [{ fieldName: column.field, dir: SortingDirection.Asc, ignoreCase: column.sortingIgnoreCase }]);
3363
+ const data = this.getFilteredData(column, tree);
3642
3364
  const pathParts = columnFieldPath(column.field);
3643
- let filterItems = data.map(record => {
3644
- const value = applyFormatter ?
3645
- column.formatter(resolveNestedPath(record, pathParts), record) :
3646
- resolveNestedPath(record, pathParts);
3647
- return {
3648
- value,
3649
- label: this.getFilterItemLabel(column, value, !applyFormatter, record)
3650
- };
3651
- });
3652
- filterItems = this.getUniqueFilterItems(column, filterItems);
3365
+ const seenFormattedFilterItems = new Map();
3366
+ for (let i = 0; i < data.length; ++i) {
3367
+ const record = data[i];
3368
+ const rawValue = resolveNestedPath(record, pathParts);
3369
+ const formattedValue = applyFormatter ? column.formatter(rawValue, record) : rawValue;
3370
+ const { key, finalValue } = this.getFilterItemKeyValue(formattedValue, column);
3371
+ // Deduplicate by normalized key
3372
+ if (!seenFormattedFilterItems.has(key)) {
3373
+ const label = this.getFilterItemLabel(column, finalValue, !applyFormatter, record);
3374
+ seenFormattedFilterItems.set(key, { value: finalValue, label });
3375
+ }
3376
+ }
3377
+ let filterItems = Array.from(seenFormattedFilterItems.values());
3378
+ filterItems = DataUtil.sort(filterItems, [{ fieldName: 'value', dir: SortingDirection.Asc, ignoreCase: column.sortingIgnoreCase }], new IgxSorting());
3653
3379
  return Promise.resolve(filterItems);
3654
3380
  }
3381
+ getFilteredData(column, tree) {
3382
+ return column.grid.gridAPI.filterDataByExpressions(tree);
3383
+ }
3655
3384
  getFilterItemLabel(column, value, applyFormatter, data) {
3656
3385
  if (column.formatter) {
3657
3386
  if (applyFormatter) {
@@ -3676,30 +3405,31 @@ class BaseFilteringStrategy {
3676
3405
  return value;
3677
3406
  }
3678
3407
  }
3679
- getUniqueFilterItems(column, filterItems) {
3680
- const filteredUniqueValues = filterItems.reduce((map, item) => {
3681
- let key = item.value;
3682
- if (column.dataType === GridColumnDataType.String && column.filteringIgnoreCase) {
3683
- key = key?.toString().toLowerCase();
3684
- }
3685
- else if (column.dataType === GridColumnDataType.DateTime) {
3686
- key = item.value?.toString();
3687
- item.value = key ? new Date(key) : key;
3688
- }
3689
- else if (column.dataType === GridColumnDataType.Time) {
3690
- const date = key ? new Date(key) : key;
3691
- key = date ? new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : key;
3692
- item.value = key ? new Date(key) : key;
3693
- }
3694
- else if (column.dataType === GridColumnDataType.Date) {
3695
- const date = key ? new Date(key) : key;
3696
- key = date ? new Date(date.getFullYear(), date.getMonth(), date.getDate()).toISOString() : key;
3697
- item.value = date;
3698
- }
3699
- return map.has(key) ? map : map.set(key, item);
3700
- }, new Map());
3701
- const uniqueValues = Array.from(filteredUniqueValues.values());
3702
- return uniqueValues;
3408
+ getFilterItemKeyValue(value, column) {
3409
+ let key = value;
3410
+ let finalValue = value;
3411
+ if (column.dataType === GridColumnDataType.String && column.filteringIgnoreCase) {
3412
+ key = key?.toString().toLowerCase();
3413
+ }
3414
+ else if (column.dataType === GridColumnDataType.DateTime) {
3415
+ key = value?.toString();
3416
+ finalValue = key ? new Date(key) : key;
3417
+ }
3418
+ else if (column.dataType === GridColumnDataType.Time) {
3419
+ const date = key ? new Date(key) : key;
3420
+ key = date
3421
+ ? new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())
3422
+ : date;
3423
+ finalValue = key ? new Date(key) : key;
3424
+ }
3425
+ else if (column.dataType === GridColumnDataType.Date) {
3426
+ const date = key ? new Date(key) : key;
3427
+ key = date
3428
+ ? new Date(date.getFullYear(), date.getMonth(), date.getDate()).toISOString()
3429
+ : date;
3430
+ finalValue = date;
3431
+ }
3432
+ return { key, finalValue };
3703
3433
  }
3704
3434
  shouldFormatFilterValues(_column) {
3705
3435
  return false;
@@ -3754,6 +3484,298 @@ class FormattedValuesFilteringStrategy extends FilteringStrategy {
3754
3484
  }
3755
3485
  }
3756
3486
 
3487
+ /**
3488
+ * @hidden
3489
+ */
3490
+ const DataType = {
3491
+ String: 'string',
3492
+ Number: 'number',
3493
+ Boolean: 'boolean',
3494
+ Date: 'date',
3495
+ DateTime: 'dateTime',
3496
+ Time: 'time',
3497
+ Currency: 'currency',
3498
+ Percent: 'percent',
3499
+ Image: 'image'
3500
+ };
3501
+ /**
3502
+ * @hidden
3503
+ */
3504
+ const GridColumnDataType = DataType;
3505
+ /**
3506
+ * @hidden
3507
+ */
3508
+ class DataUtil {
3509
+ static sort(data, expressions, sorting = new IgxSorting(), grid) {
3510
+ return sorting.sort(data, expressions, grid);
3511
+ }
3512
+ static treeGridSort(hierarchicalData, expressions, sorting = new IgxDataRecordSorting(), grid) {
3513
+ const res = [];
3514
+ const stack = [];
3515
+ stack.push({ original: hierarchicalData, parent: null, result: res });
3516
+ while (stack.length > 0) {
3517
+ const { original, parent, result } = stack.pop();
3518
+ const clonedRecords = [];
3519
+ for (const treeRecord of original) {
3520
+ const rec = DataUtil.cloneTreeGridRecord(treeRecord);
3521
+ rec.parent = parent;
3522
+ clonedRecords.push(rec);
3523
+ // If it has children, process them later
3524
+ if (rec.children && rec.children.length > 0) {
3525
+ const childClones = [];
3526
+ rec.children = childClones;
3527
+ stack.push({
3528
+ original: treeRecord.children,
3529
+ parent: rec,
3530
+ result: childClones
3531
+ });
3532
+ }
3533
+ }
3534
+ // Sort the clonedRecords before assigning to the result
3535
+ const sorted = DataUtil.sort(clonedRecords, expressions, sorting, grid);
3536
+ for (const item of sorted) {
3537
+ result.push(item);
3538
+ }
3539
+ }
3540
+ return res;
3541
+ }
3542
+ static cloneTreeGridRecord(hierarchicalRecord) {
3543
+ const rec = {
3544
+ key: hierarchicalRecord.key,
3545
+ data: hierarchicalRecord.data,
3546
+ children: hierarchicalRecord.children,
3547
+ isFilteredOutParent: hierarchicalRecord.isFilteredOutParent,
3548
+ level: hierarchicalRecord.level,
3549
+ expanded: hierarchicalRecord.expanded
3550
+ };
3551
+ return rec;
3552
+ }
3553
+ static group(data, state, grouping = new IgxGrouping(), grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
3554
+ groupsRecords.splice(0, groupsRecords.length);
3555
+ return grouping.groupBy(data, state, grid, groupsRecords, fullResult);
3556
+ }
3557
+ static merge(data, columns, strategy = new DefaultMergeStrategy(), activeRowIndexes = [], grid = null) {
3558
+ const result = [];
3559
+ for (const col of columns) {
3560
+ const isDate = col?.dataType === 'date' || col?.dataType === 'dateTime';
3561
+ const isTime = col?.dataType === 'time' || col?.dataType === 'dateTime';
3562
+ strategy.merge(data, col.field, col.mergingComparer, result, activeRowIndexes, isDate, isTime, grid);
3563
+ }
3564
+ return result;
3565
+ }
3566
+ static page(data, state, dataLength) {
3567
+ if (!state) {
3568
+ return data;
3569
+ }
3570
+ const len = dataLength !== undefined ? dataLength : data.length;
3571
+ const index = state.index;
3572
+ const res = [];
3573
+ const recordsPerPage = dataLength !== undefined && state.recordsPerPage > dataLength ? dataLength : state.recordsPerPage;
3574
+ state.metadata = {
3575
+ countPages: 0,
3576
+ countRecords: len,
3577
+ error: PagingError.None
3578
+ };
3579
+ if (index < 0 || isNaN(index)) {
3580
+ state.metadata.error = PagingError.IncorrectPageIndex;
3581
+ return res;
3582
+ }
3583
+ if (recordsPerPage <= 0 || isNaN(recordsPerPage)) {
3584
+ state.metadata.error = PagingError.IncorrectRecordsPerPage;
3585
+ return res;
3586
+ }
3587
+ state.metadata.countPages = Math.ceil(len / recordsPerPage);
3588
+ if (!len) {
3589
+ return data;
3590
+ }
3591
+ if (index >= state.metadata.countPages) {
3592
+ state.metadata.error = PagingError.IncorrectPageIndex;
3593
+ return res;
3594
+ }
3595
+ return data.slice(index * recordsPerPage, (index + 1) * recordsPerPage);
3596
+ }
3597
+ static correctPagingState(state, length) {
3598
+ const maxPage = Math.ceil(length / state.recordsPerPage) - 1;
3599
+ if (!isNaN(maxPage) && state.index > maxPage) {
3600
+ state.index = maxPage;
3601
+ }
3602
+ }
3603
+ static getHierarchy(gRow) {
3604
+ return getHierarchy(gRow);
3605
+ }
3606
+ static isHierarchyMatch(h1, h2, expressions) {
3607
+ return isHierarchyMatch(h1, h2, expressions);
3608
+ }
3609
+ /**
3610
+ * Merges all changes from provided transactions into provided data collection
3611
+ *
3612
+ * @param data Collection to merge
3613
+ * @param transactions Transactions to merge into data
3614
+ * @param primaryKey Primary key of the collection, if any
3615
+ * @param deleteRows Should delete rows with DELETE transaction type from data
3616
+ * @returns Provided data collections updated with all provided transactions
3617
+ */
3618
+ static mergeTransactions(data, transactions, primaryKey, cloneStrategy = new DefaultDataCloneStrategy(), deleteRows = false) {
3619
+ data.forEach((item, index) => {
3620
+ const rowId = primaryKey ? item[primaryKey] : item;
3621
+ const transaction = transactions.find(t => t.id === rowId);
3622
+ if (transaction && transaction.type === TransactionType.UPDATE) {
3623
+ data[index] = mergeObjects(cloneStrategy.clone(data[index]), transaction.newValue);
3624
+ }
3625
+ });
3626
+ if (deleteRows) {
3627
+ transactions
3628
+ .filter(t => t.type === TransactionType.DELETE)
3629
+ .forEach(t => {
3630
+ const index = primaryKey ? data.findIndex(d => d[primaryKey] === t.id) : data.findIndex(d => d === t.id);
3631
+ if (0 <= index && index < data.length) {
3632
+ data.splice(index, 1);
3633
+ }
3634
+ });
3635
+ }
3636
+ data.push(...transactions
3637
+ .filter(t => t.type === TransactionType.ADD)
3638
+ .map(t => t.newValue));
3639
+ return data;
3640
+ }
3641
+ /**
3642
+ * Merges all changes from provided transactions into provided hierarchical data collection
3643
+ *
3644
+ * @param data Collection to merge
3645
+ * @param transactions Transactions to merge into data
3646
+ * @param childDataKey Data key of child collections
3647
+ * @param primaryKey Primary key of the collection, if any
3648
+ * @param deleteRows Should delete rows with DELETE transaction type from data
3649
+ * @returns Provided data collections updated with all provided transactions
3650
+ */
3651
+ static mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKey, cloneStrategy = new DefaultDataCloneStrategy(), deleteRows = false) {
3652
+ for (const transaction of transactions) {
3653
+ if (transaction.path) {
3654
+ const parent = this.findParentFromPath(data, primaryKey, childDataKey, transaction.path);
3655
+ let collection = parent ? parent[childDataKey] : data;
3656
+ switch (transaction.type) {
3657
+ case TransactionType.ADD:
3658
+ // if there is no parent this is ADD row at root level
3659
+ if (parent && !parent[childDataKey]) {
3660
+ parent[childDataKey] = collection = [];
3661
+ }
3662
+ collection.push(transaction.newValue);
3663
+ break;
3664
+ case TransactionType.UPDATE:
3665
+ const updateIndex = collection.findIndex(x => x[primaryKey] === transaction.id);
3666
+ if (updateIndex !== -1) {
3667
+ collection[updateIndex] = mergeObjects(cloneStrategy.clone(collection[updateIndex]), transaction.newValue);
3668
+ }
3669
+ break;
3670
+ case TransactionType.DELETE:
3671
+ if (deleteRows) {
3672
+ const deleteIndex = collection.findIndex(r => r[primaryKey] === transaction.id);
3673
+ if (deleteIndex !== -1) {
3674
+ collection.splice(deleteIndex, 1);
3675
+ }
3676
+ }
3677
+ break;
3678
+ }
3679
+ }
3680
+ else {
3681
+ // if there is no path this is ADD row in root. Push the newValue to data
3682
+ data.push(transaction.newValue);
3683
+ }
3684
+ }
3685
+ return data;
3686
+ }
3687
+ static parseValue(dataType, value) {
3688
+ if (dataType === GridColumnDataType.Number || dataType === GridColumnDataType.Currency || dataType === GridColumnDataType.Percent) {
3689
+ value = parseFloat(value);
3690
+ }
3691
+ return value;
3692
+ }
3693
+ static filterDataByExpressions(data, expressionsTree, grid) {
3694
+ if (expressionsTree.filteringOperands.length) {
3695
+ const state = { expressionsTree, strategy: FilteringStrategy.instance() };
3696
+ data = FilterUtil.filter(cloneArray(data), state, grid);
3697
+ }
3698
+ return data;
3699
+ }
3700
+ static findParentFromPath(data, primaryKey, childDataKey, path) {
3701
+ let collection = data;
3702
+ let result;
3703
+ for (const id of path) {
3704
+ result = collection && collection.find(x => x[primaryKey] === id);
3705
+ if (!result) {
3706
+ break;
3707
+ }
3708
+ collection = result[childDataKey];
3709
+ }
3710
+ return result;
3711
+ }
3712
+ }
3713
+
3714
+ /**
3715
+ * @hidden
3716
+ */
3717
+ class ExportUtilities {
3718
+ static getKeysFromData(data) {
3719
+ const length = data.length;
3720
+ if (length === 0) {
3721
+ return [];
3722
+ }
3723
+ const dataEntry = data[0];
3724
+ const dataEntryMiddle = data[Math.floor(length / 2)];
3725
+ const dataEntryLast = data[length - 1];
3726
+ const keys1 = Object.keys(dataEntry);
3727
+ const keys2 = Object.keys(dataEntryMiddle);
3728
+ const keys3 = Object.keys(dataEntryLast);
3729
+ const keys = new Set(keys1.concat(keys2).concat(keys3));
3730
+ return !ExportUtilities.isSpecialData(dataEntry) ? Array.from(keys) : ['Column 1'];
3731
+ }
3732
+ static saveBlobToFile(blob, fileName) {
3733
+ const doc = globalThis.document;
3734
+ const a = doc.createElement('a');
3735
+ const url = window.URL.createObjectURL(blob);
3736
+ a.download = fileName;
3737
+ a.href = url;
3738
+ doc.body.appendChild(a);
3739
+ a.click();
3740
+ doc.body.removeChild(a);
3741
+ window.URL.revokeObjectURL(url);
3742
+ }
3743
+ static stringToArrayBuffer(s) {
3744
+ const buf = new ArrayBuffer(s.length);
3745
+ const view = new Uint8Array(buf);
3746
+ for (let i = 0; i !== s.length; ++i) {
3747
+ view[i] = s.charCodeAt(i) & 0xFF;
3748
+ }
3749
+ return buf;
3750
+ }
3751
+ static isSpecialData(data) {
3752
+ return (typeof data === 'string' ||
3753
+ typeof data === 'number' ||
3754
+ data instanceof Date);
3755
+ }
3756
+ static hasValue(value) {
3757
+ return value !== undefined && value !== null;
3758
+ }
3759
+ static isNullOrWhitespaces(value) {
3760
+ return value === undefined || value === null || !value.trim();
3761
+ }
3762
+ static sanitizeValue(value) {
3763
+ if (!this.hasValue(value)) {
3764
+ return '';
3765
+ }
3766
+ else {
3767
+ const stringValue = String(value);
3768
+ return stringValue.replace(/&/g, '&amp;')
3769
+ .replace(/</g, '&lt;')
3770
+ .replace(/>/g, '&gt;')
3771
+ .replace(/"/g, '&quot;')
3772
+ .replace(/'/g, '&apos;')
3773
+ // Bug #14944 - Remove the not supported null character (\u0000, \x00)
3774
+ .replace(/\x00/g, '');
3775
+ }
3776
+ }
3777
+ }
3778
+
3757
3779
  class TreeGridFilteringStrategy extends BaseFilteringStrategy {
3758
3780
  constructor(hierarchicalFilterFields) {
3759
3781
  super();
@@ -3816,6 +3838,9 @@ class TreeGridFilteringStrategy extends BaseFilteringStrategy {
3816
3838
  const items = this.getHierarchicalFilterItems(data, column);
3817
3839
  return Promise.resolve(items);
3818
3840
  }
3841
+ getFilteredData(column, tree) {
3842
+ return DataUtil.filterDataByExpressions(column.grid.flatData, tree, column.grid);
3843
+ }
3819
3844
  getHierarchicalFilterItems(records, column, parent) {
3820
3845
  const pathParts = columnFieldPath(column.field);
3821
3846
  return records?.map(record => {
@@ -10239,6 +10264,9 @@ class IgxInputDirective {
10239
10264
  const elTag = this.nativeElement.tagName.toLowerCase();
10240
10265
  if (elTag === 'textarea') {
10241
10266
  this.isTextArea = true;
10267
+ if (this.nativeElement.getAttribute('rows') === null) {
10268
+ this.renderer.setAttribute(this.nativeElement, 'rows', '3');
10269
+ }
10242
10270
  }
10243
10271
  else {
10244
10272
  this.isInput = true;
@@ -21364,6 +21392,8 @@ class IgxTooltipDirective extends IgxToggleDirective {
21364
21392
  this._role = 'tooltip';
21365
21393
  this._destroy$ = new Subject();
21366
21394
  this._document = inject(DOCUMENT);
21395
+ this._renderer = inject(Renderer2);
21396
+ this._platformUtil = inject(PlatformUtil);
21367
21397
  this.onDocumentTouchStart = this.onDocumentTouchStart.bind(this);
21368
21398
  this.opening.pipe(takeUntil$1(this._destroy$)).subscribe(() => {
21369
21399
  this._document.addEventListener('touchstart', this.onDocumentTouchStart, { passive: true });
@@ -21371,7 +21401,12 @@ class IgxTooltipDirective extends IgxToggleDirective {
21371
21401
  this.closed.pipe(takeUntil$1(this._destroy$)).subscribe(() => {
21372
21402
  this._document.removeEventListener('touchstart', this.onDocumentTouchStart);
21373
21403
  });
21374
- this._createArrow();
21404
+ }
21405
+ /** @hidden */
21406
+ ngAfterViewInit() {
21407
+ if (this._platformUtil.isBrowser) {
21408
+ this._createArrow();
21409
+ }
21375
21410
  }
21376
21411
  /** @hidden */
21377
21412
  ngOnDestroy() {
@@ -21379,7 +21414,9 @@ class IgxTooltipDirective extends IgxToggleDirective {
21379
21414
  this._document.removeEventListener('touchstart', this.onDocumentTouchStart);
21380
21415
  this._destroy$.next(true);
21381
21416
  this._destroy$.complete();
21382
- this._removeArrow();
21417
+ if (this.arrow) {
21418
+ this._removeArrow();
21419
+ }
21383
21420
  }
21384
21421
  /**
21385
21422
  * @hidden
@@ -21395,35 +21432,48 @@ class IgxTooltipDirective extends IgxToggleDirective {
21395
21432
  }
21396
21433
  /**
21397
21434
  * If there is an animation in progress, this method will reset it to its initial state.
21398
- * Optional `force` parameter that ends the animation.
21435
+ * Allows hovering over the tooltip while an open/close animation is running.
21436
+ * Stops the animation and immediately shows the tooltip.
21399
21437
  *
21400
21438
  * @hidden
21401
- * @param force if set to `true`, the animation will be ended.
21402
21439
  */
21403
- stopAnimations(force = false) {
21440
+ stopAnimations() {
21404
21441
  const info = this.overlayService.getOverlayById(this._overlayId);
21405
21442
  if (!info)
21406
21443
  return;
21407
21444
  if (info.openAnimationPlayer) {
21408
21445
  info.openAnimationPlayer.reset();
21409
- if (force) {
21410
- info.openAnimationPlayer.finish();
21411
- info.openAnimationPlayer = null;
21412
- }
21413
21446
  }
21414
21447
  if (info.closeAnimationPlayer) {
21415
21448
  info.closeAnimationPlayer.reset();
21416
- if (force) {
21417
- info.closeAnimationPlayer.finish();
21418
- info.closeAnimationPlayer = null;
21419
- }
21449
+ }
21450
+ }
21451
+ /**
21452
+ * If there is a close animation in progress, this method will end it.
21453
+ * If there is no close animation in progress, this method will close the tooltip with no animation.
21454
+ *
21455
+ * @param overlaySettings settings to use for closing the tooltip
21456
+ * @hidden
21457
+ */
21458
+ forceClose(overlaySettings) {
21459
+ const info = this.overlayService.getOverlayById(this._overlayId);
21460
+ if (info && info.closeAnimationPlayer) {
21461
+ info.closeAnimationPlayer.finish();
21462
+ info.closeAnimationPlayer.reset();
21463
+ info.closeAnimationPlayer = null;
21464
+ }
21465
+ else if (!this.collapsed) {
21466
+ const animation = overlaySettings.positionStrategy.settings.closeAnimation;
21467
+ overlaySettings.positionStrategy.settings.closeAnimation = null;
21468
+ this.close();
21469
+ overlaySettings.positionStrategy.settings.closeAnimation = animation;
21420
21470
  }
21421
21471
  }
21422
21472
  _createArrow() {
21423
- this._arrowEl = document.createElement('span');
21424
- this._arrowEl.style.position = 'absolute';
21425
- this._arrowEl.setAttribute('data-arrow', 'true');
21426
- this.element.appendChild(this._arrowEl);
21473
+ this._arrowEl = this._renderer.createElement('span');
21474
+ this._renderer.setStyle(this._arrowEl, 'position', 'absolute');
21475
+ this._renderer.setAttribute(this._arrowEl, 'data-arrow', 'true');
21476
+ this._renderer.appendChild(this.element, this._arrowEl);
21427
21477
  }
21428
21478
  _removeArrow() {
21429
21479
  this._arrowEl.remove();
@@ -21825,7 +21875,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
21825
21875
  * ```
21826
21876
  */
21827
21877
  set hasArrow(value) {
21828
- if (this.target) {
21878
+ if (this.target && this.target.arrow) {
21829
21879
  this.target.arrow.style.display = value ? '' : 'none';
21830
21880
  }
21831
21881
  this._hasArrow = value;
@@ -22111,14 +22161,6 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
22111
22161
  this._hideOnInteraction();
22112
22162
  }
22113
22163
  }
22114
- /**
22115
- * @hidden
22116
- */
22117
- ngOnChanges(changes) {
22118
- if (changes['hasArrow']) {
22119
- this.target.arrow.style.display = changes['hasArrow'].currentValue ? '' : 'none';
22120
- }
22121
- }
22122
22164
  /**
22123
22165
  * @hidden
22124
22166
  */
@@ -22139,6 +22181,14 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
22139
22181
  });
22140
22182
  this.nativeElement.addEventListener('touchstart', this.onTouchStart = this.onTouchStart.bind(this), { passive: true });
22141
22183
  }
22184
+ /**
22185
+ * @hidden
22186
+ */
22187
+ ngAfterViewInit() {
22188
+ if (this.target && this.target.arrow) {
22189
+ this.target.arrow.style.display = this.hasArrow ? '' : 'none';
22190
+ }
22191
+ }
22142
22192
  /**
22143
22193
  * @hidden
22144
22194
  */
@@ -22246,8 +22296,6 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
22246
22296
  }
22247
22297
  /**
22248
22298
  * Used when a single tooltip is used for multiple targets.
22249
- * If the tooltip is shown for one target and the user interacts with another target,
22250
- * the tooltip is instantly hidden for the first target.
22251
22299
  */
22252
22300
  _checkTooltipForMultipleTargets() {
22253
22301
  if (!this.target.tooltipTarget) {
@@ -22259,8 +22307,10 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
22259
22307
  if (this.target.tooltipTarget.sticky) {
22260
22308
  this.target.tooltipTarget._removeCloseButtonFromTooltip();
22261
22309
  }
22310
+ // If the tooltip is shown for one target and the user interacts with another target,
22311
+ // the tooltip is instantly hidden for the first target.
22262
22312
  clearTimeout(this.target.timeoutId);
22263
- this.target.stopAnimations(true);
22313
+ this.target.forceClose(this._mergedOverlaySettings);
22264
22314
  this.target.tooltipTarget = this;
22265
22315
  this._isForceClosed = true;
22266
22316
  }
@@ -22326,7 +22376,7 @@ class IgxTooltipTargetDirective extends IgxToggleActionDirective {
22326
22376
  }
22327
22377
  }
22328
22378
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxTooltipTargetDirective, deps: [{ token: i0.ElementRef }, { token: IgxNavigationService, optional: true }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive }); }
22329
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.6", type: IgxTooltipTargetDirective, isStandalone: true, selector: "[igxTooltipTarget]", inputs: { showDelay: "showDelay", hideDelay: "hideDelay", hasArrow: "hasArrow", sticky: "sticky", closeTemplate: ["closeButtonTemplate", "closeTemplate"], positionSettings: "positionSettings", tooltipDisabled: ["tooltipDisabled", "tooltipDisabled", booleanAttribute], target: ["igxTooltipTarget", "target"], tooltip: "tooltip" }, outputs: { tooltipShow: "tooltipShow", tooltipHide: "tooltipHide" }, host: { listeners: { "click": "onClick()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, exportAs: ["tooltipTarget"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
22379
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.6", type: IgxTooltipTargetDirective, isStandalone: true, selector: "[igxTooltipTarget]", inputs: { showDelay: "showDelay", hideDelay: "hideDelay", hasArrow: "hasArrow", sticky: "sticky", closeTemplate: ["closeButtonTemplate", "closeTemplate"], positionSettings: "positionSettings", tooltipDisabled: ["tooltipDisabled", "tooltipDisabled", booleanAttribute], target: ["igxTooltipTarget", "target"], tooltip: "tooltip" }, outputs: { tooltipShow: "tooltipShow", tooltipHide: "tooltipHide" }, host: { listeners: { "click": "onClick()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, exportAs: ["tooltipTarget"], usesInheritance: true, ngImport: i0 }); }
22330
22380
  }
22331
22381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxTooltipTargetDirective, decorators: [{
22332
22382
  type: Directive,
@@ -53059,6 +53109,7 @@ class IgxExcelStyleClearFiltersComponent {
53059
53109
  */
53060
53110
  clearFilter() {
53061
53111
  this.esf.grid.filteringService.clearFilter(this.esf.column.field);
53112
+ this.esf.filterCleared.emit();
53062
53113
  this.selectAllFilterItems();
53063
53114
  }
53064
53115
  /**
@@ -57438,6 +57489,7 @@ class IgxExcelStyleSearchComponent {
57438
57489
  this.displayedListData = [];
57439
57490
  this.activeDescendant = '';
57440
57491
  this._id = `igx-excel-style-search-${NEXT_ID$a++}`;
57492
+ this._isLoading = true;
57441
57493
  this._focusedItem = null;
57442
57494
  this.destroy$ = new Subject();
57443
57495
  /**
@@ -57488,6 +57540,9 @@ class IgxExcelStyleSearchComponent {
57488
57540
  this.searchInput.nativeElement.focus();
57489
57541
  });
57490
57542
  });
57543
+ esf.filterCleared.pipe(takeUntil(this.destroy$)).subscribe(() => {
57544
+ this.clearInput();
57545
+ });
57491
57546
  }
57492
57547
  ngAfterViewInit() {
57493
57548
  if (this.platform.isBrowser) {
@@ -57785,18 +57840,37 @@ class IgxExcelStyleSearchComponent {
57785
57840
  blanksItem = selectedItems[blanksItemIndex];
57786
57841
  selectedItems.splice(blanksItemIndex, 1);
57787
57842
  }
57843
+ let searchVal;
57844
+ switch (this.esf.column.dataType) {
57845
+ case GridColumnDataType.Date:
57846
+ searchVal = new Set(selectedItems.map(d => d.value.toDateString()));
57847
+ break;
57848
+ case GridColumnDataType.DateTime:
57849
+ searchVal = new Set(selectedItems.map(d => d.value.toISOString()));
57850
+ break;
57851
+ case GridColumnDataType.Time:
57852
+ searchVal = new Set(selectedItems.map(e => e.value.toLocaleTimeString()));
57853
+ break;
57854
+ case GridColumnDataType.String:
57855
+ if (this.esf.column.filteringIgnoreCase) {
57856
+ const selectedValues = new Set(selectedItems.map(item => item.value.toLowerCase()));
57857
+ searchVal = new Set();
57858
+ this.esf.grid.data.forEach(item => {
57859
+ if (typeof item[this.esf.column.field] === "string" && selectedValues.has(item[this.esf.column.field]?.toLowerCase())) {
57860
+ searchVal.add(item[this.esf.column.field]);
57861
+ }
57862
+ });
57863
+ break;
57864
+ }
57865
+ default:
57866
+ searchVal = new Set(selectedItems.map(e => e.value));
57867
+ }
57788
57868
  filterTree.filteringOperands.push({
57789
57869
  condition: this.createCondition('in'),
57790
57870
  conditionName: 'in',
57791
57871
  fieldName: this.esf.column.field,
57792
57872
  ignoreCase: this.esf.column.filteringIgnoreCase,
57793
- searchVal: new Set(this.esf.column.dataType === GridColumnDataType.Date ?
57794
- selectedItems.map(d => d.value.toDateString()) :
57795
- this.esf.column.dataType === GridColumnDataType.DateTime ?
57796
- selectedItems.map(d => d.value.toISOString()) :
57797
- this.esf.column.dataType === GridColumnDataType.Time ?
57798
- selectedItems.map(e => e.value.toLocaleTimeString()) :
57799
- selectedItems.map(e => e.value))
57873
+ searchVal
57800
57874
  });
57801
57875
  if (blanksItem) {
57802
57876
  filterTree.filteringOperands.push({
@@ -58184,25 +58258,13 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58184
58258
  * Sets the column.
58185
58259
  */
58186
58260
  set column(value) {
58187
- this._column = value;
58188
- this.listData = new Array();
58189
- this.columnChange.emit(this._column);
58190
- this.subscriptions?.unsubscribe();
58191
- if (this._column) {
58192
- this.grid.filteringService.registerSVGIcons();
58193
- this.init();
58194
- this.sortingChanged.emit();
58195
- this.subscriptions = this.grid.columnPin.subscribe(() => {
58196
- requestAnimationFrame(() => {
58197
- if (!this.cdr.destroyed) {
58198
- this.cdr.detectChanges();
58199
- }
58200
- });
58201
- });
58202
- this.subscriptions.add(this.grid.columnVisibilityChanged.subscribe(() => this.detectChanges()));
58203
- this.subscriptions.add(this.grid.sortingExpressionsChange.subscribe(() => this.sortingChanged.emit()));
58204
- this.subscriptions.add(this.grid.filteringExpressionsTreeChange.subscribe(() => this.init()));
58205
- this.subscriptions.add(this.grid.columnMovingEnd.subscribe(() => this.cdr.markForCheck()));
58261
+ if (value) {
58262
+ this._column = value;
58263
+ this.columnChange.emit(this._column);
58264
+ if (this.inline) {
58265
+ // In case external filtering
58266
+ this.populateData();
58267
+ }
58206
58268
  }
58207
58269
  }
58208
58270
  /**
@@ -58301,6 +58363,10 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58301
58363
  * @hidden @internal
58302
58364
  */
58303
58365
  this.listDataLoaded = new EventEmitter();
58366
+ /**
58367
+ * @hidden @internal
58368
+ */
58369
+ this.filterCleared = new EventEmitter();
58304
58370
  /**
58305
58371
  * @hidden @internal
58306
58372
  */
@@ -58342,6 +58408,14 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58342
58408
  this.inline = false;
58343
58409
  this.column = column;
58344
58410
  this.overlayService = overlayService;
58411
+ }
58412
+ /**
58413
+ * @hidden @internal
58414
+ */
58415
+ populateData() {
58416
+ if (this.column) {
58417
+ this.afterColumnChange();
58418
+ }
58345
58419
  if (this._originalDisplay) {
58346
58420
  this.element.nativeElement.style.display = this._originalDisplay;
58347
58421
  }
@@ -58424,6 +58498,30 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58424
58498
  get size() {
58425
58499
  return this.computedStyles?.getPropertyValue('--component-size');
58426
58500
  }
58501
+ afterColumnChange() {
58502
+ this.listData = new Array();
58503
+ this.subscriptions?.unsubscribe();
58504
+ if (this._column) {
58505
+ this.grid.filteringService.registerSVGIcons();
58506
+ this.init();
58507
+ this.sortingChanged.emit();
58508
+ this.subscriptions = this.grid.columnPin.subscribe(() => {
58509
+ requestAnimationFrame(() => {
58510
+ if (!this.cdr.destroyed) {
58511
+ this.cdr.detectChanges();
58512
+ }
58513
+ });
58514
+ });
58515
+ this.subscriptions.add(this.grid.columnVisibilityChanged.subscribe(() => this.detectChanges()));
58516
+ this.subscriptions.add(this.grid.sortingExpressionsChange.subscribe(() => this.sortingChanged.emit()));
58517
+ this.subscriptions.add(this.grid.filteringExpressionsTreeChange.subscribe(() => {
58518
+ this.expressionsList = new Array();
58519
+ generateExpressionsList(this.column.filteringExpressionsTree, this.grid.filteringLogic, this.expressionsList);
58520
+ this.cdr.detectChanges();
58521
+ }));
58522
+ this.subscriptions.add(this.grid.columnMovingEnd.subscribe(() => this.cdr.markForCheck()));
58523
+ }
58524
+ }
58427
58525
  init() {
58428
58526
  this.expressionsList = new Array();
58429
58527
  generateExpressionsList(this.column.filteringExpressionsTree, this.grid.filteringLogic, this.expressionsList);
@@ -58494,12 +58592,6 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58494
58592
  renderValues() {
58495
58593
  this.filterValues = this.generateFilterValues();
58496
58594
  this.generateListData();
58497
- this.expressionsList.forEach(expr => {
58498
- if (this.column.dataType === GridColumnDataType.String && this.column.filteringIgnoreCase
58499
- && expr.expression.searchVal && expr.expression.searchVal instanceof Set) {
58500
- this.modifyExpression(expr);
58501
- }
58502
- });
58503
58595
  }
58504
58596
  generateFilterValues() {
58505
58597
  const formatValue = (value) => {
@@ -58525,14 +58617,6 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58525
58617
  const filterValues = new Set(this.expressionsList.reduce(processExpression, []));
58526
58618
  return filterValues;
58527
58619
  }
58528
- modifyExpression(expr) {
58529
- const lowerCaseFilterValues = new Set(Array.from(expr.expression.searchVal).map((value) => value.toLowerCase()));
58530
- this.grid.data.forEach(item => {
58531
- if (typeof item[this.column.field] === "string" && lowerCaseFilterValues.has(item[this.column.field]?.toLowerCase())) {
58532
- expr.expression.searchVal.add(item[this.column.field]);
58533
- }
58534
- });
58535
- }
58536
58620
  generateListData() {
58537
58621
  this.listData = new Array();
58538
58622
  const shouldUpdateSelection = this.areExpressionsSelectable();
@@ -58722,7 +58806,7 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
58722
58806
  return value;
58723
58807
  }
58724
58808
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxGridExcelStyleFilteringComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: PlatformUtil }, { token: DOCUMENT }, { token: IGX_GRID_BASE, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
58725
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: IgxGridExcelStyleFilteringComponent, isStandalone: true, selector: "igx-grid-excel-style-filtering", inputs: { column: "column", minHeight: "minHeight", maxHeight: "maxHeight" }, outputs: { loadingStart: "loadingStart", loadingEnd: "loadingEnd", initialized: "initialized", sortingChanged: "sortingChanged", columnChange: "columnChange", listDataLoaded: "listDataLoaded" }, host: { properties: { "class.igx-excel-filter": "this.defaultClass", "class.igx-excel-filter__sizing": "this.shouldApplySizes", "class.igx-excel-filter--inline": "this.inline", "style.max-height": "this.maxHeight" } }, providers: [{ provide: BaseFilteringComponent, useExisting: forwardRef(() => IgxGridExcelStyleFilteringComponent) }], queries: [{ propertyName: "excelColumnOperationsDirective", first: true, predicate: IgxExcelStyleColumnOperationsTemplateDirective, descendants: true, read: IgxExcelStyleColumnOperationsTemplateDirective }, { propertyName: "excelFilterOperationsDirective", first: true, predicate: IgxExcelStyleFilterOperationsTemplateDirective, descendants: true, read: IgxExcelStyleFilterOperationsTemplateDirective }], viewQueries: [{ propertyName: "mainDropdown", first: true, predicate: ["mainDropdown"], descendants: true, read: ElementRef }, { propertyName: "defaultExcelColumnOperations", first: true, predicate: ["defaultExcelColumnOperations"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultExcelFilterOperations", first: true, predicate: ["defaultExcelFilterOperations"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__sizing': shouldApplySizes,\n 'igx-excel-filter__menu--cosy': size === '2',\n 'igx-excel-filter__menu--compact': size === '1'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n role=\"menu\">\n\n @if (this.excelColumnOperationsDirective) {\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n } @else {\n <igx-excel-style-header\n [showHiding]=\"size !== '3' && !column?.disableHiding\"\n [showPinning]=\"size !== '3' && !column?.disablePinning\"\n [showSelecting]=\"size !== '3' && columnSelectable()\"\n >\n </igx-excel-style-header>\n @if (column?.sortable) {\n <igx-excel-style-sorting>\n </igx-excel-style-sorting>\n }\n @if (grid?.moving) {\n <igx-excel-style-moving></igx-excel-style-moving>\n }\n @if (!column?.disablePinning && size === '3') {\n <igx-excel-style-pinning></igx-excel-style-pinning>\n }\n @if (!column?.disableHiding && size === '3') {\n <igx-excel-style-hiding></igx-excel-style-hiding>\n }\n @if (columnSelectable() && size === '3') {\n <igx-excel-style-selecting></igx-excel-style-selecting>\n }\n }\n\n @if (this.excelFilterOperationsDirective) {\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n } @else {\n <igx-excel-style-clear-filters></igx-excel-style-clear-filters>\n <igx-excel-style-conditional-filter></igx-excel-style-conditional-filter>\n <igx-excel-style-search></igx-excel-style-search>\n }\n</article>\n", dependencies: [{ kind: "component", type: IgxExcelStyleHeaderComponent, selector: "igx-excel-style-header", inputs: ["showPinning", "showSelecting", "showHiding"] }, { kind: "component", type: IgxExcelStyleSortingComponent, selector: "igx-excel-style-sorting" }, { kind: "component", type: IgxExcelStyleMovingComponent, selector: "igx-excel-style-moving" }, { kind: "component", type: IgxExcelStylePinningComponent, selector: "igx-excel-style-pinning" }, { kind: "component", type: IgxExcelStyleHidingComponent, selector: "igx-excel-style-hiding" }, { kind: "component", type: IgxExcelStyleSelectingComponent, selector: "igx-excel-style-selecting" }, { kind: "component", type: IgxExcelStyleClearFiltersComponent, selector: "igx-excel-style-clear-filters" }, { kind: "component", type: IgxExcelStyleConditionalFilterComponent, selector: "igx-excel-style-conditional-filter" }, { kind: "component", type: IgxExcelStyleSearchComponent, selector: "igx-excel-style-search", inputs: ["id"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58809
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: IgxGridExcelStyleFilteringComponent, isStandalone: true, selector: "igx-grid-excel-style-filtering", inputs: { column: "column", minHeight: "minHeight", maxHeight: "maxHeight" }, outputs: { loadingStart: "loadingStart", loadingEnd: "loadingEnd", initialized: "initialized", sortingChanged: "sortingChanged", columnChange: "columnChange", listDataLoaded: "listDataLoaded", filterCleared: "filterCleared" }, host: { properties: { "class.igx-excel-filter": "this.defaultClass", "class.igx-excel-filter__sizing": "this.shouldApplySizes", "class.igx-excel-filter--inline": "this.inline", "style.max-height": "this.maxHeight" } }, providers: [{ provide: BaseFilteringComponent, useExisting: forwardRef(() => IgxGridExcelStyleFilteringComponent) }], queries: [{ propertyName: "excelColumnOperationsDirective", first: true, predicate: IgxExcelStyleColumnOperationsTemplateDirective, descendants: true, read: IgxExcelStyleColumnOperationsTemplateDirective }, { propertyName: "excelFilterOperationsDirective", first: true, predicate: IgxExcelStyleFilterOperationsTemplateDirective, descendants: true, read: IgxExcelStyleFilterOperationsTemplateDirective }], viewQueries: [{ propertyName: "mainDropdown", first: true, predicate: ["mainDropdown"], descendants: true, read: ElementRef }, { propertyName: "defaultExcelColumnOperations", first: true, predicate: ["defaultExcelColumnOperations"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultExcelFilterOperations", first: true, predicate: ["defaultExcelFilterOperations"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__sizing': shouldApplySizes,\n 'igx-excel-filter__menu--cosy': size === '2',\n 'igx-excel-filter__menu--compact': size === '1'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n role=\"menu\">\n\n @if (this.excelColumnOperationsDirective) {\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n } @else {\n <igx-excel-style-header\n [showHiding]=\"size !== '3' && !column?.disableHiding\"\n [showPinning]=\"size !== '3' && !column?.disablePinning\"\n [showSelecting]=\"size !== '3' && columnSelectable()\"\n >\n </igx-excel-style-header>\n @if (column?.sortable) {\n <igx-excel-style-sorting>\n </igx-excel-style-sorting>\n }\n @if (grid?.moving) {\n <igx-excel-style-moving></igx-excel-style-moving>\n }\n @if (!column?.disablePinning && size === '3') {\n <igx-excel-style-pinning></igx-excel-style-pinning>\n }\n @if (!column?.disableHiding && size === '3') {\n <igx-excel-style-hiding></igx-excel-style-hiding>\n }\n @if (columnSelectable() && size === '3') {\n <igx-excel-style-selecting></igx-excel-style-selecting>\n }\n }\n\n @if (this.excelFilterOperationsDirective) {\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n } @else {\n <igx-excel-style-clear-filters></igx-excel-style-clear-filters>\n <igx-excel-style-conditional-filter></igx-excel-style-conditional-filter>\n <igx-excel-style-search></igx-excel-style-search>\n }\n</article>\n", dependencies: [{ kind: "component", type: IgxExcelStyleHeaderComponent, selector: "igx-excel-style-header", inputs: ["showPinning", "showSelecting", "showHiding"] }, { kind: "component", type: IgxExcelStyleSortingComponent, selector: "igx-excel-style-sorting" }, { kind: "component", type: IgxExcelStyleMovingComponent, selector: "igx-excel-style-moving" }, { kind: "component", type: IgxExcelStylePinningComponent, selector: "igx-excel-style-pinning" }, { kind: "component", type: IgxExcelStyleHidingComponent, selector: "igx-excel-style-hiding" }, { kind: "component", type: IgxExcelStyleSelectingComponent, selector: "igx-excel-style-selecting" }, { kind: "component", type: IgxExcelStyleClearFiltersComponent, selector: "igx-excel-style-clear-filters" }, { kind: "component", type: IgxExcelStyleConditionalFilterComponent, selector: "igx-excel-style-conditional-filter" }, { kind: "component", type: IgxExcelStyleSearchComponent, selector: "igx-excel-style-search", inputs: ["id"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58726
58810
  }
58727
58811
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxGridExcelStyleFilteringComponent, decorators: [{
58728
58812
  type: Component,
@@ -58758,6 +58842,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
58758
58842
  type: Output
58759
58843
  }], listDataLoaded: [{
58760
58844
  type: Output
58845
+ }], filterCleared: [{
58846
+ type: Output
58761
58847
  }], mainDropdown: [{
58762
58848
  type: ViewChild,
58763
58849
  args: ['mainDropdown', { read: ElementRef }]
@@ -59993,6 +60079,11 @@ class IgxFilteringService {
59993
60079
  }
59994
60080
  this.lastActiveNode = this.grid.navigation.activeNode;
59995
60081
  });
60082
+ this._overlayService.opened.pipe(first$2(overlay => overlay.id === id), takeUntil(this.destroy$)).subscribe((event) => {
60083
+ if (event.componentRef) {
60084
+ event.componentRef.instance.populateData();
60085
+ }
60086
+ });
59996
60087
  this._overlayService.closed
59997
60088
  .pipe(first$2(overlay => overlay.id === id), takeUntil(this.destroy$))
59998
60089
  .subscribe(() => {
@@ -68640,6 +68731,7 @@ class IgxGridBaseDirective {
68640
68731
  options.outlet = this.outlet;
68641
68732
  if (this.excelStyleFilteringComponent) {
68642
68733
  this.excelStyleFilteringComponent.initialize(column, this.overlayService);
68734
+ this.excelStyleFilteringComponent.populateData();
68643
68735
  const id = this.overlayService.attach(this.excelStyleFilteringComponent.element, options);
68644
68736
  this.excelStyleFilteringComponent.overlayComponentId = id;
68645
68737
  return id;
@@ -77935,7 +78027,7 @@ class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
77935
78027
  return this.grid.dimensionDataColumns ? this.grid.dimensionDataColumns.find((col) => col.field === dim.memberName) : null;
77936
78028
  }
77937
78029
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxPivotHeaderRowComponent, deps: [{ token: IGX_GRID_BASE }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
77938
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: IgxPivotHeaderRowComponent, isStandalone: true, selector: "igx-pivot-header-row", host: { properties: { "attr.aria-activedescendant": "this.activeDescendant" } }, viewQueries: [{ propertyName: "esf", first: true, predicate: ["esf"], descendants: true }, { propertyName: "filterArea", first: true, predicate: ["filterAreaHidden"], descendants: true }, { propertyName: "filtersButton", first: true, predicate: ["filterIcon"], descendants: true }, { propertyName: "dropdownChips", first: true, predicate: ["dropdownChips"], descendants: true }, { propertyName: "pivotFilterContainer", first: true, predicate: ["pivotFilterContainer"], descendants: true }, { propertyName: "pivotRowContainer", first: true, predicate: ["pivotRowContainer"], descendants: true }, { propertyName: "notificationChips", predicate: ["notifyChip"], descendants: true }, { propertyName: "headerContainers", predicate: ["headerVirtualContainer"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "rowDimensionHeaders", predicate: ["rowDimensionHeaders"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"igx-grid-thead__wrapper igx-grid-thead__wrapper--pivot\" role=\"row\" [style.width.px]=\"width\">\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n <div class='igx-grid__tr-pivot--filter-container'>\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotFilterContainer\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--filter\" [style.min-width.px]=\"grid.pivotRowWidths - 1\"\n [style.max-width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, filterArea)\"\n igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Filter area -->\n <igx-chips-area #filterArea droppable='true'>\n @if (grid.filterDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_filter_drop_area}}</span>\n }\n @for (filter of this.filterAreaDimensions; track filter; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n <igx-chip [id]=\"filter.memberName\" [draggable]=\"true\" [data]=\"{ pivotArea: 'filter' }\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\" (dragOver)=\"onDimDragOver($event, 2)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, filterArea, 2)\"\n (moveStart)='onDimDragStart($event, filterArea)' (moveEnd)='onDimDragEnd()'>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, filter)'>\n </igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, filterArea, 2)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_filter_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n @if (isFiltersButton && grid.filterDimensions.length !== 0) {\n <div class=\"igx-grid__pivot-filter-toggle\">\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n #filterIcon\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFiltersAreaDropdownClick($event)'>\n </igx-icon>\n <igx-badge value=\"{{this.filterDropdownDimensions.size}}\"></igx-badge>\n </div>\n }\n </div>\n }\n <div class='igx-grid__tr-pivot--drop-row-area'>\n @if (grid.pivotUI.showConfiguration && grid.pivotUI.showRowHeaders) {\n <div #pivotRowContainer [style.width.px]=\"grid.pivotRowWidths - 1\"\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--small-row-area\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\"\n (dropped)=\"onDimDrop($event, rowArea, 0)\">\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n\n <div class=\"igx-grid__tr-pivot-group\">\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotColumnContainer class=\"igx-grid__tr-pivot\"\n (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop (igxDragLeave)=\"onAreaDragLeave($event, colArea)\">\n <!-- Columns area -->\n <igx-chips-area #colArea droppable='true'>\n @if (grid.columnDimensions.length === 0) {\n <span id='empty' (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>\n {{grid.resourceStrings.igx_grid_pivot_empty_column_drop_area}}</span>\n }\n @for (col of grid.columnDimensions; track col.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"col.memberName\" [data]=\"{ pivotArea: 'column' }\"\n [removable]=\"true\" (remove)=\"columnRemoved($event)\" (dragOver)=\"onDimDragOver($event, 1)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, colArea, 1)\"\n (moveStart)='onDimDragStart($event, colArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, col)\">\n <igx-icon\n family=\"default\"\n name=\"view_column\"\n igxPrefix>\n </igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, col)'>\n </igx-icon>\n {{col.displayName || col.memberName}}\n @if (col.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"col.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, colArea, 1)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_column_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotValueContainer class=\"igx-grid__tr-pivot\"\n (pointerdown)=\"$event.preventDefault()\" (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, valueArea)\">\n <!-- Value area -->\n <igx-chips-area #valueArea droppable='true'>\n @if (grid.values.length === 0) {\n <span id='empty' (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_value_drop_area}}</span>\n }\n @for (value of grid.values; track value.member; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n <igx-chip #currChip [draggable]=\"true\" [id]=\"value.displayName || value.member\" [data]=\"{ pivotArea: 'value' }\"\n [removable]=\"true\" (remove)=\"valueRemoved($event)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragOver)=\"onDimDragOver($event)\"\n (dragDrop)=\"onValueDrop($event, valueArea)\">\n <div class=\"igx-grid__tr-pivot-toggle-icons\" igxPrefix\n (click)='onSummaryClick($event, value, dropdown, currChip)'\n (pointerdown)='$event.stopPropagation()' [igxDropDownItemNavigation]=\"dropdown\">\n <igx-icon family=\"default\" name=\"functions\"></igx-icon>\n <igx-icon family=\"default\" name=\"arrow_drop_down\"></igx-icon>\n </div>\n <ng-container *ngTemplateOutlet=\"grid.valueChipTemplate ? grid.valueChipTemplate : valueChipDefaultTemplate; context: { $implicit: value }\"></ng-container>\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onValueDrop($event, valueArea)\" #notifyValueChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_value_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n </div>\n <div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n @if (!grid.pivotUI.showRowHeaders || grid.rowDimensions.length === 0) {\n <div #pivotContainer class=\"igx-grid__tr-pivot igx-grid__tr-pivot--row-area\"\n [style.width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\" igxDrop\n (dropped)=\"onDimDrop($event, rowArea, 0)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Row area -->\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.pivotUI.showConfiguration || grid.rowDimensions.length === 0) {\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showRowHeaders && grid.rowDimensions.length > 0) {\n <div class=\"igx-grid__tr igx-grid__tr-header-row\" [style.width.px]=\"grid.pivotRowWidths - 1\">\n @for (dim of grid.visibleRowDimensions; track dim; let colIndex = $index; let isLast = $last) {\n @if (getRowDimensionColumn(dim); as dimCol) {\n <igx-pivot-row-header-group #rowDimensionHeaders\n [ngClass]=\"dimCol.headerGroupClasses\"\n [ngStyle]=\"dimCol.headerGroupStyles | igxHeaderGroupStyle:dimCol:grid.pipeTrigger\"\n [style.min-width]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [style.flex-basis]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [column]=\"dimCol\"\n [rootDimension]=\"grid.visibleRowDimensions[colIndex]\"\n [dimWidth]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [rowIndex]=\"-1\" >\n </igx-pivot-row-header-group>\n }\n }\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n <div class=\"igx-grid-thead--virtualizationWrapper\" [style.max-height.px]=\"maxContainerHeight\" (click)=\"grid.navigation.focusOutRowHeader($event)\">\n @for (dimLevelColumns of columnDimensionsByLevel; track $index; let i = $index) {\n <div class=\"igx-grid-thead__group igx-grid-thead--virtualizationContainer\" [style.height.px]=\"totalDepth > 1 ? grid.rowHeight : undefined\" [style.width.px]=\"grid.unpinnedWidth\">\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"dimLevelColumns\" [igxGridForOfUniqueSizeCache]=\"true\" [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\" [igxForScrollOrientation]=\"'horizontal'\">\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [style.height.px]=\"totalDepth > 1 ? calcHeight(column, i) : undefined\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n [class.igx-grid__tr-pivot--columnDimensionLeaf]=\"isDuplicateOfExistingParent(column, i)\"\n [class.igx-grid__tr-pivot--columnMultiRowSpan]=\"isMultiRow(column, i)\"\n >\n </igx-grid-header-group>\n </ng-template>\n </div>\n }\n </div>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n </div>\n</div>\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\">\n</div>\n\n<igx-drop-down #dropdown (selectionChanging)='onAggregationChange($event)'>\n @for (item of aggregateList; track item.key) {\n <igx-drop-down-item [selected]='isSelected(item)' [value]='item'>\n {{ item.label }}\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<div [hidden]='true'>\n <igx-grid-excel-style-filtering [maxHeight]='grid.excelStyleFilterMaxHeight' [minHeight]='grid.excelStyleFilterMinHeight' #esf>\n <div igxExcelStyleColumnOperations>\n <igx-chips-area #dropdownChips>\n @for (filter of this.filterDropdownDimensions; track filter) {\n <igx-chip [id]=\"filter.memberName\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\"\n (chipClick)='onFiltersSelectionChanged($event)' [selectable]='true' [selected]='filter === this.filterDropdownDimensions.values().next().value'>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n<div style=\"visibility: hidden; position: absolute; top: -10000px\">\n <igx-chips-area #filterAreaHidden droppable='true'>\n @for (filter of grid.filterDimensions; track filter) {\n <igx-chip\n [id]=\"filter.memberName\"\n [draggable]=\"true\"\n [removable]=\"true\"\n (remove)=\"filterRemoved($event)\">\n <igx-icon family=\"default\" name=\"filter_list\" igxPrefix></igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n</div>\n\n<ng-template #valueChipDefaultTemplate let-value>\n {{value.aggregate.key}}({{value.displayName || value.member}})\n</ng-template>\n", dependencies: [{ kind: "directive", type: IgxDropDirective, selector: "[igxDrop]", inputs: ["igxDrop", "dropChannel", "dropStrategy"], outputs: ["enter", "over", "leave", "dropped"], exportAs: ["drop"] }, { kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "component", type: IgxBadgeComponent, selector: "igx-badge", inputs: ["id", "type", "value", "icon", "iconSet", "shape", "outlined"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxGridHeaderGroupComponent, selector: "igx-grid-header-group", inputs: ["column"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy", "role"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "component", type: IgxGridExcelStyleFilteringComponent, selector: "igx-grid-excel-style-filtering", inputs: ["column", "minHeight", "maxHeight"], outputs: ["loadingStart", "loadingEnd", "initialized", "sortingChanged", "columnChange", "listDataLoaded"] }, { kind: "directive", type: IgxExcelStyleColumnOperationsTemplateDirective, selector: "igx-excel-style-column-operations,[igxExcelStyleColumnOperations]" }, { kind: "directive", type: IgxExcelStyleFilterOperationsTemplateDirective, selector: "igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]" }, { kind: "component", type: IgxExcelStyleSearchComponent, selector: "igx-excel-style-search", inputs: ["id"] }, { kind: "component", type: IgxPivotRowHeaderGroupComponent, selector: "igx-pivot-row-header-group", inputs: ["rowIndex", "dimWidth", "rootDimension"] }, { kind: "pipe", type: IgxHeaderGroupStylePipe, name: "igxHeaderGroupStyle" }, { kind: "pipe", type: IgxGridTopLevelColumns, name: "igxTopLevel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78030
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: IgxPivotHeaderRowComponent, isStandalone: true, selector: "igx-pivot-header-row", host: { properties: { "attr.aria-activedescendant": "this.activeDescendant" } }, viewQueries: [{ propertyName: "esf", first: true, predicate: ["esf"], descendants: true }, { propertyName: "filterArea", first: true, predicate: ["filterAreaHidden"], descendants: true }, { propertyName: "filtersButton", first: true, predicate: ["filterIcon"], descendants: true }, { propertyName: "dropdownChips", first: true, predicate: ["dropdownChips"], descendants: true }, { propertyName: "pivotFilterContainer", first: true, predicate: ["pivotFilterContainer"], descendants: true }, { propertyName: "pivotRowContainer", first: true, predicate: ["pivotRowContainer"], descendants: true }, { propertyName: "notificationChips", predicate: ["notifyChip"], descendants: true }, { propertyName: "headerContainers", predicate: ["headerVirtualContainer"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "rowDimensionHeaders", predicate: ["rowDimensionHeaders"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"igx-grid-thead__wrapper igx-grid-thead__wrapper--pivot\" role=\"row\" [style.width.px]=\"width\">\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n <div class='igx-grid__tr-pivot--filter-container'>\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotFilterContainer\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--filter\" [style.min-width.px]=\"grid.pivotRowWidths - 1\"\n [style.max-width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, filterArea)\"\n igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Filter area -->\n <igx-chips-area #filterArea droppable='true'>\n @if (grid.filterDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_filter_drop_area}}</span>\n }\n @for (filter of this.filterAreaDimensions; track filter; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n <igx-chip [id]=\"filter.memberName\" [draggable]=\"true\" [data]=\"{ pivotArea: 'filter' }\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\" (dragOver)=\"onDimDragOver($event, 2)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, filterArea, 2)\"\n (moveStart)='onDimDragStart($event, filterArea)' (moveEnd)='onDimDragEnd()'>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, filter)'>\n </igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, filterArea, 2)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_filter_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n @if (isFiltersButton && grid.filterDimensions.length !== 0) {\n <div class=\"igx-grid__pivot-filter-toggle\">\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n #filterIcon\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFiltersAreaDropdownClick($event)'>\n </igx-icon>\n <igx-badge value=\"{{this.filterDropdownDimensions.size}}\"></igx-badge>\n </div>\n }\n </div>\n }\n <div class='igx-grid__tr-pivot--drop-row-area'>\n @if (grid.pivotUI.showConfiguration && grid.pivotUI.showRowHeaders) {\n <div #pivotRowContainer [style.width.px]=\"grid.pivotRowWidths - 1\"\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--small-row-area\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\"\n (dropped)=\"onDimDrop($event, rowArea, 0)\">\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n\n <div class=\"igx-grid__tr-pivot-group\">\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotColumnContainer class=\"igx-grid__tr-pivot\"\n (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop (igxDragLeave)=\"onAreaDragLeave($event, colArea)\">\n <!-- Columns area -->\n <igx-chips-area #colArea droppable='true'>\n @if (grid.columnDimensions.length === 0) {\n <span id='empty' (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>\n {{grid.resourceStrings.igx_grid_pivot_empty_column_drop_area}}</span>\n }\n @for (col of grid.columnDimensions; track col.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"col.memberName\" [data]=\"{ pivotArea: 'column' }\"\n [removable]=\"true\" (remove)=\"columnRemoved($event)\" (dragOver)=\"onDimDragOver($event, 1)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, colArea, 1)\"\n (moveStart)='onDimDragStart($event, colArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, col)\">\n <igx-icon\n family=\"default\"\n name=\"view_column\"\n igxPrefix>\n </igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, col)'>\n </igx-icon>\n {{col.displayName || col.memberName}}\n @if (col.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"col.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, colArea, 1)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_column_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotValueContainer class=\"igx-grid__tr-pivot\"\n (pointerdown)=\"$event.preventDefault()\" (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, valueArea)\">\n <!-- Value area -->\n <igx-chips-area #valueArea droppable='true'>\n @if (grid.values.length === 0) {\n <span id='empty' (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_value_drop_area}}</span>\n }\n @for (value of grid.values; track value.member; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n <igx-chip #currChip [draggable]=\"true\" [id]=\"value.displayName || value.member\" [data]=\"{ pivotArea: 'value' }\"\n [removable]=\"true\" (remove)=\"valueRemoved($event)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragOver)=\"onDimDragOver($event)\"\n (dragDrop)=\"onValueDrop($event, valueArea)\">\n <div class=\"igx-grid__tr-pivot-toggle-icons\" igxPrefix\n (click)='onSummaryClick($event, value, dropdown, currChip)'\n (pointerdown)='$event.stopPropagation()' [igxDropDownItemNavigation]=\"dropdown\">\n <igx-icon family=\"default\" name=\"functions\"></igx-icon>\n <igx-icon family=\"default\" name=\"arrow_drop_down\"></igx-icon>\n </div>\n <ng-container *ngTemplateOutlet=\"grid.valueChipTemplate ? grid.valueChipTemplate : valueChipDefaultTemplate; context: { $implicit: value }\"></ng-container>\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onValueDrop($event, valueArea)\" #notifyValueChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_value_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n </div>\n <div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n @if (!grid.pivotUI.showRowHeaders || grid.rowDimensions.length === 0) {\n <div #pivotContainer class=\"igx-grid__tr-pivot igx-grid__tr-pivot--row-area\"\n [style.width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\" igxDrop\n (dropped)=\"onDimDrop($event, rowArea, 0)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Row area -->\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.pivotUI.showConfiguration || grid.rowDimensions.length === 0) {\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showRowHeaders && grid.rowDimensions.length > 0) {\n <div class=\"igx-grid__tr igx-grid__tr-header-row\" [style.width.px]=\"grid.pivotRowWidths - 1\">\n @for (dim of grid.visibleRowDimensions; track dim; let colIndex = $index; let isLast = $last) {\n @if (getRowDimensionColumn(dim); as dimCol) {\n <igx-pivot-row-header-group #rowDimensionHeaders\n [ngClass]=\"dimCol.headerGroupClasses\"\n [ngStyle]=\"dimCol.headerGroupStyles | igxHeaderGroupStyle:dimCol:grid.pipeTrigger\"\n [style.min-width]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [style.flex-basis]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [column]=\"dimCol\"\n [rootDimension]=\"grid.visibleRowDimensions[colIndex]\"\n [dimWidth]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [rowIndex]=\"-1\" >\n </igx-pivot-row-header-group>\n }\n }\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n <div class=\"igx-grid-thead--virtualizationWrapper\" [style.max-height.px]=\"maxContainerHeight\" (click)=\"grid.navigation.focusOutRowHeader($event)\">\n @for (dimLevelColumns of columnDimensionsByLevel; track $index; let i = $index) {\n <div class=\"igx-grid-thead__group igx-grid-thead--virtualizationContainer\" [style.height.px]=\"totalDepth > 1 ? grid.rowHeight : undefined\" [style.width.px]=\"grid.unpinnedWidth\">\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"dimLevelColumns\" [igxGridForOfUniqueSizeCache]=\"true\" [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\" [igxForScrollOrientation]=\"'horizontal'\">\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [style.height.px]=\"totalDepth > 1 ? calcHeight(column, i) : undefined\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n [class.igx-grid__tr-pivot--columnDimensionLeaf]=\"isDuplicateOfExistingParent(column, i)\"\n [class.igx-grid__tr-pivot--columnMultiRowSpan]=\"isMultiRow(column, i)\"\n >\n </igx-grid-header-group>\n </ng-template>\n </div>\n }\n </div>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n </div>\n</div>\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\">\n</div>\n\n<igx-drop-down #dropdown (selectionChanging)='onAggregationChange($event)'>\n @for (item of aggregateList; track item.key) {\n <igx-drop-down-item [selected]='isSelected(item)' [value]='item'>\n {{ item.label }}\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<div [hidden]='true'>\n <igx-grid-excel-style-filtering [maxHeight]='grid.excelStyleFilterMaxHeight' [minHeight]='grid.excelStyleFilterMinHeight' #esf>\n <div igxExcelStyleColumnOperations>\n <igx-chips-area #dropdownChips>\n @for (filter of this.filterDropdownDimensions; track filter) {\n <igx-chip [id]=\"filter.memberName\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\"\n (chipClick)='onFiltersSelectionChanged($event)' [selectable]='true' [selected]='filter === this.filterDropdownDimensions.values().next().value'>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n<div style=\"visibility: hidden; position: absolute; top: -10000px\">\n <igx-chips-area #filterAreaHidden droppable='true'>\n @for (filter of grid.filterDimensions; track filter) {\n <igx-chip\n [id]=\"filter.memberName\"\n [draggable]=\"true\"\n [removable]=\"true\"\n (remove)=\"filterRemoved($event)\">\n <igx-icon family=\"default\" name=\"filter_list\" igxPrefix></igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n</div>\n\n<ng-template #valueChipDefaultTemplate let-value>\n {{value.aggregate.key}}({{value.displayName || value.member}})\n</ng-template>\n", dependencies: [{ kind: "directive", type: IgxDropDirective, selector: "[igxDrop]", inputs: ["igxDrop", "dropChannel", "dropStrategy"], outputs: ["enter", "over", "leave", "dropped"], exportAs: ["drop"] }, { kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "component", type: IgxBadgeComponent, selector: "igx-badge", inputs: ["id", "type", "value", "icon", "iconSet", "shape", "outlined"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxGridHeaderGroupComponent, selector: "igx-grid-header-group", inputs: ["column"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy", "role"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "component", type: IgxGridExcelStyleFilteringComponent, selector: "igx-grid-excel-style-filtering", inputs: ["column", "minHeight", "maxHeight"], outputs: ["loadingStart", "loadingEnd", "initialized", "sortingChanged", "columnChange", "listDataLoaded", "filterCleared"] }, { kind: "directive", type: IgxExcelStyleColumnOperationsTemplateDirective, selector: "igx-excel-style-column-operations,[igxExcelStyleColumnOperations]" }, { kind: "directive", type: IgxExcelStyleFilterOperationsTemplateDirective, selector: "igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]" }, { kind: "component", type: IgxExcelStyleSearchComponent, selector: "igx-excel-style-search", inputs: ["id"] }, { kind: "component", type: IgxPivotRowHeaderGroupComponent, selector: "igx-pivot-row-header-group", inputs: ["rowIndex", "dimWidth", "rootDimension"] }, { kind: "pipe", type: IgxHeaderGroupStylePipe, name: "igxHeaderGroupStyle" }, { kind: "pipe", type: IgxGridTopLevelColumns, name: "igxTopLevel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77939
78031
  }
77940
78032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxPivotHeaderRowComponent, decorators: [{
77941
78033
  type: Component,
@@ -80584,6 +80676,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
80584
80676
  options.outlet = this.outlet;
80585
80677
  if (dropdown) {
80586
80678
  dropdown.initialize(column, this.overlayService);
80679
+ dropdown.populateData();
80587
80680
  if (shouldReatach) {
80588
80681
  const id = this.overlayService.attach(dropdown.element, options);
80589
80682
  dropdown.overlayComponentId = id;
@@ -81545,6 +81638,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
81545
81638
  ref.instance.resizable = this.rowDimensionResizing;
81546
81639
  ref.instance.sortable = dim.sortable === undefined ? true : dim.sortable;
81547
81640
  ref.instance.width = this.rowDimensionWidth(dim);
81641
+ ref.instance.filteringIgnoreCase = false;
81548
81642
  ref.changeDetectorRef.detectChanges();
81549
81643
  columns.push(ref.instance);
81550
81644
  });
@@ -81870,7 +81964,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
81870
81964
  IgxPivotColumnResizingService,
81871
81965
  IgxForOfSyncService,
81872
81966
  IgxForOfScrollSyncService
81873
- ], queries: [{ propertyName: "valueChipTemplateDirective", first: true, predicate: IgxPivotValueChipTemplateDirective, descendants: true, read: IgxPivotValueChipTemplateDirective }, { propertyName: "rowDimensionHeaderDirective", first: true, predicate: IgxPivotRowDimensionHeaderTemplateDirective, descendants: true, read: IgxPivotRowDimensionHeaderTemplateDirective }], viewQueries: [{ propertyName: "theadRow", first: true, predicate: IgxPivotHeaderRowComponent, descendants: true, static: true }, { propertyName: "recordTemplate", first: true, predicate: ["record_template"], descendants: true, read: TemplateRef, static: true }, { propertyName: "rowDimensionMrlComponent", first: true, predicate: IgxPivotRowDimensionMrlRowComponent, descendants: true, read: IgxPivotRowDimensionMrlRowComponent }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "resizeLine", first: true, predicate: IgxPivotGridColumnResizerComponent, descendants: true }, { propertyName: "defaultEmptyPivotGridTemplate", first: true, predicate: ["emptyPivotGridTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "rowDimensionContainer", predicate: ["rowDimensionContainer"], descendants: true, read: ElementRef }, { propertyName: "excelStyleFilteringComponents", predicate: IgxGridExcelStyleFilteringComponent, descendants: true, read: IgxGridExcelStyleFilteringComponent }, { propertyName: "rowDimensionContentCollection", predicate: IgxPivotRowDimensionContentComponent, descendants: true }, { propertyName: "verticalRowDimScrollContainers", predicate: ["verticalRowDimScrollContainer"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "rowDimensionMrlRowsCollection", predicate: IgxPivotRowDimensionMrlRowComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n\n<!-- Grid table head row area -->\n<igx-pivot-header-row class=\"igx-grid-thead igx-grid-thead--pivot\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [width]=\"calcWidth\"\n [pinnedStartColumnCollection]=\"pinnedStartColumns\"\n [pinnedEndColumnCollection]=\"pinnedEndColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n>\n</igx-pivot-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <ng-container *ngTemplateOutlet=\"rowDimensions.length ? (hasHorizontalLayout ? horizontalRowDimensionsTemplate : defaultRowDimensionsTemplate) : emptyRowDimensionsTemplate; context: this\"></ng-container>\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)=\"preventContainerScroll($event)\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]=\"totalHeight\" [style.width.px]=\"pivotContentCalcWidth || null\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length <= 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n }\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length > 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n }\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"renderData\n | pivotGridFilter:pivotConfiguration:filterStrategy:advancedFilteringExpressionsTree:filteringPipeTrigger:pipeTrigger\n | pivotGridSort:pivotConfiguration:sortStrategy:pipeTrigger\n | pivotGridRow:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridColumn:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridAutoTransform:pivotConfiguration:pipeTrigger\n | pivotGridColumnSort:sortingExpressions:sortStrategy:pipeTrigger\n | pivotGridRowExpansion:pivotConfiguration:expansionStates:defaultExpandState:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxGridForOfVariableSizes]=\"false\"\n #verticalScrollContainer (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]=\"recordTemplate\"\n [igxTemplateOutletContext]=\"getContext(rowData, rowIndex)\"\n (cachedViewLoaded)=\"cachedViewLoaded($event)\">\n </ng-template>\n </ng-template>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData>\n <igx-pivot-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(rowData):false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-pivot-row>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n @if (shouldOverlayLoading) {\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n }\n </div>\n @if (hasMovableColumns && columnInDrag) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n }\n <div [hidden]=\"!hasVerticalScroll()\" class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=\" isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]=\"calcHeight\">\n <ng-template igxGridFor [igxGridForOf]=\"[]\" #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]=\"!isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]=\"snackbarDisplayTime\">{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]=\"pivotPinnedStartWidth\" [style.min-width.px]=\"pivotPinnedStartWidth\"></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]=\"pivotUnpinnedWidth\">\n <ng-template igxGridFor [igxGridForOf]=\"EMPTY_DATA\" #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pivotPinnedEndWidth\" [style.min-width.px]=\"pivotPinnedEndWidth\" [hidden]=\"pivotPinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" #tfoot>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n@if (colResizingService.showResizer) {\n <igx-pivot-grid-column-resizer [restrictResizerTop]=\"calculateResizerTop()\"></igx-pivot-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n\n<ng-template #headerTemplate let-column>\n <div class=\"igx-grid__tr--header\">\n <igx-icon\n family=\"default\"\n [name]=\"getColumnGroupExpandState(column) ? 'tree_expand' : 'tree_collapse'\"\n [attr.draggable]=\"false\"\n (click)=\"toggleColumn(column)\">\n </igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n\n<ng-template #defaultRowDimensionsTemplate>\n @for (dim of rowDimensions; track dim.memberName; let dimIndex = $index) {\n <div tabindex=\"0\" [style.height.px]=\"totalHeight\" #rowDimensionContainer class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n <ng-template igxGridFor let-rowData\n [igxGridForOf]=\"dataView | pivotGridCellMerging:pivotConfiguration:dim:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n #verticalRowDimScrollContainer\n >\n <igx-pivot-row-dimension-content\n class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"rowData.dimensions[dimIndex]\"\n [rootDimension]=\"dim\"\n [style.height.px]=\"renderedRowHeight * (rowData.rowSpan || 1)\"\n [rowIndex]=\"rowIndex\" [rowData]=\"rowData\"\n [width]=\"rowDimensionWidthToPixels(dim)\">\n </igx-pivot-row-dimension-content>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(dim) }\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #horizontalRowDimensionsTemplate>\n <div tabindex=\"0\" class=\"igx-grid__tbody-pivot-mrl-dimension\" #rowDimensionContainer [style.height.px]=\"totalHeight\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if (dataView | pivotGridHorizontalRowGrouping:pivotConfiguration:pipeTrigger:regroupTrigger; as groupedData) {\n <ng-template #verticalRowDimScrollContainer role=\"rowgroup\" igxGridFor let-rowGroup let-rowIndex=\"index\"\n [igxGridForOf]=\"groupedData\"\n [igxForScrollOrientation]=\"'vertical'\"\n [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n >\n <igx-pivot-row-dimension-mrl-row [rowIndex]=\"rowIndex\" [rowGroup]=\"rowGroup\" [groupedData]=\"groupedData\" [style.height.px]=\"renderedRowHeight * rowGroup.length\"></igx-pivot-row-dimension-mrl-row>\n </ng-template>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: pivotRowWidths }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyRowDimensionsTemplate>\n <div tabindex=\"0\" #rowDimensionContainer role=\"rowgroup\" class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if ((columnDimensions.length > 0 || values.length > 0) && data.length > 0) {\n <igx-pivot-row-dimension-content class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"emptyRowDimension\"\n [rootDimension]=\"emptyRowDimension\"\n [rowIndex]=\"0\" [rowData]=\"dataView[0]\"\n [width]=\"rowDimensionWidthToPixels(emptyRowDimension)\">\n </igx-pivot-row-dimension-content>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(emptyRowDimension) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPivotGridTemplate>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{resourceStrings.igx_grid_pivot_empty_message}}</span>\n </span>\n</ng-template>\n\n<ng-template #emptyRowDimensionFill let-width=\"widthPx\">\n @if (emptyBottomSize > 0) {\n <div class=\"igx-pivot-grid-row-filler__wrapper\" [style.height.px]=\"emptyBottomSize\" [style.width.px]=\"width\">\n <!-- Reuse header styles to keep visuals consistent -->\n <div class=\"igx-grid-thead__wrapper\">\n <div class=\"igx-grid-th\"></div>\n </div>\n </div>\n }\n</ng-template>\n\n<div [hidden]=\"true\">\n <igx-grid-excel-style-filtering [maxHeight]=\"excelStyleFilterMaxHeight\" [minHeight]=\"excelStyleFilterMinHeight\">\n <div igxExcelStyleColumnOperations [hidden]=\"true\"></div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n@if (platform.isElements) {\n <div #sink style=\"display: none;\"></div>\n <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxPivotHeaderRowComponent, selector: "igx-pivot-header-row" }, { kind: "directive", type: IgxGridBodyDirective, selector: "[igxGridBody]" }, { kind: "directive", type: IgxGridDragSelectDirective, selector: "[igxGridDragSelect]", inputs: ["igxGridDragSelect"], outputs: ["dragStop", "dragScroll"] }, { kind: "directive", type: IgxColumnMovingDropDirective, selector: "[igxColumnMovingDrop]", inputs: ["igxColumnMovingDrop"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "directive", type: IgxTemplateOutletDirective, selector: "[igxTemplateOutlet]", inputs: ["igxTemplateOutletContext", "igxTemplateOutlet"], outputs: ["viewCreated", "viewMoved", "cachedViewLoaded", "beforeViewDetach"] }, { kind: "component", type: IgxPivotRowComponent, selector: "igx-pivot-row", inputs: ["selected", "data"] }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "component", type: IgxCircularProgressBarComponent, selector: "igx-circular-bar", inputs: ["id", "textVisibility", "type"] }, { kind: "component", type: IgxSnackbarComponent, selector: "igx-snackbar", inputs: ["id", "actionText", "positionSettings"], outputs: ["clicked", "animationStarted", "animationDone"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "component", type: IgxPivotGridColumnResizerComponent, selector: "igx-pivot-grid-column-resizer" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxPivotRowDimensionContentComponent, selector: "igx-pivot-row-dimension-content", inputs: ["rowIndex", "colIndex", "layout", "dimension", "rootDimension", "rowData"] }, { kind: "component", type: IgxGridExcelStyleFilteringComponent, selector: "igx-grid-excel-style-filtering", inputs: ["column", "minHeight", "maxHeight"], outputs: ["loadingStart", "loadingEnd", "initialized", "sortingChanged", "columnChange", "listDataLoaded"] }, { kind: "directive", type: IgxExcelStyleColumnOperationsTemplateDirective, selector: "igx-excel-style-column-operations,[igxExcelStyleColumnOperations]" }, { kind: "directive", type: IgxExcelStyleFilterOperationsTemplateDirective, selector: "igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]" }, { kind: "component", type: IgxExcelStyleSearchComponent, selector: "igx-excel-style-search", inputs: ["id"] }, { kind: "component", type: IgxPivotRowDimensionMrlRowComponent, selector: "igx-pivot-row-dimension-mrl-row", inputs: ["rowIndex", "rowGroup", "groupedData"] }, { kind: "pipe", type: IgxGridRowClassesPipe, name: "igxGridRowClasses" }, { kind: "pipe", type: IgxGridRowStylesPipe, name: "igxGridRowStyles" }, { kind: "pipe", type: IgxPivotRowPipe, name: "pivotGridRow" }, { kind: "pipe", type: IgxPivotRowExpansionPipe, name: "pivotGridRowExpansion" }, { kind: "pipe", type: IgxPivotAutoTransform, name: "pivotGridAutoTransform" }, { kind: "pipe", type: IgxPivotColumnPipe, name: "pivotGridColumn" }, { kind: "pipe", type: IgxPivotGridFilterPipe, name: "pivotGridFilter" }, { kind: "pipe", type: IgxPivotGridSortingPipe, name: "pivotGridSort" }, { kind: "pipe", type: IgxPivotGridColumnSortingPipe, name: "pivotGridColumnSort" }, { kind: "pipe", type: IgxPivotCellMergingPipe, name: "pivotGridCellMerging" }, { kind: "pipe", type: IgxPivotGridHorizontalRowGrouping, name: "pivotGridHorizontalRowGrouping" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81967
+ ], queries: [{ propertyName: "valueChipTemplateDirective", first: true, predicate: IgxPivotValueChipTemplateDirective, descendants: true, read: IgxPivotValueChipTemplateDirective }, { propertyName: "rowDimensionHeaderDirective", first: true, predicate: IgxPivotRowDimensionHeaderTemplateDirective, descendants: true, read: IgxPivotRowDimensionHeaderTemplateDirective }], viewQueries: [{ propertyName: "theadRow", first: true, predicate: IgxPivotHeaderRowComponent, descendants: true, static: true }, { propertyName: "recordTemplate", first: true, predicate: ["record_template"], descendants: true, read: TemplateRef, static: true }, { propertyName: "rowDimensionMrlComponent", first: true, predicate: IgxPivotRowDimensionMrlRowComponent, descendants: true, read: IgxPivotRowDimensionMrlRowComponent }, { propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "resizeLine", first: true, predicate: IgxPivotGridColumnResizerComponent, descendants: true }, { propertyName: "defaultEmptyPivotGridTemplate", first: true, predicate: ["emptyPivotGridTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "rowDimensionContainer", predicate: ["rowDimensionContainer"], descendants: true, read: ElementRef }, { propertyName: "excelStyleFilteringComponents", predicate: IgxGridExcelStyleFilteringComponent, descendants: true, read: IgxGridExcelStyleFilteringComponent }, { propertyName: "rowDimensionContentCollection", predicate: IgxPivotRowDimensionContentComponent, descendants: true }, { propertyName: "verticalRowDimScrollContainers", predicate: ["verticalRowDimScrollContainer"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "rowDimensionMrlRowsCollection", predicate: IgxPivotRowDimensionMrlRowComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n\n<!-- Grid table head row area -->\n<igx-pivot-header-row class=\"igx-grid-thead igx-grid-thead--pivot\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [width]=\"calcWidth\"\n [pinnedStartColumnCollection]=\"pinnedStartColumns\"\n [pinnedEndColumnCollection]=\"pinnedEndColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n>\n</igx-pivot-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <ng-container *ngTemplateOutlet=\"rowDimensions.length ? (hasHorizontalLayout ? horizontalRowDimensionsTemplate : defaultRowDimensionsTemplate) : emptyRowDimensionsTemplate; context: this\"></ng-container>\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)=\"preventContainerScroll($event)\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]=\"totalHeight\" [style.width.px]=\"pivotContentCalcWidth || null\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length <= 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n }\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length > 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n }\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"renderData\n | pivotGridFilter:pivotConfiguration:filterStrategy:advancedFilteringExpressionsTree:filteringPipeTrigger:pipeTrigger\n | pivotGridSort:pivotConfiguration:sortStrategy:pipeTrigger\n | pivotGridRow:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridColumn:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridAutoTransform:pivotConfiguration:pipeTrigger\n | pivotGridColumnSort:sortingExpressions:sortStrategy:pipeTrigger\n | pivotGridRowExpansion:pivotConfiguration:expansionStates:defaultExpandState:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxGridForOfVariableSizes]=\"false\"\n #verticalScrollContainer (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]=\"recordTemplate\"\n [igxTemplateOutletContext]=\"getContext(rowData, rowIndex)\"\n (cachedViewLoaded)=\"cachedViewLoaded($event)\">\n </ng-template>\n </ng-template>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData>\n <igx-pivot-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(rowData):false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-pivot-row>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n @if (shouldOverlayLoading) {\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n }\n </div>\n @if (hasMovableColumns && columnInDrag) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n }\n <div [hidden]=\"!hasVerticalScroll()\" class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=\" isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]=\"calcHeight\">\n <ng-template igxGridFor [igxGridForOf]=\"[]\" #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]=\"!isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]=\"snackbarDisplayTime\">{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]=\"pivotPinnedStartWidth\" [style.min-width.px]=\"pivotPinnedStartWidth\"></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]=\"pivotUnpinnedWidth\">\n <ng-template igxGridFor [igxGridForOf]=\"EMPTY_DATA\" #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pivotPinnedEndWidth\" [style.min-width.px]=\"pivotPinnedEndWidth\" [hidden]=\"pivotPinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" #tfoot>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n@if (colResizingService.showResizer) {\n <igx-pivot-grid-column-resizer [restrictResizerTop]=\"calculateResizerTop()\"></igx-pivot-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n\n<ng-template #headerTemplate let-column>\n <div class=\"igx-grid__tr--header\">\n <igx-icon\n family=\"default\"\n [name]=\"getColumnGroupExpandState(column) ? 'tree_expand' : 'tree_collapse'\"\n [attr.draggable]=\"false\"\n (click)=\"toggleColumn(column)\">\n </igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n\n<ng-template #defaultRowDimensionsTemplate>\n @for (dim of rowDimensions; track dim.memberName; let dimIndex = $index) {\n <div tabindex=\"0\" [style.height.px]=\"totalHeight\" #rowDimensionContainer class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n <ng-template igxGridFor let-rowData\n [igxGridForOf]=\"dataView | pivotGridCellMerging:pivotConfiguration:dim:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n #verticalRowDimScrollContainer\n >\n <igx-pivot-row-dimension-content\n class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"rowData.dimensions[dimIndex]\"\n [rootDimension]=\"dim\"\n [style.height.px]=\"renderedRowHeight * (rowData.rowSpan || 1)\"\n [rowIndex]=\"rowIndex\" [rowData]=\"rowData\"\n [width]=\"rowDimensionWidthToPixels(dim)\">\n </igx-pivot-row-dimension-content>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(dim) }\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #horizontalRowDimensionsTemplate>\n <div tabindex=\"0\" class=\"igx-grid__tbody-pivot-mrl-dimension\" #rowDimensionContainer [style.height.px]=\"totalHeight\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if (dataView | pivotGridHorizontalRowGrouping:pivotConfiguration:pipeTrigger:regroupTrigger; as groupedData) {\n <ng-template #verticalRowDimScrollContainer role=\"rowgroup\" igxGridFor let-rowGroup let-rowIndex=\"index\"\n [igxGridForOf]=\"groupedData\"\n [igxForScrollOrientation]=\"'vertical'\"\n [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n >\n <igx-pivot-row-dimension-mrl-row [rowIndex]=\"rowIndex\" [rowGroup]=\"rowGroup\" [groupedData]=\"groupedData\" [style.height.px]=\"renderedRowHeight * rowGroup.length\"></igx-pivot-row-dimension-mrl-row>\n </ng-template>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: pivotRowWidths }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyRowDimensionsTemplate>\n <div tabindex=\"0\" #rowDimensionContainer role=\"rowgroup\" class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if ((columnDimensions.length > 0 || values.length > 0) && data.length > 0) {\n <igx-pivot-row-dimension-content class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"emptyRowDimension\"\n [rootDimension]=\"emptyRowDimension\"\n [rowIndex]=\"0\" [rowData]=\"dataView[0]\"\n [width]=\"rowDimensionWidthToPixels(emptyRowDimension)\">\n </igx-pivot-row-dimension-content>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(emptyRowDimension) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPivotGridTemplate>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{resourceStrings.igx_grid_pivot_empty_message}}</span>\n </span>\n</ng-template>\n\n<ng-template #emptyRowDimensionFill let-width=\"widthPx\">\n @if (emptyBottomSize > 0) {\n <div class=\"igx-pivot-grid-row-filler__wrapper\" [style.height.px]=\"emptyBottomSize\" [style.width.px]=\"width\">\n <!-- Reuse header styles to keep visuals consistent -->\n <div class=\"igx-grid-thead__wrapper\">\n <div class=\"igx-grid-th\"></div>\n </div>\n </div>\n }\n</ng-template>\n\n<div [hidden]=\"true\">\n <igx-grid-excel-style-filtering [maxHeight]=\"excelStyleFilterMaxHeight\" [minHeight]=\"excelStyleFilterMinHeight\">\n <div igxExcelStyleColumnOperations [hidden]=\"true\"></div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n@if (platform.isElements) {\n <div #sink style=\"display: none;\"></div>\n <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxPivotHeaderRowComponent, selector: "igx-pivot-header-row" }, { kind: "directive", type: IgxGridBodyDirective, selector: "[igxGridBody]" }, { kind: "directive", type: IgxGridDragSelectDirective, selector: "[igxGridDragSelect]", inputs: ["igxGridDragSelect"], outputs: ["dragStop", "dragScroll"] }, { kind: "directive", type: IgxColumnMovingDropDirective, selector: "[igxColumnMovingDrop]", inputs: ["igxColumnMovingDrop"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "directive", type: IgxTemplateOutletDirective, selector: "[igxTemplateOutlet]", inputs: ["igxTemplateOutletContext", "igxTemplateOutlet"], outputs: ["viewCreated", "viewMoved", "cachedViewLoaded", "beforeViewDetach"] }, { kind: "component", type: IgxPivotRowComponent, selector: "igx-pivot-row", inputs: ["selected", "data"] }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "component", type: IgxCircularProgressBarComponent, selector: "igx-circular-bar", inputs: ["id", "textVisibility", "type"] }, { kind: "component", type: IgxSnackbarComponent, selector: "igx-snackbar", inputs: ["id", "actionText", "positionSettings"], outputs: ["clicked", "animationStarted", "animationDone"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "component", type: IgxPivotGridColumnResizerComponent, selector: "igx-pivot-grid-column-resizer" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxPivotRowDimensionContentComponent, selector: "igx-pivot-row-dimension-content", inputs: ["rowIndex", "colIndex", "layout", "dimension", "rootDimension", "rowData"] }, { kind: "component", type: IgxGridExcelStyleFilteringComponent, selector: "igx-grid-excel-style-filtering", inputs: ["column", "minHeight", "maxHeight"], outputs: ["loadingStart", "loadingEnd", "initialized", "sortingChanged", "columnChange", "listDataLoaded", "filterCleared"] }, { kind: "directive", type: IgxExcelStyleColumnOperationsTemplateDirective, selector: "igx-excel-style-column-operations,[igxExcelStyleColumnOperations]" }, { kind: "directive", type: IgxExcelStyleFilterOperationsTemplateDirective, selector: "igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]" }, { kind: "component", type: IgxExcelStyleSearchComponent, selector: "igx-excel-style-search", inputs: ["id"] }, { kind: "component", type: IgxPivotRowDimensionMrlRowComponent, selector: "igx-pivot-row-dimension-mrl-row", inputs: ["rowIndex", "rowGroup", "groupedData"] }, { kind: "pipe", type: IgxGridRowClassesPipe, name: "igxGridRowClasses" }, { kind: "pipe", type: IgxGridRowStylesPipe, name: "igxGridRowStyles" }, { kind: "pipe", type: IgxPivotRowPipe, name: "pivotGridRow" }, { kind: "pipe", type: IgxPivotRowExpansionPipe, name: "pivotGridRowExpansion" }, { kind: "pipe", type: IgxPivotAutoTransform, name: "pivotGridAutoTransform" }, { kind: "pipe", type: IgxPivotColumnPipe, name: "pivotGridColumn" }, { kind: "pipe", type: IgxPivotGridFilterPipe, name: "pivotGridFilter" }, { kind: "pipe", type: IgxPivotGridSortingPipe, name: "pivotGridSort" }, { kind: "pipe", type: IgxPivotGridColumnSortingPipe, name: "pivotGridColumnSort" }, { kind: "pipe", type: IgxPivotCellMergingPipe, name: "pivotGridCellMerging" }, { kind: "pipe", type: IgxPivotGridHorizontalRowGrouping, name: "pivotGridHorizontalRowGrouping" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81874
81968
  }
81875
81969
  __decorate([
81876
81970
  WatchChanges()
@@ -94674,12 +94768,10 @@ class IgxSplitterComponent {
94674
94768
  onMoveEnd(delta) {
94675
94769
  let [paneSize, siblingSize] = this.calcNewSizes(delta);
94676
94770
  if (paneSize + siblingSize > this.getTotalSize() && delta < 0) {
94677
- paneSize = this.getTotalSize();
94678
- siblingSize = 0;
94771
+ siblingSize = this.getTotalSize() - paneSize;
94679
94772
  }
94680
94773
  else if (paneSize + siblingSize > this.getTotalSize() && delta > 0) {
94681
- paneSize = 0;
94682
- siblingSize = this.getTotalSize();
94774
+ paneSize = this.getTotalSize() - siblingSize;
94683
94775
  }
94684
94776
  if (this.pane.isPercentageSize) {
94685
94777
  // handle % resizes
@@ -99040,6 +99132,230 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
99040
99132
  }]
99041
99133
  }] });
99042
99134
 
99135
+ const DEFAULT_LANGUAGES = ['javascript', 'typescript', 'html', 'css'];
99136
+ const DEFAULT_THEMES = {
99137
+ light: 'github-light',
99138
+ dark: 'github-dark'
99139
+ };
99140
+ class IgxChatMarkdownService {
99141
+ _initializeMarked() {
99142
+ this._instance = new Marked({
99143
+ breaks: true,
99144
+ gfm: true,
99145
+ extensions: [
99146
+ {
99147
+ name: 'link',
99148
+ renderer({ href, title, text }) {
99149
+ return `<a href="${href}" target="_blank" rel="noopener noreferrer" ${title ? `title="${title}"` : ''}>${text}</a>`;
99150
+ }
99151
+ }
99152
+ ]
99153
+ });
99154
+ }
99155
+ async _initializeShiki() {
99156
+ const highlighter = await createHighlighter({
99157
+ langs: DEFAULT_LANGUAGES,
99158
+ themes: Object.keys(bundledThemes)
99159
+ });
99160
+ this._instance.use(markedShiki({
99161
+ highlight(code, lang, _) {
99162
+ try {
99163
+ return highlighter.codeToHtml(code, {
99164
+ lang,
99165
+ themes: DEFAULT_THEMES,
99166
+ });
99167
+ }
99168
+ catch {
99169
+ return `<pre><code>${code}</code></pre>`;
99170
+ }
99171
+ }
99172
+ }));
99173
+ }
99174
+ constructor() {
99175
+ this._initializeMarked();
99176
+ this._isInitialized = this._initializeShiki();
99177
+ }
99178
+ async parse(text) {
99179
+ await this._isInitialized;
99180
+ return await this._instance.parse(text);
99181
+ }
99182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatMarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
99183
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatMarkdownService, providedIn: 'root' }); }
99184
+ }
99185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatMarkdownService, decorators: [{
99186
+ type: Injectable,
99187
+ args: [{ providedIn: 'root' }]
99188
+ }], ctorParameters: () => [] });
99189
+
99190
+ class MarkdownPipe {
99191
+ constructor() {
99192
+ this._service = inject(IgxChatMarkdownService);
99193
+ this._sanitizer = inject(DomSanitizer);
99194
+ }
99195
+ async transform(text) {
99196
+ return this._sanitizer.bypassSecurityTrustHtml(DOMPurify.sanitize(await this._service.parse(text ?? '')));
99197
+ }
99198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MarkdownPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
99199
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.6", ngImport: i0, type: MarkdownPipe, isStandalone: true, name: "fromMarkdown" }); }
99200
+ }
99201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: MarkdownPipe, decorators: [{
99202
+ type: Pipe,
99203
+ args: [{ name: 'fromMarkdown' }]
99204
+ }] });
99205
+
99206
+ class IgxChatComponent {
99207
+ //#endregion
99208
+ /** @internal */
99209
+ ngOnInit() {
99210
+ IgcChatComponent.register();
99211
+ }
99212
+ /** @internal */
99213
+ ngOnDestroy() {
99214
+ for (const viewSet of this._templateViewRefs.values()) {
99215
+ viewSet.forEach(viewRef => viewRef.destroy());
99216
+ }
99217
+ this._templateViewRefs.clear();
99218
+ }
99219
+ constructor() {
99220
+ //#region Internal state
99221
+ this._view = inject(ViewContainerRef);
99222
+ this._templateViewRefs = new Map();
99223
+ this._oldTemplates = {};
99224
+ this._mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "_mergedOptions" }] : []));
99225
+ this._transformedTemplates = signal({}, ...(ngDevMode ? [{ debugName: "_transformedTemplates" }] : []));
99226
+ //#endregion
99227
+ //#region Inputs
99228
+ this.messages = input([], ...(ngDevMode ? [{ debugName: "messages" }] : []));
99229
+ this.draftMessage = input({ text: '' }, ...(ngDevMode ? [{ debugName: "draftMessage" }] : []));
99230
+ this.options = input({}, ...(ngDevMode ? [{ debugName: "options" }] : []));
99231
+ this.templates = input({}, ...(ngDevMode ? [{ debugName: "templates" }] : []));
99232
+ //#endregion
99233
+ //#region Outputs
99234
+ this.messageCreated = output();
99235
+ this.attachmentClick = output();
99236
+ this.attachmentDrag = output();
99237
+ this.attachmentDrop = output();
99238
+ this.typingChange = output();
99239
+ this.inputFocus = output();
99240
+ this.inputBlur = output();
99241
+ this.inputChange = output();
99242
+ // Templates changed - update transformed templates and viewRefs and merge with options
99243
+ effect(() => {
99244
+ const templates = this.templates();
99245
+ this._setTemplates(templates ?? {});
99246
+ this._mergeOptions(untracked(() => this.options()));
99247
+ });
99248
+ // Options changed - merge with current template state
99249
+ effect(() => {
99250
+ const options = this.options();
99251
+ this._mergeOptions(options ?? {});
99252
+ });
99253
+ }
99254
+ _mergeOptions(options) {
99255
+ const transformedTemplates = this._transformedTemplates();
99256
+ const merged = {
99257
+ ...options,
99258
+ renderers: transformedTemplates
99259
+ };
99260
+ this._mergedOptions.set(merged);
99261
+ }
99262
+ _setTemplates(newTemplates) {
99263
+ const templateCopies = {};
99264
+ const newTemplateKeys = Object.keys(newTemplates);
99265
+ const oldTemplates = this._oldTemplates;
99266
+ const oldTemplateKeys = Object.keys(oldTemplates);
99267
+ for (const key of oldTemplateKeys) {
99268
+ const oldRef = oldTemplates[key];
99269
+ const newRef = newTemplates[key];
99270
+ if (oldRef && oldRef !== newRef) {
99271
+ const obsolete = this._templateViewRefs.get(oldRef);
99272
+ if (obsolete) {
99273
+ obsolete.forEach(viewRef => viewRef.destroy());
99274
+ this._templateViewRefs.delete(oldRef);
99275
+ }
99276
+ }
99277
+ }
99278
+ if (newTemplateKeys.length > 0) {
99279
+ this._oldTemplates = {};
99280
+ for (const key of newTemplateKeys) {
99281
+ const ref = newTemplates[key];
99282
+ if (ref) {
99283
+ this._oldTemplates[key] = ref;
99284
+ templateCopies[key] = this._createTemplateRenderer(ref);
99285
+ }
99286
+ }
99287
+ }
99288
+ this._transformedTemplates.set(templateCopies);
99289
+ }
99290
+ _createTemplateRenderer(ref) {
99291
+ if (!this._templateViewRefs.has(ref)) {
99292
+ this._templateViewRefs.set(ref, new Set());
99293
+ }
99294
+ const viewSet = this._templateViewRefs.get(ref);
99295
+ return (ctx) => {
99296
+ const context = ctx;
99297
+ let angularContext;
99298
+ if ('message' in context && 'attachment' in context) {
99299
+ angularContext = { $implicit: context.attachment };
99300
+ }
99301
+ else if ('message' in context) {
99302
+ angularContext = { $implicit: context.message };
99303
+ }
99304
+ else if ('value' in context) {
99305
+ angularContext = {
99306
+ $implicit: { value: context.value, attachments: context.attachments },
99307
+ };
99308
+ }
99309
+ else {
99310
+ angularContext = { $implicit: { instance: context.instance } };
99311
+ }
99312
+ const viewRef = this._view.createEmbeddedView(ref, angularContext);
99313
+ viewSet.add(viewRef);
99314
+ return viewRef.rootNodes;
99315
+ };
99316
+ }
99317
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
99318
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.6", type: IgxChatComponent, isStandalone: true, selector: "igx-chat", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, draftMessage: { classPropertyName: "draftMessage", publicName: "draftMessage", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: "templates", publicName: "templates", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { messageCreated: "messageCreated", attachmentClick: "attachmentClick", attachmentDrag: "attachmentDrag", attachmentDrop: "attachmentDrop", typingChange: "typingChange", inputFocus: "inputFocus", inputBlur: "inputBlur", inputChange: "inputChange" }, ngImport: i0, template: "<igc-chat\n [messages]=\"messages()\"\n [draftMessage]=\"draftMessage()\"\n [options]=\"_mergedOptions()\"\n (igcMessageCreated)=\"messageCreated.emit($event.detail)\"\n (igcAttachmentClick)=\"attachmentClick.emit($event.detail)\"\n (igcAttachmentDrag)=\"attachmentDrag.emit()\"\n (igcAttachmentDrop)=\"attachmentDrop.emit()\"\n (igcTypingChange)=\"typingChange.emit($event.detail)\"\n (igcInputFocus)=\"inputFocus.emit()\"\n (igcInputBlur)=\"inputBlur.emit()\"\n (igcInputChange)=\"inputChange.emit($event.detail)\"\n>\n <ng-content></ng-content>\n</igc-chat>\n", styles: ["igc-chat{--igc-chat-height: calc(100vh - 32px) }\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99319
+ }
99320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatComponent, decorators: [{
99321
+ type: Component,
99322
+ args: [{ selector: 'igx-chat', changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<igc-chat\n [messages]=\"messages()\"\n [draftMessage]=\"draftMessage()\"\n [options]=\"_mergedOptions()\"\n (igcMessageCreated)=\"messageCreated.emit($event.detail)\"\n (igcAttachmentClick)=\"attachmentClick.emit($event.detail)\"\n (igcAttachmentDrag)=\"attachmentDrag.emit()\"\n (igcAttachmentDrop)=\"attachmentDrop.emit()\"\n (igcTypingChange)=\"typingChange.emit($event.detail)\"\n (igcInputFocus)=\"inputFocus.emit()\"\n (igcInputBlur)=\"inputBlur.emit()\"\n (igcInputChange)=\"inputChange.emit($event.detail)\"\n>\n <ng-content></ng-content>\n</igc-chat>\n", styles: ["igc-chat{--igc-chat-height: calc(100vh - 32px) }\n"] }]
99323
+ }], ctorParameters: () => [], propDecorators: { messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], draftMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "draftMessage", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], templates: [{ type: i0.Input, args: [{ isSignal: true, alias: "templates", required: false }] }], messageCreated: [{ type: i0.Output, args: ["messageCreated"] }], attachmentClick: [{ type: i0.Output, args: ["attachmentClick"] }], attachmentDrag: [{ type: i0.Output, args: ["attachmentDrag"] }], attachmentDrop: [{ type: i0.Output, args: ["attachmentDrop"] }], typingChange: [{ type: i0.Output, args: ["typingChange"] }], inputFocus: [{ type: i0.Output, args: ["inputFocus"] }], inputBlur: [{ type: i0.Output, args: ["inputBlur"] }], inputChange: [{ type: i0.Output, args: ["inputChange"] }] } });
99324
+ class IgxChatMessageContextDirective {
99325
+ static ngTemplateContextGuard(_, ctx) {
99326
+ return true;
99327
+ }
99328
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatMessageContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
99329
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: IgxChatMessageContextDirective, isStandalone: true, selector: "[igxChatMessageContext]", ngImport: i0 }); }
99330
+ }
99331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatMessageContextDirective, decorators: [{
99332
+ type: Directive,
99333
+ args: [{ selector: '[igxChatMessageContext]' }]
99334
+ }] });
99335
+ ;
99336
+ class IgxChatAttachmentContextDirective {
99337
+ static ngTemplateContextGuard(_, ctx) {
99338
+ return true;
99339
+ }
99340
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatAttachmentContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
99341
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: IgxChatAttachmentContextDirective, isStandalone: true, selector: "[igxChatAttachmentContext]", ngImport: i0 }); }
99342
+ }
99343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatAttachmentContextDirective, decorators: [{
99344
+ type: Directive,
99345
+ args: [{ selector: '[igxChatAttachmentContext]' }]
99346
+ }] });
99347
+ class IgxChatInputContextDirective {
99348
+ static ngTemplateContextGuard(_, ctx) {
99349
+ return true;
99350
+ }
99351
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatInputContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
99352
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: IgxChatInputContextDirective, isStandalone: true, selector: "[igxChatInputContext]", ngImport: i0 }); }
99353
+ }
99354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxChatInputContextDirective, decorators: [{
99355
+ type: Directive,
99356
+ args: [{ selector: '[igxChatInputContext]' }]
99357
+ }] });
99358
+
99043
99359
  /*
99044
99360
  * Public API Surface of igniteui-angular
99045
99361
  */
@@ -99056,5 +99372,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
99056
99372
  * Generated bundle index. Do not edit.
99057
99373
  */
99058
99374
 
99059
- export { AbsolutePosition, AbsoluteScrollStrategy, ActionStripResourceStringsEN, AutoPositionStrategy, BannerResourceStringsEN, BaseFilteringStrategy, BlockScrollStrategy, ButtonGroupAlignment, ByLevelTreeGridMergeStrategy, CachedDataCloneStrategy, Calendar, CalendarResourceStringsEN, CalendarSelection, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CarouselResourceStringsEN, ChipResourceStringsEN, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ComboResourceStringsEN, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DEFAULT_PIVOT_KEYS, DataType, DataUtil, DatePart, DatePickerResourceStringsEN, DateRangePickerFormatPipe, DateRangePickerResourceStringsEN, DateRangeType, DefaultDataCloneStrategy, DefaultMergeStrategy, DefaultPivotGridRecordSortingStrategy, DefaultPivotSortingStrategy, DefaultSortingStrategy, DefaultTreeGridMergeStrategy, DimensionValuesFilteringStrategy, Direction, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportHeaderType, ExportRecordType, ExpressionsTreeUtil, FilterMode, FilterUtil, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, FormattedValuesSortingStrategy, GRID_LEVEL_COL, GRID_PARENT, GRID_ROOT_SUMMARY, GlobalPositionStrategy, GridCellMergeMode, GridColumnDataType, GridPagingMode, GridResourceStringsEN, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupMemberCountSortingStrategy, GroupedRecords, HorizontalAlignment, HorizontalAnimationType, IGX_ACCORDION_DIRECTIVES, IGX_ACTION_STRIP_DIRECTIVES, IGX_BANNER_DIRECTIVES, IGX_BOTTOM_NAV_DIRECTIVES, IGX_BUTTON_GROUP_DIRECTIVES, IGX_CALENDAR_DIRECTIVES, IGX_CALENDAR_VIEW_ITEM, IGX_CARD_DIRECTIVES, IGX_CAROUSEL_DIRECTIVES, IGX_CHIPS_DIRECTIVES, IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES, IGX_COMBO_DIRECTIVES, IGX_DATE_PICKER_DIRECTIVES, IGX_DATE_RANGE_PICKER_DIRECTIVES, IGX_DIALOG_DIRECTIVES, IGX_DRAG_DROP_DIRECTIVES, IGX_DROP_DOWN_DIRECTIVES, IGX_EXPANSION_PANEL_DIRECTIVES, IGX_GRID_ACTION_STRIP_DIRECTIVES, IGX_GRID_BASE, IGX_GRID_COMMON_DIRECTIVES, IGX_GRID_DIRECTIVES, IGX_GRID_SERVICE_BASE, IGX_GRID_VALIDATION_DIRECTIVES, IGX_HIERARCHICAL_GRID_DIRECTIVES, IGX_INPUT_GROUP_DIRECTIVES, IGX_INPUT_GROUP_TYPE, IGX_LINEAR_PROGRESS_BAR_DIRECTIVES, IGX_LIST_DIRECTIVES, IGX_NAVBAR_DIRECTIVES, IGX_NAVIGATION_DRAWER_DIRECTIVES, IGX_PAGINATOR_DIRECTIVES, IGX_PIVOT_GRID_DIRECTIVES, IGX_PROGRESS_BAR_DIRECTIVES, IGX_QUERY_BUILDER_DIRECTIVES, IGX_RADIO_GROUP_DIRECTIVES, IGX_SELECT_DIRECTIVES, IGX_SIMPLE_COMBO_DIRECTIVES, IGX_SLIDER_DIRECTIVES, IGX_SPLITTER_DIRECTIVES, IGX_STEPPER_DIRECTIVES, IGX_TABS_DIRECTIVES, IGX_TIME_PICKER_DIRECTIVES, IGX_TOOLTIP_DIRECTIVES, IGX_TREE_DIRECTIVES, IGX_TREE_GRID_DIRECTIVES, ITreeGridAggregation, IgSizeDirective, IgcFormControlDirective, IgcFormsModule, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripMenuItemDirective, IgxActionStripModule, IgxAdvancedFilteringDialogComponent, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerActionsDirective, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollPageDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarViewBaseDirective, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCarouselComponent, IgxCarouselIndicatorDirective, IgxCarouselModule, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCellValidationErrorDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxChildGridRowComponent, IgxChipComponent, IgxChipTypeVariant, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumPatternValidatorDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnComponent, IgxColumnEmailValidatorDirective, IgxColumnGroupComponent, IgxColumnHidingDirective, IgxColumnLayoutComponent, IgxColumnMaxLengthValidatorDirective, IgxColumnMaxValidatorDirective, IgxColumnMinLengthValidatorDirective, IgxColumnMinValidatorDirective, IgxColumnPinningDirective, IgxColumnRequiredValidatorDirective, IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboComponent, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboModule, IgxComboToggleIconDirective, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogActionsDirective, IgxDialogComponent, IgxDialogModule, IgxDialogTitleDirective, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragIndicatorIconDirective, IgxDragLocation, IgxDropDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleDateExpressionComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelDescriptionDirective, IgxExpansionPanelHeaderComponent, IgxExpansionPanelIconDirective, IgxExpansionPanelModule, IgxExpansionPanelTitleDirective, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxFocusTrapDirective, IgxFocusTrapModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridActionButtonComponent, IgxGridActionsBaseDirective, IgxGridCell, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridEmptyTemplateDirective, IgxGridExcelStyleFilteringComponent, IgxGridFooterComponent, IgxGridForOfContext, IgxGridForOfDirective, IgxGridHeaderComponent, IgxGridHeaderGroupComponent, IgxGridHeaderRowComponent, IgxGridLoadingTemplateDirective, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridToolbarActionsComponent, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleComponent, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowSelectorDirective, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeadSelectorDirective, IgxHeaderCollapsedIndicatorDirective, IgxHeaderExpandedIndicatorDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHintDirective, IgxIconButtonDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupEnum, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxItemListDirective, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorContentDirective, IgxPaginatorDirective, IgxPaginatorModule, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPivotAggregate, IgxPivotDataSelectorComponent, IgxPivotDateAggregate, IgxPivotDateDimension, IgxPivotGridComponent, IgxPivotGridModule, IgxPivotGridRow, IgxPivotNumericAggregate, IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotTimeAggregate, IgxPivotValueChipTemplateDirective, IgxPrefixDirective, IgxPrependDropStrategy, IgxProgressBarGradientDirective, IgxProgressBarModule, IgxProgressBarTextTemplateDirective, IgxProgressType, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderModule, IgxQueryBuilderSearchValueTemplateDirective, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowAddTextDirective, IgxRowCollapsedIndicatorDirective, IgxRowDirective, IgxRowDragGhostDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTextDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandComponent, IgxRowSelectorDirective, IgxScrollInertiaDirective, IgxScrollInertiaModule, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSimpleComboComponent, IgxSimpleComboModule, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective, IgxSorting, IgxSplitBarComponent, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStepActiveIndicatorDirective, IgxStepCompletedIndicatorDirective, IgxStepComponent, IgxStepContentDirective, IgxStepIndicatorDirective, IgxStepInvalidIndicatorDirective, IgxStepSubtitleDirective, IgxStepTitleDirective, IgxStepType, IgxStepperComponent, IgxStepperModule, IgxStepperOrientation, IgxStepperTitlePosition, IgxStringFilteringOperand, IgxSuffixDirective, IgxSummaryOperand, IgxSummaryRow, IgxSummaryTemplateDirective, IgxSwitchComponent, IgxSwitchModule, IgxTabContentComponent, IgxTabHeaderComponent, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabsAlignment, IgxTabsComponent, IgxTabsModule, IgxTemplateOutletDirective, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextHighlightService, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimeItemDirective, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridComponent, IgxTreeGridGroupByAreaComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectionType, IgxYearsViewComponent, IndigoIcons, InputResourceStringsEN, LabelPosition, ListResourceStringsEN, NoOpScrollStrategy, NoopFilteringStrategy, NoopPivotDimensionsStrategy, NoopSortingStrategy, PaginatorResourceStringsEN, PagingError, PickerInteractionMode, PivotColumnDimensionsStrategy, PivotDimensionType, PivotRowDimensionsStrategy, PivotRowLayoutType, PivotSummaryPosition, Point, QueryBuilderResourceStringsEN, RadioGroupAlignment, RelativePosition, RelativePositionStrategy, RowPinningPosition, ScrollStrategy, Size, SliderHandle, SortingDirection, SplitterType, THEME_TOKEN, ThemeToken, TickLabelsOrientation, TicksOrientation, TimePickerResourceStringsEN, TooltipPositionStrategy, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, TreeResourceStringsEN, VerticalAlignment, VerticalAnimationType, WEEKDAYS, changei18n, comboIgnoreDiacriticsFilter, igxI18N, isLeap, monthRange, range, weekDay };
99375
+ export { AbsolutePosition, AbsoluteScrollStrategy, ActionStripResourceStringsEN, AutoPositionStrategy, BannerResourceStringsEN, BaseFilteringStrategy, BlockScrollStrategy, ButtonGroupAlignment, ByLevelTreeGridMergeStrategy, CachedDataCloneStrategy, Calendar, CalendarResourceStringsEN, CalendarSelection, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CarouselResourceStringsEN, ChipResourceStringsEN, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ComboResourceStringsEN, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DEFAULT_PIVOT_KEYS, DataType, DataUtil, DatePart, DatePickerResourceStringsEN, DateRangePickerFormatPipe, DateRangePickerResourceStringsEN, DateRangeType, DefaultDataCloneStrategy, DefaultMergeStrategy, DefaultPivotGridRecordSortingStrategy, DefaultPivotSortingStrategy, DefaultSortingStrategy, DefaultTreeGridMergeStrategy, DimensionValuesFilteringStrategy, Direction, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportHeaderType, ExportRecordType, ExpressionsTreeUtil, FilterMode, FilterUtil, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, FormattedValuesSortingStrategy, GRID_LEVEL_COL, GRID_PARENT, GRID_ROOT_SUMMARY, GlobalPositionStrategy, GridCellMergeMode, GridColumnDataType, GridPagingMode, GridResourceStringsEN, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupMemberCountSortingStrategy, GroupedRecords, HorizontalAlignment, HorizontalAnimationType, IGX_ACCORDION_DIRECTIVES, IGX_ACTION_STRIP_DIRECTIVES, IGX_BANNER_DIRECTIVES, IGX_BOTTOM_NAV_DIRECTIVES, IGX_BUTTON_GROUP_DIRECTIVES, IGX_CALENDAR_DIRECTIVES, IGX_CALENDAR_VIEW_ITEM, IGX_CARD_DIRECTIVES, IGX_CAROUSEL_DIRECTIVES, IGX_CHIPS_DIRECTIVES, IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES, IGX_COMBO_DIRECTIVES, IGX_DATE_PICKER_DIRECTIVES, IGX_DATE_RANGE_PICKER_DIRECTIVES, IGX_DIALOG_DIRECTIVES, IGX_DRAG_DROP_DIRECTIVES, IGX_DROP_DOWN_DIRECTIVES, IGX_EXPANSION_PANEL_DIRECTIVES, IGX_GRID_ACTION_STRIP_DIRECTIVES, IGX_GRID_BASE, IGX_GRID_COMMON_DIRECTIVES, IGX_GRID_DIRECTIVES, IGX_GRID_SERVICE_BASE, IGX_GRID_VALIDATION_DIRECTIVES, IGX_HIERARCHICAL_GRID_DIRECTIVES, IGX_INPUT_GROUP_DIRECTIVES, IGX_INPUT_GROUP_TYPE, IGX_LINEAR_PROGRESS_BAR_DIRECTIVES, IGX_LIST_DIRECTIVES, IGX_NAVBAR_DIRECTIVES, IGX_NAVIGATION_DRAWER_DIRECTIVES, IGX_PAGINATOR_DIRECTIVES, IGX_PIVOT_GRID_DIRECTIVES, IGX_PROGRESS_BAR_DIRECTIVES, IGX_QUERY_BUILDER_DIRECTIVES, IGX_RADIO_GROUP_DIRECTIVES, IGX_SELECT_DIRECTIVES, IGX_SIMPLE_COMBO_DIRECTIVES, IGX_SLIDER_DIRECTIVES, IGX_SPLITTER_DIRECTIVES, IGX_STEPPER_DIRECTIVES, IGX_TABS_DIRECTIVES, IGX_TIME_PICKER_DIRECTIVES, IGX_TOOLTIP_DIRECTIVES, IGX_TREE_DIRECTIVES, IGX_TREE_GRID_DIRECTIVES, ITreeGridAggregation, IgSizeDirective, IgcFormControlDirective, IgcFormsModule, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripMenuItemDirective, IgxActionStripModule, IgxAdvancedFilteringDialogComponent, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerActionsDirective, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollPageDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarViewBaseDirective, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCarouselComponent, IgxCarouselIndicatorDirective, IgxCarouselModule, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCellValidationErrorDirective, IgxChatAttachmentContextDirective, IgxChatComponent, IgxChatInputContextDirective, IgxChatMessageContextDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxChildGridRowComponent, IgxChipComponent, IgxChipTypeVariant, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumPatternValidatorDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnComponent, IgxColumnEmailValidatorDirective, IgxColumnGroupComponent, IgxColumnHidingDirective, IgxColumnLayoutComponent, IgxColumnMaxLengthValidatorDirective, IgxColumnMaxValidatorDirective, IgxColumnMinLengthValidatorDirective, IgxColumnMinValidatorDirective, IgxColumnPinningDirective, IgxColumnRequiredValidatorDirective, IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboComponent, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboModule, IgxComboToggleIconDirective, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogActionsDirective, IgxDialogComponent, IgxDialogModule, IgxDialogTitleDirective, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragIndicatorIconDirective, IgxDragLocation, IgxDropDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleDateExpressionComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelDescriptionDirective, IgxExpansionPanelHeaderComponent, IgxExpansionPanelIconDirective, IgxExpansionPanelModule, IgxExpansionPanelTitleDirective, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxFocusTrapDirective, IgxFocusTrapModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridActionButtonComponent, IgxGridActionsBaseDirective, IgxGridCell, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridEmptyTemplateDirective, IgxGridExcelStyleFilteringComponent, IgxGridFooterComponent, IgxGridForOfContext, IgxGridForOfDirective, IgxGridHeaderComponent, IgxGridHeaderGroupComponent, IgxGridHeaderRowComponent, IgxGridLoadingTemplateDirective, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridToolbarActionsComponent, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleComponent, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowSelectorDirective, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeadSelectorDirective, IgxHeaderCollapsedIndicatorDirective, IgxHeaderExpandedIndicatorDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHintDirective, IgxIconButtonDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupEnum, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxItemListDirective, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorContentDirective, IgxPaginatorDirective, IgxPaginatorModule, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPivotAggregate, IgxPivotDataSelectorComponent, IgxPivotDateAggregate, IgxPivotDateDimension, IgxPivotGridComponent, IgxPivotGridModule, IgxPivotGridRow, IgxPivotNumericAggregate, IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotTimeAggregate, IgxPivotValueChipTemplateDirective, IgxPrefixDirective, IgxPrependDropStrategy, IgxProgressBarGradientDirective, IgxProgressBarModule, IgxProgressBarTextTemplateDirective, IgxProgressType, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderModule, IgxQueryBuilderSearchValueTemplateDirective, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowAddTextDirective, IgxRowCollapsedIndicatorDirective, IgxRowDirective, IgxRowDragGhostDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTextDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandComponent, IgxRowSelectorDirective, IgxScrollInertiaDirective, IgxScrollInertiaModule, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSimpleComboComponent, IgxSimpleComboModule, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective, IgxSorting, IgxSplitBarComponent, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStepActiveIndicatorDirective, IgxStepCompletedIndicatorDirective, IgxStepComponent, IgxStepContentDirective, IgxStepIndicatorDirective, IgxStepInvalidIndicatorDirective, IgxStepSubtitleDirective, IgxStepTitleDirective, IgxStepType, IgxStepperComponent, IgxStepperModule, IgxStepperOrientation, IgxStepperTitlePosition, IgxStringFilteringOperand, IgxSuffixDirective, IgxSummaryOperand, IgxSummaryRow, IgxSummaryTemplateDirective, IgxSwitchComponent, IgxSwitchModule, IgxTabContentComponent, IgxTabHeaderComponent, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabsAlignment, IgxTabsComponent, IgxTabsModule, IgxTemplateOutletDirective, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextHighlightService, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimeItemDirective, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridComponent, IgxTreeGridGroupByAreaComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectionType, IgxYearsViewComponent, IndigoIcons, InputResourceStringsEN, LabelPosition, ListResourceStringsEN, MarkdownPipe, NoOpScrollStrategy, NoopFilteringStrategy, NoopPivotDimensionsStrategy, NoopSortingStrategy, PaginatorResourceStringsEN, PagingError, PickerInteractionMode, PivotColumnDimensionsStrategy, PivotDimensionType, PivotRowDimensionsStrategy, PivotRowLayoutType, PivotSummaryPosition, Point, QueryBuilderResourceStringsEN, RadioGroupAlignment, RelativePosition, RelativePositionStrategy, RowPinningPosition, ScrollStrategy, Size, SliderHandle, SortingDirection, SplitterType, THEME_TOKEN, ThemeToken, TickLabelsOrientation, TicksOrientation, TimePickerResourceStringsEN, TooltipPositionStrategy, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, TreeResourceStringsEN, VerticalAlignment, VerticalAnimationType, WEEKDAYS, changei18n, comboIgnoreDiacriticsFilter, igxI18N, isLeap, monthRange, range, weekDay };
99060
99376
  //# sourceMappingURL=igniteui-angular.mjs.map