igniteui-angular 12.2.6 → 12.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +16 -0
- package/README.md +12 -11
- package/bundles/igniteui-angular.umd.js +1810 -1419
- package/bundles/igniteui-angular.umd.js.map +1 -1
- package/esm2015/igniteui-angular.js +97 -97
- package/esm2015/lib/accordion/accordion.component.js +23 -6
- package/esm2015/lib/combo/combo-dropdown.component.js +9 -4
- package/esm2015/lib/combo/combo-item.component.js +4 -3
- package/esm2015/lib/combo/combo.api.js +3 -3
- package/esm2015/lib/combo/combo.common.js +1016 -2
- package/esm2015/lib/combo/combo.component.js +91 -1135
- package/esm2015/lib/combo/combo.pipes.js +3 -3
- package/esm2015/lib/data-operations/sorting-strategy.js +12 -3
- package/esm2015/lib/grids/filtering/base/grid-filtering-row.component.js +12 -4
- package/esm2015/lib/grids/filtering/excel-style/excel-style-date-expression.component.js +2 -2
- package/esm2015/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.js +2 -2
- package/esm2015/lib/grids/grid-base.directive.js +2 -2
- package/esm2015/lib/grids/tree-grid/tree-grid.component.js +3 -3
- package/esm2015/lib/simple-combo/public_api.js +2 -0
- package/esm2015/lib/simple-combo/simple-combo.component.js +390 -0
- package/esm2015/public_api.js +2 -1
- package/fesm2015/igniteui-angular.js +1373 -1002
- package/fesm2015/igniteui-angular.js.map +1 -1
- package/igniteui-angular.d.ts +96 -96
- package/igniteui-angular.metadata.json +1 -1
- package/lib/accordion/accordion.component.d.ts +1 -0
- package/lib/combo/combo-dropdown.component.d.ts +2 -0
- package/lib/combo/combo-item.component.d.ts +2 -0
- package/lib/combo/combo.common.d.ts +730 -4
- package/lib/combo/combo.component.d.ts +38 -791
- package/lib/combo/combo.pipes.d.ts +1 -1
- package/lib/simple-combo/public_api.d.ts +1 -0
- package/lib/simple-combo/simple-combo.component.d.ts +126 -0
- package/migrations/update-13_0_0/changes/members.json +26 -0
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/schematics/tsconfig.tsbuildinfo +1 -1
|
@@ -1711,8 +1711,17 @@ class IgxSorting {
|
|
|
1711
1711
|
fullResult.data.push(groupItem);
|
|
1712
1712
|
}
|
|
1713
1713
|
if (expanded) {
|
|
1714
|
-
|
|
1715
|
-
|
|
1714
|
+
// Replaced object destructing as in a single big group scenario
|
|
1715
|
+
// it hits the max number of arguments for a function the underlying JS engine
|
|
1716
|
+
// supports.
|
|
1717
|
+
let j = fullResult.metadata.length - group.length;
|
|
1718
|
+
for (; j < fullResult.metadata.length; j++) {
|
|
1719
|
+
metadata.push(fullResult.metadata[j]);
|
|
1720
|
+
}
|
|
1721
|
+
j = fullResult.data.length - group.length;
|
|
1722
|
+
for (; j < fullResult.data.length; j++) {
|
|
1723
|
+
result.push(fullResult.data[j]);
|
|
1724
|
+
}
|
|
1716
1725
|
}
|
|
1717
1726
|
}
|
|
1718
1727
|
i += group.length;
|
|
@@ -27577,6 +27586,7 @@ class IgxAccordionComponent {
|
|
|
27577
27586
|
/** @hidden @internal **/
|
|
27578
27587
|
ngAfterViewInit() {
|
|
27579
27588
|
this._expandedPanels = new Set(this._panels.filter(panel => !panel.collapsed));
|
|
27589
|
+
this._expandingPanels = new Set();
|
|
27580
27590
|
this._panels.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {
|
|
27581
27591
|
this.subToChanges();
|
|
27582
27592
|
});
|
|
@@ -27679,6 +27689,7 @@ class IgxAccordionComponent {
|
|
|
27679
27689
|
this._panels.forEach(panel => {
|
|
27680
27690
|
panel.contentExpanded.pipe(takeUntil(this._unsubChildren$)).subscribe((args) => {
|
|
27681
27691
|
this._expandedPanels.add(args.owner);
|
|
27692
|
+
this._expandingPanels.delete(args.owner);
|
|
27682
27693
|
const evArgs = Object.assign(Object.assign({}, args), { owner: this, panel: args.owner });
|
|
27683
27694
|
this.panelExpanded.emit(evArgs);
|
|
27684
27695
|
});
|
|
@@ -27686,21 +27697,36 @@ class IgxAccordionComponent {
|
|
|
27686
27697
|
if (args.cancel) {
|
|
27687
27698
|
return;
|
|
27688
27699
|
}
|
|
27700
|
+
const evArgs = Object.assign(Object.assign({}, args), { owner: this, panel: args.owner });
|
|
27701
|
+
this.panelExpanding.emit(evArgs);
|
|
27702
|
+
if (evArgs.cancel) {
|
|
27703
|
+
args.cancel = true;
|
|
27704
|
+
return;
|
|
27705
|
+
}
|
|
27689
27706
|
if (this.singleBranchExpand) {
|
|
27690
27707
|
this._expandedPanels.forEach(p => {
|
|
27691
27708
|
if (!p.header.disabled) {
|
|
27692
27709
|
p.collapse();
|
|
27693
27710
|
}
|
|
27694
27711
|
});
|
|
27695
|
-
|
|
27696
|
-
|
|
27697
|
-
|
|
27698
|
-
|
|
27699
|
-
|
|
27712
|
+
this._expandingPanels.forEach(p => {
|
|
27713
|
+
var _a, _b;
|
|
27714
|
+
if (!p.header.disabled) {
|
|
27715
|
+
if (!p.animationSettings.closeAnimation) {
|
|
27716
|
+
(_a = p.openAnimationPlayer) === null || _a === void 0 ? void 0 : _a.reset();
|
|
27717
|
+
}
|
|
27718
|
+
if (!p.animationSettings.openAnimation) {
|
|
27719
|
+
(_b = p.closeAnimationPlayer) === null || _b === void 0 ? void 0 : _b.reset();
|
|
27720
|
+
}
|
|
27721
|
+
p.collapse();
|
|
27722
|
+
}
|
|
27723
|
+
});
|
|
27724
|
+
this._expandingPanels.add(args.owner);
|
|
27700
27725
|
}
|
|
27701
27726
|
});
|
|
27702
27727
|
panel.contentCollapsed.pipe(takeUntil(this._unsubChildren$)).subscribe((args) => {
|
|
27703
27728
|
this._expandedPanels.delete(args.owner);
|
|
27729
|
+
this._expandingPanels.delete(args.owner);
|
|
27704
27730
|
const evArgs = Object.assign(Object.assign({}, args), { owner: this, panel: args.owner });
|
|
27705
27731
|
this.panelCollapsed.emit(evArgs);
|
|
27706
27732
|
});
|
|
@@ -34871,10 +34897,10 @@ class IgxComboAPIService {
|
|
|
34871
34897
|
return;
|
|
34872
34898
|
}
|
|
34873
34899
|
if (!selected) {
|
|
34874
|
-
this.combo.
|
|
34900
|
+
this.combo.select([itemID], false, event);
|
|
34875
34901
|
}
|
|
34876
34902
|
else {
|
|
34877
|
-
this.combo.
|
|
34903
|
+
this.combo.deselect([itemID], event);
|
|
34878
34904
|
}
|
|
34879
34905
|
}
|
|
34880
34906
|
is_item_selected(itemID) {
|
|
@@ -34972,7 +34998,7 @@ class IgxComboItemComponent extends IgxDropDownItemComponent {
|
|
|
34972
34998
|
IgxComboItemComponent.decorators = [
|
|
34973
34999
|
{ type: Component, args: [{
|
|
34974
35000
|
selector: 'igx-combo-item',
|
|
34975
|
-
template: "<ng-container *ngIf=\"!isHeader\">\n <igx-checkbox [checked]=\"selected\" [disableRipple]=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n</ng-container>\n<span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n"
|
|
35001
|
+
template: "<ng-container *ngIf=\"!isHeader && !singleMode\">\n <igx-checkbox [checked]=\"selected\" [disableRipple]=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n</ng-container>\n<span class=\"igx-drop-down__inner\"><ng-content></ng-content></span>\n"
|
|
34976
35002
|
},] }
|
|
34977
35003
|
];
|
|
34978
35004
|
IgxComboItemComponent.ctorParameters = () => [
|
|
@@ -34982,311 +35008,25 @@ IgxComboItemComponent.ctorParameters = () => [
|
|
|
34982
35008
|
{ type: IgxSelectionAPIService, decorators: [{ type: Inject, args: [IgxSelectionAPIService,] }] }
|
|
34983
35009
|
];
|
|
34984
35010
|
IgxComboItemComponent.propDecorators = {
|
|
34985
|
-
itemHeight: [{ type: Input }, { type: HostBinding, args: ['style.height.px',] }]
|
|
35011
|
+
itemHeight: [{ type: Input }, { type: HostBinding, args: ['style.height.px',] }],
|
|
35012
|
+
singleMode: [{ type: Input }]
|
|
34986
35013
|
};
|
|
34987
35014
|
|
|
34988
35015
|
const IGX_COMBO_COMPONENT = new InjectionToken('IgxComboComponentToken');
|
|
34989
|
-
|
|
35016
|
+
let NEXT_ID$c = 0;
|
|
34990
35017
|
/**
|
|
34991
35018
|
* @hidden
|
|
35019
|
+
* The default number of items that should be in the combo's
|
|
35020
|
+
* drop-down list if no `[itemsMaxHeight]` is specified
|
|
34992
35021
|
*/
|
|
34993
|
-
|
|
34994
|
-
|
|
34995
|
-
|
|
34996
|
-
|
|
34997
|
-
|
|
34998
|
-
|
|
34999
|
-
/**
|
|
35000
|
-
* @inheritdoc
|
|
35001
|
-
*/
|
|
35002
|
-
clicked(event) {
|
|
35003
|
-
this.comboAPI.disableTransitions = false;
|
|
35004
|
-
this.comboAPI.add_custom_item();
|
|
35005
|
-
}
|
|
35006
|
-
}
|
|
35007
|
-
IgxComboAddItemComponent.decorators = [
|
|
35008
|
-
{ type: Component, args: [{
|
|
35009
|
-
selector: 'igx-combo-add-item',
|
|
35010
|
-
template: '<ng-content></ng-content>',
|
|
35011
|
-
providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }]
|
|
35012
|
-
},] }
|
|
35013
|
-
];
|
|
35014
|
-
|
|
35015
|
-
/** @hidden */
|
|
35016
|
-
class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
35017
|
-
constructor(elementRef, cdr, platform, selection, combo, comboAPI, _displayDensityOptions) {
|
|
35018
|
-
super(elementRef, cdr, platform, selection, _displayDensityOptions);
|
|
35019
|
-
this.elementRef = elementRef;
|
|
35020
|
-
this.cdr = cdr;
|
|
35021
|
-
this.platform = platform;
|
|
35022
|
-
this.selection = selection;
|
|
35023
|
-
this.combo = combo;
|
|
35024
|
-
this.comboAPI = comboAPI;
|
|
35025
|
-
this._displayDensityOptions = _displayDensityOptions;
|
|
35026
|
-
/**
|
|
35027
|
-
* @hidden
|
|
35028
|
-
* @internal
|
|
35029
|
-
*/
|
|
35030
|
-
this.children = null;
|
|
35031
|
-
this.scrollHandler = () => {
|
|
35032
|
-
this.comboAPI.disableTransitions = true;
|
|
35033
|
-
};
|
|
35034
|
-
}
|
|
35035
|
-
/** @hidden @internal */
|
|
35036
|
-
get scrollContainer() {
|
|
35037
|
-
return this.virtDir.dc.location.nativeElement;
|
|
35038
|
-
}
|
|
35039
|
-
get isScrolledToLast() {
|
|
35040
|
-
const scrollTop = this.virtDir.scrollPosition;
|
|
35041
|
-
const scrollHeight = this.virtDir.getScroll().scrollHeight;
|
|
35042
|
-
return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
|
|
35043
|
-
}
|
|
35044
|
-
get lastVisibleIndex() {
|
|
35045
|
-
return this.combo.totalItemCount ?
|
|
35046
|
-
Math.floor(this.combo.itemsMaxHeight / this.combo.itemHeight) :
|
|
35047
|
-
this.items.length - 1;
|
|
35048
|
-
}
|
|
35049
|
-
get sortedChildren() {
|
|
35050
|
-
if (this.children !== undefined) {
|
|
35051
|
-
return this.children.toArray()
|
|
35052
|
-
.sort((a, b) => a.index - b.index);
|
|
35053
|
-
}
|
|
35054
|
-
return null;
|
|
35055
|
-
}
|
|
35056
|
-
/**
|
|
35057
|
-
* Get all non-header items
|
|
35058
|
-
*
|
|
35059
|
-
* ```typescript
|
|
35060
|
-
* let myDropDownItems = this.dropdown.items;
|
|
35061
|
-
* ```
|
|
35062
|
-
*/
|
|
35063
|
-
get items() {
|
|
35064
|
-
const items = [];
|
|
35065
|
-
if (this.children !== undefined) {
|
|
35066
|
-
const sortedChildren = this.sortedChildren;
|
|
35067
|
-
for (const child of sortedChildren) {
|
|
35068
|
-
if (!child.isHeader) {
|
|
35069
|
-
items.push(child);
|
|
35070
|
-
}
|
|
35071
|
-
}
|
|
35072
|
-
}
|
|
35073
|
-
return items;
|
|
35074
|
-
}
|
|
35075
|
-
/**
|
|
35076
|
-
* @hidden @internal
|
|
35077
|
-
*/
|
|
35078
|
-
onFocus() {
|
|
35079
|
-
this.focusedItem = this._focusedItem || this.items[0];
|
|
35080
|
-
}
|
|
35081
|
-
/**
|
|
35082
|
-
* @hidden @internal
|
|
35083
|
-
*/
|
|
35084
|
-
onBlur(_evt) {
|
|
35085
|
-
this.focusedItem = null;
|
|
35086
|
-
}
|
|
35087
|
-
/**
|
|
35088
|
-
* @hidden @internal
|
|
35089
|
-
*/
|
|
35090
|
-
onToggleOpened() {
|
|
35091
|
-
this.opened.emit();
|
|
35092
|
-
}
|
|
35093
|
-
/**
|
|
35094
|
-
* @hidden
|
|
35095
|
-
*/
|
|
35096
|
-
navigateFirst() {
|
|
35097
|
-
this.navigateItem(this.virtDir.igxForOf.findIndex(e => !e.isHeader));
|
|
35098
|
-
}
|
|
35099
|
-
/**
|
|
35100
|
-
* @hidden
|
|
35101
|
-
*/
|
|
35102
|
-
navigatePrev() {
|
|
35103
|
-
if (this._focusedItem && this._focusedItem.index === 0 && this.virtDir.state.startIndex === 0) {
|
|
35104
|
-
this.combo.focusSearchInput(false);
|
|
35105
|
-
}
|
|
35106
|
-
else {
|
|
35107
|
-
super.navigatePrev();
|
|
35108
|
-
}
|
|
35109
|
-
}
|
|
35110
|
-
/**
|
|
35111
|
-
* @hidden
|
|
35112
|
-
*/
|
|
35113
|
-
navigateNext() {
|
|
35114
|
-
const lastIndex = this.combo.totalItemCount ? this.combo.totalItemCount - 1 : this.virtDir.igxForOf.length - 1;
|
|
35115
|
-
if (this._focusedItem && this._focusedItem.index === lastIndex) {
|
|
35116
|
-
this.focusAddItemButton();
|
|
35117
|
-
}
|
|
35118
|
-
else {
|
|
35119
|
-
super.navigateNext();
|
|
35120
|
-
}
|
|
35121
|
-
}
|
|
35122
|
-
/**
|
|
35123
|
-
* @hidden @internal
|
|
35124
|
-
*/
|
|
35125
|
-
selectItem(item) {
|
|
35126
|
-
if (item === null || item === undefined) {
|
|
35127
|
-
return;
|
|
35128
|
-
}
|
|
35129
|
-
this.comboAPI.set_selected_item(item.itemID);
|
|
35130
|
-
this._focusedItem = item;
|
|
35131
|
-
}
|
|
35132
|
-
/**
|
|
35133
|
-
* @hidden @internal
|
|
35134
|
-
*/
|
|
35135
|
-
updateScrollPosition() {
|
|
35136
|
-
this.virtDir.getScroll().scrollTop = this._scrollPosition;
|
|
35137
|
-
}
|
|
35138
|
-
/**
|
|
35139
|
-
* @hidden @internal
|
|
35140
|
-
*/
|
|
35141
|
-
onItemActionKey(key) {
|
|
35142
|
-
switch (key) {
|
|
35143
|
-
case DropDownActionKey.ENTER:
|
|
35144
|
-
this.handleEnter();
|
|
35145
|
-
break;
|
|
35146
|
-
case DropDownActionKey.SPACE:
|
|
35147
|
-
this.handleSpace();
|
|
35148
|
-
break;
|
|
35149
|
-
case DropDownActionKey.ESCAPE:
|
|
35150
|
-
this.close();
|
|
35151
|
-
}
|
|
35152
|
-
}
|
|
35153
|
-
ngAfterViewInit() {
|
|
35154
|
-
this.virtDir.getScroll().addEventListener('scroll', this.scrollHandler);
|
|
35155
|
-
}
|
|
35156
|
-
/**
|
|
35157
|
-
* @hidden @internal
|
|
35158
|
-
*/
|
|
35159
|
-
ngOnDestroy() {
|
|
35160
|
-
this.virtDir.getScroll().removeEventListener('scroll', this.scrollHandler);
|
|
35161
|
-
this.destroy$.next(true);
|
|
35162
|
-
this.destroy$.complete();
|
|
35163
|
-
}
|
|
35164
|
-
scrollToHiddenItem(_newItem) { }
|
|
35165
|
-
handleEnter() {
|
|
35166
|
-
if (this.isAddItemFocused()) {
|
|
35167
|
-
this.combo.addItemToCollection();
|
|
35168
|
-
}
|
|
35169
|
-
else {
|
|
35170
|
-
this.close();
|
|
35171
|
-
}
|
|
35172
|
-
}
|
|
35173
|
-
handleSpace() {
|
|
35174
|
-
if (this.isAddItemFocused()) {
|
|
35175
|
-
return;
|
|
35176
|
-
}
|
|
35177
|
-
else {
|
|
35178
|
-
this.selectItem(this.focusedItem);
|
|
35179
|
-
}
|
|
35180
|
-
}
|
|
35181
|
-
isAddItemFocused() {
|
|
35182
|
-
return this.focusedItem instanceof IgxComboAddItemComponent;
|
|
35183
|
-
}
|
|
35184
|
-
focusAddItemButton() {
|
|
35185
|
-
if (this.combo.isAddButtonVisible()) {
|
|
35186
|
-
this.focusedItem = this.items[this.items.length - 1];
|
|
35187
|
-
}
|
|
35188
|
-
}
|
|
35189
|
-
}
|
|
35190
|
-
IgxComboDropDownComponent.decorators = [
|
|
35191
|
-
{ type: Component, args: [{
|
|
35192
|
-
selector: 'igx-combo-drop-down',
|
|
35193
|
-
template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\nigxToggle\n(appended)=\"onToggleContentAppended($event)\"\n(opening)=\"onToggleOpening($event)\" (opened)=\"onToggleOpened()\"\n(closing)=\"onToggleClosing($event)\" (closed)=\"onToggleClosed()\">\n <div class=\"igx-drop-down__list-scroll\" #scrollContainer [attr.id]=\"this.listId\" role=\"listbox\" [attr.aria-label]=\"this.listId\"\n [style.height]=\"height\"\n [style.maxHeight]=\"maxHeight\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n</div>\n",
|
|
35194
|
-
providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }]
|
|
35195
|
-
},] }
|
|
35196
|
-
];
|
|
35197
|
-
IgxComboDropDownComponent.ctorParameters = () => [
|
|
35198
|
-
{ type: ElementRef },
|
|
35199
|
-
{ type: ChangeDetectorRef },
|
|
35200
|
-
{ type: PlatformUtil },
|
|
35201
|
-
{ type: IgxSelectionAPIService },
|
|
35202
|
-
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] },
|
|
35203
|
-
{ type: IgxComboAPIService },
|
|
35204
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] }
|
|
35205
|
-
];
|
|
35206
|
-
IgxComboDropDownComponent.propDecorators = {
|
|
35207
|
-
children: [{ type: ContentChildren, args: [IgxComboItemComponent, { descendants: true },] }]
|
|
35022
|
+
const itemsInContainer = 10; // TODO: make private readonly
|
|
35023
|
+
/** @hidden @internal */
|
|
35024
|
+
const ItemHeights = {
|
|
35025
|
+
comfortable: 40,
|
|
35026
|
+
cosy: 32,
|
|
35027
|
+
compact: 28,
|
|
35208
35028
|
};
|
|
35209
|
-
|
|
35210
|
-
/**
|
|
35211
|
-
* @hidden
|
|
35212
|
-
*/
|
|
35213
|
-
class IgxComboFilteringPipe {
|
|
35214
|
-
transform(collection, searchValue, displayKey, shouldFilter, filteringOptions) {
|
|
35215
|
-
if (!collection) {
|
|
35216
|
-
return [];
|
|
35217
|
-
}
|
|
35218
|
-
if (!searchValue || !shouldFilter) {
|
|
35219
|
-
return collection;
|
|
35220
|
-
}
|
|
35221
|
-
else {
|
|
35222
|
-
const searchTerm = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
|
|
35223
|
-
if (displayKey != null) {
|
|
35224
|
-
return collection.filter(e => filteringOptions.caseSensitive ? e[displayKey].includes(searchTerm) :
|
|
35225
|
-
e[displayKey].toString().toLowerCase().includes(searchTerm));
|
|
35226
|
-
}
|
|
35227
|
-
else {
|
|
35228
|
-
return collection.filter(e => filteringOptions.caseSensitive ? e.includes(searchTerm) :
|
|
35229
|
-
e.toLowerCase().includes(searchTerm));
|
|
35230
|
-
}
|
|
35231
|
-
}
|
|
35232
|
-
}
|
|
35233
|
-
}
|
|
35234
|
-
IgxComboFilteringPipe.decorators = [
|
|
35235
|
-
{ type: Pipe, args: [{
|
|
35236
|
-
name: 'comboFiltering'
|
|
35237
|
-
},] }
|
|
35238
|
-
];
|
|
35239
|
-
/**
|
|
35240
|
-
* @hidden
|
|
35241
|
-
*/
|
|
35242
|
-
class IgxComboGroupingPipe {
|
|
35243
|
-
constructor(combo) {
|
|
35244
|
-
this.combo = combo;
|
|
35245
|
-
}
|
|
35246
|
-
transform(collection, groupKey, valueKey) {
|
|
35247
|
-
this.combo.filteredData = collection;
|
|
35248
|
-
if ((!groupKey && groupKey !== 0) || !collection.length) {
|
|
35249
|
-
return collection;
|
|
35250
|
-
}
|
|
35251
|
-
const sorted = DataUtil.sort(cloneArray(collection), [{
|
|
35252
|
-
fieldName: groupKey,
|
|
35253
|
-
dir: SortingDirection.Asc,
|
|
35254
|
-
ignoreCase: true,
|
|
35255
|
-
strategy: DefaultSortingStrategy.instance()
|
|
35256
|
-
}]);
|
|
35257
|
-
const data = cloneArray(sorted);
|
|
35258
|
-
let inserts = 0;
|
|
35259
|
-
let currentHeader = null;
|
|
35260
|
-
for (let i = 0; i < sorted.length; i++) {
|
|
35261
|
-
let insertFlag = 0;
|
|
35262
|
-
if (currentHeader !== sorted[i][groupKey]) {
|
|
35263
|
-
currentHeader = sorted[i][groupKey];
|
|
35264
|
-
insertFlag = 1;
|
|
35265
|
-
}
|
|
35266
|
-
if (insertFlag) {
|
|
35267
|
-
data.splice(i + inserts, 0, {
|
|
35268
|
-
[valueKey]: currentHeader,
|
|
35269
|
-
[groupKey]: currentHeader,
|
|
35270
|
-
isHeader: true
|
|
35271
|
-
});
|
|
35272
|
-
inserts++;
|
|
35273
|
-
}
|
|
35274
|
-
}
|
|
35275
|
-
return data;
|
|
35276
|
-
}
|
|
35277
|
-
}
|
|
35278
|
-
IgxComboGroupingPipe.decorators = [
|
|
35279
|
-
{ type: Pipe, args: [{
|
|
35280
|
-
name: 'comboGrouping'
|
|
35281
|
-
},] }
|
|
35282
|
-
];
|
|
35283
|
-
IgxComboGroupingPipe.ctorParameters = () => [
|
|
35284
|
-
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] }
|
|
35285
|
-
];
|
|
35286
|
-
|
|
35287
|
-
/**
|
|
35288
|
-
* @hidden
|
|
35289
|
-
*/
|
|
35029
|
+
/** @hidden @internal */
|
|
35290
35030
|
var DataTypes;
|
|
35291
35031
|
(function (DataTypes) {
|
|
35292
35032
|
DataTypes["EMPTY"] = "empty";
|
|
@@ -35294,20 +35034,6 @@ var DataTypes;
|
|
|
35294
35034
|
DataTypes["COMPLEX"] = "complex";
|
|
35295
35035
|
DataTypes["PRIMARYKEY"] = "valueKey";
|
|
35296
35036
|
})(DataTypes || (DataTypes = {}));
|
|
35297
|
-
/**
|
|
35298
|
-
* @hidden
|
|
35299
|
-
*/
|
|
35300
|
-
const ItemHeights = {
|
|
35301
|
-
comfortable: 40,
|
|
35302
|
-
cosy: 32,
|
|
35303
|
-
compact: 28,
|
|
35304
|
-
};
|
|
35305
|
-
/**
|
|
35306
|
-
* @hidden
|
|
35307
|
-
* The default number of items that should be in the combo's
|
|
35308
|
-
* drop-down list if no `[itemsMaxHeight]` is specified
|
|
35309
|
-
*/
|
|
35310
|
-
const itemsInContainer = 10;
|
|
35311
35037
|
var IgxComboState;
|
|
35312
35038
|
(function (IgxComboState) {
|
|
35313
35039
|
/**
|
|
@@ -35323,52 +35049,31 @@ var IgxComboState;
|
|
|
35323
35049
|
*/
|
|
35324
35050
|
IgxComboState[IgxComboState["INVALID"] = 2] = "INVALID";
|
|
35325
35051
|
})(IgxComboState || (IgxComboState = {}));
|
|
35326
|
-
|
|
35327
|
-
|
|
35328
|
-
*
|
|
35329
|
-
* @hidden
|
|
35330
|
-
*/
|
|
35331
|
-
const diffInSets = (set1, set2) => {
|
|
35332
|
-
const results = [];
|
|
35333
|
-
set1.forEach(entry => {
|
|
35334
|
-
if (!set2.has(entry)) {
|
|
35335
|
-
results.push(entry);
|
|
35336
|
-
}
|
|
35337
|
-
});
|
|
35338
|
-
return results;
|
|
35339
|
-
};
|
|
35340
|
-
const ɵ0$1 = diffInSets;
|
|
35341
|
-
let NEXT_ID$c = 0;
|
|
35342
|
-
/**
|
|
35343
|
-
* Represents a drop-down list that provides editable functionalities, allowing users to choose an option from a predefined list.
|
|
35344
|
-
*
|
|
35345
|
-
* @igxModule IgxComboModule
|
|
35346
|
-
* @igxTheme igx-combo-theme
|
|
35347
|
-
* @igxKeywords combobox, combo selection
|
|
35348
|
-
* @igxGroup Grids & Lists
|
|
35349
|
-
*
|
|
35350
|
-
* @remarks
|
|
35351
|
-
* It provides the ability to filter items as well as perform single or multiple seleciton with the provided data.
|
|
35352
|
-
* Additionally, it exposes keyboard navigation and custom styling capabilities.
|
|
35353
|
-
* @example
|
|
35354
|
-
* ```html
|
|
35355
|
-
* <igx-combo [itemsMaxHeight]="250" [data]="locationData"
|
|
35356
|
-
* [displayKey]="'field'" [valueKey]="'field'"
|
|
35357
|
-
* placeholder="Location(s)" searchPlaceholder="Search...">
|
|
35358
|
-
* </igx-combo>
|
|
35359
|
-
* ```
|
|
35360
|
-
*/
|
|
35361
|
-
class IgxComboComponent extends DisplayDensityBase {
|
|
35362
|
-
constructor(elementRef, cdr, selection, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
|
|
35052
|
+
class IgxComboBaseDirective extends DisplayDensityBase {
|
|
35053
|
+
constructor(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
|
|
35363
35054
|
super(_displayDensityOptions);
|
|
35364
35055
|
this.elementRef = elementRef;
|
|
35365
35056
|
this.cdr = cdr;
|
|
35366
|
-
this.
|
|
35057
|
+
this.selectionService = selectionService;
|
|
35367
35058
|
this.comboAPI = comboAPI;
|
|
35368
35059
|
this._iconService = _iconService;
|
|
35369
35060
|
this._displayDensityOptions = _displayDensityOptions;
|
|
35370
35061
|
this._inputGroupType = _inputGroupType;
|
|
35371
35062
|
this._injector = _injector;
|
|
35063
|
+
/**
|
|
35064
|
+
* Defines whether the caseSensitive icon should be shown in the search input
|
|
35065
|
+
*
|
|
35066
|
+
* ```typescript
|
|
35067
|
+
* // get
|
|
35068
|
+
* let myComboShowSearchCaseIcon = this.combo.showSearchCaseIcon;
|
|
35069
|
+
* ```
|
|
35070
|
+
*
|
|
35071
|
+
* ```html
|
|
35072
|
+
* <!--set-->
|
|
35073
|
+
* <igx-combo [showSearchCaseIcon]='true'></igx-combo>
|
|
35074
|
+
* ```
|
|
35075
|
+
*/
|
|
35076
|
+
this.showSearchCaseIcon = false;
|
|
35372
35077
|
/**
|
|
35373
35078
|
* Set custom overlay settings that control how the combo's list of items is displayed.
|
|
35374
35079
|
* Set:
|
|
@@ -35387,9 +35092,121 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35387
35092
|
*/
|
|
35388
35093
|
this.overlaySettings = null;
|
|
35389
35094
|
/**
|
|
35390
|
-
*
|
|
35095
|
+
* Gets/gets combo id.
|
|
35096
|
+
*
|
|
35097
|
+
* ```typescript
|
|
35098
|
+
* // get
|
|
35099
|
+
* let id = this.combo.id;
|
|
35100
|
+
* ```
|
|
35101
|
+
*
|
|
35102
|
+
* ```html
|
|
35103
|
+
* <!--set-->
|
|
35104
|
+
* <igx-combo [id]='combo1'></igx-combo>
|
|
35105
|
+
* ```
|
|
35391
35106
|
*/
|
|
35392
|
-
this.
|
|
35107
|
+
this.id = `igx-combo-${NEXT_ID$c++}`;
|
|
35108
|
+
/**
|
|
35109
|
+
* Controls whether custom values can be added to the collection
|
|
35110
|
+
*
|
|
35111
|
+
* ```typescript
|
|
35112
|
+
* // get
|
|
35113
|
+
* let comboAllowsCustomValues = this.combo.allowCustomValues;
|
|
35114
|
+
* ```
|
|
35115
|
+
*
|
|
35116
|
+
* ```html
|
|
35117
|
+
* <!--set-->
|
|
35118
|
+
* <igx-combo [allowCustomValues]='true'></igx-combo>
|
|
35119
|
+
* ```
|
|
35120
|
+
*/
|
|
35121
|
+
this.allowCustomValues = false;
|
|
35122
|
+
/**
|
|
35123
|
+
* Determines which column in the data source is used to determine the value.
|
|
35124
|
+
*
|
|
35125
|
+
* ```typescript
|
|
35126
|
+
* // get
|
|
35127
|
+
* let myComboValueKey = this.combo.valueKey;
|
|
35128
|
+
* ```
|
|
35129
|
+
*
|
|
35130
|
+
* ```html
|
|
35131
|
+
* <!--set-->
|
|
35132
|
+
* <igx-combo [valueKey]='myKey'></igx-combo>
|
|
35133
|
+
* ```
|
|
35134
|
+
*/
|
|
35135
|
+
this.valueKey = null;
|
|
35136
|
+
/**
|
|
35137
|
+
* An @Input property that enabled/disables filtering in the list. The default is `true`.
|
|
35138
|
+
* ```html
|
|
35139
|
+
* <igx-combo [filterable]="false">
|
|
35140
|
+
* ```
|
|
35141
|
+
*/
|
|
35142
|
+
this.filterable = true;
|
|
35143
|
+
/** @hidden @internal */
|
|
35144
|
+
this.cssClass = 'igx-combo'; // Independent of display density for the time being
|
|
35145
|
+
/** @hidden @internal */
|
|
35146
|
+
this.role = 'combobox';
|
|
35147
|
+
/**
|
|
35148
|
+
* An @Input property that enabled/disables combo. The default is `false`.
|
|
35149
|
+
* ```html
|
|
35150
|
+
* <igx-combo [disabled]="'true'">
|
|
35151
|
+
* ```
|
|
35152
|
+
*/
|
|
35153
|
+
this.disabled = false;
|
|
35154
|
+
/**
|
|
35155
|
+
* Emitted before the dropdown is opened
|
|
35156
|
+
*
|
|
35157
|
+
* ```html
|
|
35158
|
+
* <igx-combo opening='handleOpening($event)'></igx-combo>
|
|
35159
|
+
* ```
|
|
35160
|
+
*/
|
|
35161
|
+
this.opening = new EventEmitter();
|
|
35162
|
+
/**
|
|
35163
|
+
* Emitted after the dropdown is opened
|
|
35164
|
+
*
|
|
35165
|
+
* ```html
|
|
35166
|
+
* <igx-combo (opened)='handleOpened($event)'></igx-combo>
|
|
35167
|
+
* ```
|
|
35168
|
+
*/
|
|
35169
|
+
this.opened = new EventEmitter();
|
|
35170
|
+
/**
|
|
35171
|
+
* Emitted before the dropdown is closed
|
|
35172
|
+
*
|
|
35173
|
+
* ```html
|
|
35174
|
+
* <igx-combo (closing)='handleClosing($event)'></igx-combo>
|
|
35175
|
+
* ```
|
|
35176
|
+
*/
|
|
35177
|
+
this.closing = new EventEmitter();
|
|
35178
|
+
/**
|
|
35179
|
+
* Emitted after the dropdown is closed
|
|
35180
|
+
*
|
|
35181
|
+
* ```html
|
|
35182
|
+
* <igx-combo (closed)='handleClosed($event)'></igx-combo>
|
|
35183
|
+
* ```
|
|
35184
|
+
*/
|
|
35185
|
+
this.closed = new EventEmitter();
|
|
35186
|
+
/**
|
|
35187
|
+
* Emitted when an item is being added to the data collection
|
|
35188
|
+
*
|
|
35189
|
+
* ```html
|
|
35190
|
+
* <igx-combo (addition)='handleAdditionEvent($event)'></igx-combo>
|
|
35191
|
+
* ```
|
|
35192
|
+
*/
|
|
35193
|
+
this.addition = new EventEmitter();
|
|
35194
|
+
/**
|
|
35195
|
+
* Emitted when the value of the search input changes (e.g. typing, pasting, clear, etc.)
|
|
35196
|
+
*
|
|
35197
|
+
* ```html
|
|
35198
|
+
* <igx-combo (searchInputUpdate)='handleSearchInputEvent($event)'></igx-combo>
|
|
35199
|
+
* ```
|
|
35200
|
+
*/
|
|
35201
|
+
this.searchInputUpdate = new EventEmitter();
|
|
35202
|
+
/**
|
|
35203
|
+
* Emitted when new chunk of data is loaded from the virtualization
|
|
35204
|
+
*
|
|
35205
|
+
* ```html
|
|
35206
|
+
* <igx-combo (dataPreLoad)='handleDataPreloadEvent($event)'></igx-combo>
|
|
35207
|
+
* ```
|
|
35208
|
+
*/
|
|
35209
|
+
this.dataPreLoad = new EventEmitter();
|
|
35393
35210
|
/**
|
|
35394
35211
|
* The custom template, if any, that should be used when rendering ITEMS in the combo list
|
|
35395
35212
|
*
|
|
@@ -35553,207 +35370,34 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35553
35370
|
* ```
|
|
35554
35371
|
*/
|
|
35555
35372
|
this.clearIconTemplate = null;
|
|
35556
|
-
/**
|
|
35557
|
-
|
|
35558
|
-
*
|
|
35559
|
-
* ```html
|
|
35560
|
-
* <igx-combo (selectionChanging)='handleSelection()'></igx-combo>
|
|
35561
|
-
* ```
|
|
35562
|
-
*/
|
|
35563
|
-
this.selectionChanging = new EventEmitter();
|
|
35564
|
-
/**
|
|
35565
|
-
* Emitted before the dropdown is opened
|
|
35566
|
-
*
|
|
35567
|
-
* ```html
|
|
35568
|
-
* <igx-combo opening='handleOpening($event)'></igx-combo>
|
|
35569
|
-
* ```
|
|
35570
|
-
*/
|
|
35571
|
-
this.opening = new EventEmitter();
|
|
35572
|
-
/**
|
|
35573
|
-
* Emitted after the dropdown is opened
|
|
35574
|
-
*
|
|
35575
|
-
* ```html
|
|
35576
|
-
* <igx-combo (opened)='handleOpened($event)'></igx-combo>
|
|
35577
|
-
* ```
|
|
35578
|
-
*/
|
|
35579
|
-
this.opened = new EventEmitter();
|
|
35580
|
-
/**
|
|
35581
|
-
* Emitted before the dropdown is closed
|
|
35582
|
-
*
|
|
35583
|
-
* ```html
|
|
35584
|
-
* <igx-combo (closing)='handleClosing($event)'></igx-combo>
|
|
35585
|
-
* ```
|
|
35586
|
-
*/
|
|
35587
|
-
this.closing = new EventEmitter();
|
|
35588
|
-
/**
|
|
35589
|
-
* Emitted after the dropdown is closed
|
|
35590
|
-
*
|
|
35591
|
-
* ```html
|
|
35592
|
-
* <igx-combo (closed)='handleClosed($event)'></igx-combo>
|
|
35593
|
-
* ```
|
|
35594
|
-
*/
|
|
35595
|
-
this.closed = new EventEmitter();
|
|
35596
|
-
/**
|
|
35597
|
-
* Emitted when an item is being added to the data collection
|
|
35598
|
-
*
|
|
35599
|
-
* ```html
|
|
35600
|
-
* <igx-combo (addition)='handleAdditionEvent($event)'></igx-combo>
|
|
35601
|
-
* ```
|
|
35602
|
-
*/
|
|
35603
|
-
this.addition = new EventEmitter();
|
|
35604
|
-
/**
|
|
35605
|
-
* Emitted when the value of the search input changes (e.g. typing, pasting, clear, etc.)
|
|
35606
|
-
*
|
|
35607
|
-
* ```html
|
|
35608
|
-
* <igx-combo (searchInputUpdate)='handleSearchInputEvent($event)'></igx-combo>
|
|
35609
|
-
* ```
|
|
35610
|
-
*/
|
|
35611
|
-
this.searchInputUpdate = new EventEmitter();
|
|
35612
|
-
/**
|
|
35613
|
-
* Emitted when new chunk of data is loaded from the virtualization
|
|
35614
|
-
*
|
|
35615
|
-
* ```html
|
|
35616
|
-
* <igx-combo (dataPreLoad)='handleDataPreloadEvent($event)'></igx-combo>
|
|
35617
|
-
* ```
|
|
35618
|
-
*/
|
|
35619
|
-
this.dataPreLoad = new EventEmitter();
|
|
35620
|
-
/**
|
|
35621
|
-
* Gets/gets combo id.
|
|
35622
|
-
*
|
|
35623
|
-
* ```typescript
|
|
35624
|
-
* // get
|
|
35625
|
-
* let id = this.combo.id;
|
|
35626
|
-
* ```
|
|
35627
|
-
*
|
|
35628
|
-
* ```html
|
|
35629
|
-
* <!--set-->
|
|
35630
|
-
* <igx-combo [id]='combo1'></igx-combo>
|
|
35631
|
-
* ```
|
|
35632
|
-
*/
|
|
35633
|
-
this.id = `igx-combo-${NEXT_ID$c++}`;
|
|
35634
|
-
/**
|
|
35635
|
-
* @hidden @internal
|
|
35636
|
-
*/
|
|
35637
|
-
this.cssClass = 'igx-combo'; // Independent of display density, at the time being
|
|
35638
|
-
/**
|
|
35639
|
-
* @hidden @internal
|
|
35640
|
-
*/
|
|
35641
|
-
this.role = 'combobox';
|
|
35642
|
-
/**
|
|
35643
|
-
* Controls whether custom values can be added to the collection
|
|
35644
|
-
*
|
|
35645
|
-
* ```typescript
|
|
35646
|
-
* // get
|
|
35647
|
-
* let comboAllowsCustomValues = this.combo.allowCustomValues;
|
|
35648
|
-
* ```
|
|
35649
|
-
*
|
|
35650
|
-
* ```html
|
|
35651
|
-
* <!--set-->
|
|
35652
|
-
* <igx-combo [allowCustomValues]='true'></igx-combo>
|
|
35653
|
-
* ```
|
|
35654
|
-
*/
|
|
35655
|
-
this.allowCustomValues = false;
|
|
35656
|
-
/**
|
|
35657
|
-
* Defines the placeholder value for the combo dropdown search field
|
|
35658
|
-
*
|
|
35659
|
-
* ```typescript
|
|
35660
|
-
* // get
|
|
35661
|
-
* let myComboSearchPlaceholder = this.combo.searchPlaceholder;
|
|
35662
|
-
* ```
|
|
35663
|
-
*
|
|
35664
|
-
* ```html
|
|
35665
|
-
* <!--set-->
|
|
35666
|
-
* <igx-combo [searchPlaceholder]='newPlaceHolder'></igx-combo>
|
|
35667
|
-
* ```
|
|
35668
|
-
*/
|
|
35669
|
-
this.searchPlaceholder = 'Enter a Search Term';
|
|
35670
|
-
/**
|
|
35671
|
-
* Defines whether the caseSensitive icon should be shown in the search input
|
|
35672
|
-
*
|
|
35673
|
-
* ```typescript
|
|
35674
|
-
* // get
|
|
35675
|
-
* let myComboShowSearchCaseIcon = this.combo.showSearchCaseIcon;
|
|
35676
|
-
* ```
|
|
35677
|
-
*
|
|
35678
|
-
* ```html
|
|
35679
|
-
* <!--set-->
|
|
35680
|
-
* <igx-combo [showSearchCaseIcon]='true'></igx-combo>
|
|
35681
|
-
* ```
|
|
35682
|
-
*/
|
|
35683
|
-
this.showSearchCaseIcon = false;
|
|
35684
|
-
/**
|
|
35685
|
-
* Combo value data source property.
|
|
35686
|
-
*
|
|
35687
|
-
* ```typescript
|
|
35688
|
-
* // get
|
|
35689
|
-
* let myComboValueKey = this.combo.valueKey;
|
|
35690
|
-
* ```
|
|
35691
|
-
*
|
|
35692
|
-
* ```html
|
|
35693
|
-
* <!--set-->
|
|
35694
|
-
* <igx-combo [valueKey]='myKey'></igx-combo>
|
|
35695
|
-
* ```
|
|
35696
|
-
*/
|
|
35697
|
-
this.valueKey = null;
|
|
35698
|
-
/**
|
|
35699
|
-
* An @Input property that enabled/disables filtering in the list. The default is `true`.
|
|
35700
|
-
* ```html
|
|
35701
|
-
* <igx-combo [filterable]="false">
|
|
35702
|
-
* ```
|
|
35703
|
-
*/
|
|
35704
|
-
this.filterable = true;
|
|
35705
|
-
/**
|
|
35706
|
-
* An @Input property that enabled/disables combo. The default is `false`.
|
|
35707
|
-
* ```html
|
|
35708
|
-
* <igx-combo [disabled]="'true'">
|
|
35709
|
-
* ```
|
|
35710
|
-
*/
|
|
35711
|
-
this.disabled = false;
|
|
35712
|
-
/**
|
|
35713
|
-
* An @Input property that controls whether the combo's search box
|
|
35714
|
-
* should be focused after the `opened` event is called
|
|
35715
|
-
* When `false`, the combo's list item container will be focused instead
|
|
35716
|
-
*/
|
|
35717
|
-
this.autoFocusSearch = true;
|
|
35373
|
+
/** @hidden @internal */
|
|
35374
|
+
this.searchInput = null;
|
|
35718
35375
|
this.dropdownContainer = null;
|
|
35719
|
-
/**
|
|
35720
|
-
* @hidden @internal
|
|
35721
|
-
*/
|
|
35376
|
+
/** @hidden @internal */
|
|
35722
35377
|
this.customValueFlag = true;
|
|
35723
|
-
/**
|
|
35724
|
-
|
|
35725
|
-
|
|
35378
|
+
/** @hidden @internal */
|
|
35379
|
+
this.filterValue = '';
|
|
35380
|
+
/** @hidden @internal */
|
|
35726
35381
|
this.defaultFallbackGroup = 'Other';
|
|
35727
|
-
/**
|
|
35728
|
-
* @hidden @internal
|
|
35729
|
-
*/
|
|
35382
|
+
/** @hidden @internal */
|
|
35730
35383
|
this.filteringOptions = {
|
|
35731
35384
|
caseSensitive: false
|
|
35732
35385
|
};
|
|
35733
|
-
|
|
35734
|
-
|
|
35735
|
-
*/
|
|
35736
|
-
this.filteringLogic = FilteringLogic.Or;
|
|
35737
|
-
/** @hidden @internal */
|
|
35738
|
-
this.filterValue = '';
|
|
35739
|
-
this.stringFilters = IgxStringFilteringOperand;
|
|
35740
|
-
this.booleanFilters = IgxBooleanFilteringOperand;
|
|
35386
|
+
this._data = [];
|
|
35387
|
+
this._value = '';
|
|
35741
35388
|
this._groupKey = '';
|
|
35742
|
-
this.
|
|
35743
|
-
this.
|
|
35744
|
-
this.
|
|
35745
|
-
this._type = null;
|
|
35389
|
+
this._filteredData = [];
|
|
35390
|
+
this._remoteSelection = {};
|
|
35391
|
+
this._valid = IgxComboState.INITIAL;
|
|
35746
35392
|
this.ngControl = null;
|
|
35747
35393
|
this.destroy$ = new Subject();
|
|
35748
|
-
this.
|
|
35749
|
-
this.
|
|
35394
|
+
this._onTouchedCallback = noop;
|
|
35395
|
+
this._onChangeCallback = noop;
|
|
35396
|
+
this._type = null;
|
|
35397
|
+
this._dataType = '';
|
|
35398
|
+
this._searchValue = '';
|
|
35750
35399
|
this._itemHeight = null;
|
|
35751
35400
|
this._itemsMaxHeight = null;
|
|
35752
|
-
this._remoteSelection = {};
|
|
35753
|
-
this._onChangeCallback = noop;
|
|
35754
|
-
this._onTouchedCallback = noop;
|
|
35755
|
-
this._value = '';
|
|
35756
|
-
this._valid = IgxComboState.INITIAL;
|
|
35757
35401
|
this.onStatusChanged = () => {
|
|
35758
35402
|
if ((this.ngControl.control.touched || this.ngControl.control.dirty) &&
|
|
35759
35403
|
(this.ngControl.control.validator || this.ngControl.control.asyncValidator)) {
|
|
@@ -35770,31 +35414,10 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35770
35414
|
}
|
|
35771
35415
|
this.manageRequiredAsterisk();
|
|
35772
35416
|
};
|
|
35773
|
-
this.
|
|
35774
|
-
|
|
35775
|
-
|
|
35776
|
-
|
|
35777
|
-
*/
|
|
35778
|
-
get displaySearchInput() {
|
|
35779
|
-
return this.filterable || this.allowCustomValues;
|
|
35780
|
-
}
|
|
35781
|
-
/**
|
|
35782
|
-
* @hidden @internal
|
|
35783
|
-
*/
|
|
35784
|
-
get ariaExpanded() {
|
|
35785
|
-
return !this.dropdown.collapsed;
|
|
35786
|
-
}
|
|
35787
|
-
/**
|
|
35788
|
-
* @hidden @internal
|
|
35789
|
-
*/
|
|
35790
|
-
get hasPopUp() {
|
|
35791
|
-
return 'listbox';
|
|
35792
|
-
}
|
|
35793
|
-
/**
|
|
35794
|
-
* @hidden @internal
|
|
35795
|
-
*/
|
|
35796
|
-
get ariaOwns() {
|
|
35797
|
-
return this.dropdown.id;
|
|
35417
|
+
this.findMatch = (element) => {
|
|
35418
|
+
const value = this.displayKey ? element[this.displayKey] : element;
|
|
35419
|
+
return value.toString().toLowerCase() === this.searchValue.trim().toLowerCase();
|
|
35420
|
+
};
|
|
35798
35421
|
}
|
|
35799
35422
|
/**
|
|
35800
35423
|
* Configures the drop down list height
|
|
@@ -35840,12 +35463,6 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35840
35463
|
set itemHeight(val) {
|
|
35841
35464
|
this._itemHeight = val;
|
|
35842
35465
|
}
|
|
35843
|
-
/**
|
|
35844
|
-
* @hidden @internal
|
|
35845
|
-
*/
|
|
35846
|
-
get inputEmpty() {
|
|
35847
|
-
return !this.value && !this.placeholder;
|
|
35848
|
-
}
|
|
35849
35466
|
/**
|
|
35850
35467
|
* Combo data source.
|
|
35851
35468
|
*
|
|
@@ -35864,7 +35481,7 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35864
35481
|
this._displayKey = val;
|
|
35865
35482
|
}
|
|
35866
35483
|
/**
|
|
35867
|
-
*
|
|
35484
|
+
* Determines which column in the data source is used to determine the display value.
|
|
35868
35485
|
*
|
|
35869
35486
|
* ```typescript
|
|
35870
35487
|
* // get
|
|
@@ -35905,6 +35522,18 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35905
35522
|
get groupKey() {
|
|
35906
35523
|
return this._groupKey;
|
|
35907
35524
|
}
|
|
35525
|
+
/** @hidden @internal */
|
|
35526
|
+
get ariaExpanded() {
|
|
35527
|
+
return !this.dropdown.collapsed;
|
|
35528
|
+
}
|
|
35529
|
+
/** @hidden @internal */
|
|
35530
|
+
get hasPopUp() {
|
|
35531
|
+
return 'listbox';
|
|
35532
|
+
}
|
|
35533
|
+
/** @hidden @internal */
|
|
35534
|
+
get ariaOwns() {
|
|
35535
|
+
return this.dropdown.id;
|
|
35536
|
+
}
|
|
35908
35537
|
/**
|
|
35909
35538
|
* An @Input property that sets how the combo will be styled.
|
|
35910
35539
|
* The allowed values are `line`, `box`, `border` and `search`. The default is `box`.
|
|
@@ -35918,6 +35547,27 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35918
35547
|
set type(val) {
|
|
35919
35548
|
this._type = val;
|
|
35920
35549
|
}
|
|
35550
|
+
/** @hidden @internal */
|
|
35551
|
+
get searchValue() {
|
|
35552
|
+
return this._searchValue;
|
|
35553
|
+
}
|
|
35554
|
+
set searchValue(val) {
|
|
35555
|
+
this.filterValue = val;
|
|
35556
|
+
this._searchValue = val;
|
|
35557
|
+
}
|
|
35558
|
+
/** @hidden @internal */
|
|
35559
|
+
get isRemote() {
|
|
35560
|
+
return this.totalItemCount > 0 &&
|
|
35561
|
+
this.valueKey &&
|
|
35562
|
+
this.dataType === DataTypes.COMPLEX;
|
|
35563
|
+
}
|
|
35564
|
+
/** @hidden @internal */
|
|
35565
|
+
get dataType() {
|
|
35566
|
+
if (this.displayKey) {
|
|
35567
|
+
return DataTypes.COMPLEX;
|
|
35568
|
+
}
|
|
35569
|
+
return DataTypes.PRIMITIVE;
|
|
35570
|
+
}
|
|
35921
35571
|
/**
|
|
35922
35572
|
* Gets if control is valid, when used in a form
|
|
35923
35573
|
*
|
|
@@ -35942,32 +35592,15 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35942
35592
|
this.comboInput.valid = IgxInputState[IgxComboState[valid]];
|
|
35943
35593
|
}
|
|
35944
35594
|
/**
|
|
35945
|
-
*
|
|
35946
|
-
|
|
35947
|
-
|
|
35948
|
-
|
|
35949
|
-
|
|
35950
|
-
|
|
35951
|
-
this.filterValue = val;
|
|
35952
|
-
this._searchValue = val;
|
|
35953
|
-
}
|
|
35954
|
-
/**
|
|
35955
|
-
* @hidden @internal
|
|
35956
|
-
*/
|
|
35957
|
-
onArrowDown(event) {
|
|
35958
|
-
event.preventDefault();
|
|
35959
|
-
event.stopPropagation();
|
|
35960
|
-
this.open();
|
|
35961
|
-
}
|
|
35962
|
-
/**
|
|
35963
|
-
* @hidden @internal
|
|
35595
|
+
* The text displayed in the combo input
|
|
35596
|
+
*
|
|
35597
|
+
* ```typescript
|
|
35598
|
+
* // get
|
|
35599
|
+
* let comboValue = this.combo.value;
|
|
35600
|
+
* ```
|
|
35964
35601
|
*/
|
|
35965
|
-
|
|
35966
|
-
|
|
35967
|
-
event.preventDefault();
|
|
35968
|
-
if (!this.disabled) {
|
|
35969
|
-
this.toggle();
|
|
35970
|
-
}
|
|
35602
|
+
get value() {
|
|
35603
|
+
return this._value;
|
|
35971
35604
|
}
|
|
35972
35605
|
/**
|
|
35973
35606
|
* Defines the current state of the virtualized data. It contains `startIndex` and `chunkSize`
|
|
@@ -35991,6 +35624,16 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
35991
35624
|
set virtualizationState(state) {
|
|
35992
35625
|
this.virtDir.state = state;
|
|
35993
35626
|
}
|
|
35627
|
+
/**
|
|
35628
|
+
* Gets drop down state.
|
|
35629
|
+
*
|
|
35630
|
+
* ```typescript
|
|
35631
|
+
* let state = this.combo.collapsed;
|
|
35632
|
+
* ```
|
|
35633
|
+
*/
|
|
35634
|
+
get collapsed() {
|
|
35635
|
+
return this.dropdown.collapsed;
|
|
35636
|
+
}
|
|
35994
35637
|
/**
|
|
35995
35638
|
* Gets total count of the virtual data items, when using remote service.
|
|
35996
35639
|
*
|
|
@@ -36013,94 +35656,92 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36013
35656
|
set totalItemCount(count) {
|
|
36014
35657
|
this.virtDir.totalItemCount = count;
|
|
36015
35658
|
}
|
|
36016
|
-
/**
|
|
36017
|
-
|
|
36018
|
-
|
|
36019
|
-
|
|
36020
|
-
|
|
36021
|
-
* let comboValue = this.combo.value;
|
|
36022
|
-
* ```
|
|
36023
|
-
*/
|
|
36024
|
-
get value() {
|
|
36025
|
-
return this._value;
|
|
36026
|
-
}
|
|
36027
|
-
/**
|
|
36028
|
-
* @hidden @internal
|
|
36029
|
-
*/
|
|
36030
|
-
get filteredData() {
|
|
36031
|
-
return this.filterable ? this._filteredData : this.data;
|
|
36032
|
-
}
|
|
36033
|
-
/**
|
|
36034
|
-
* @hidden @internal
|
|
36035
|
-
*/
|
|
36036
|
-
set filteredData(val) {
|
|
36037
|
-
this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;
|
|
36038
|
-
this.checkMatch();
|
|
36039
|
-
}
|
|
36040
|
-
/**
|
|
36041
|
-
* @hidden @internal
|
|
36042
|
-
*/
|
|
36043
|
-
handleKeyUp(event) {
|
|
36044
|
-
if (event.key === 'ArrowDown' || event.key === 'Down') {
|
|
36045
|
-
this.dropdown.focusedItem = this.dropdown.items[0];
|
|
36046
|
-
this.dropdownContainer.nativeElement.focus();
|
|
35659
|
+
/** @hidden @internal */
|
|
35660
|
+
get template() {
|
|
35661
|
+
this._dataType = this.dataType;
|
|
35662
|
+
if (this.itemTemplate) {
|
|
35663
|
+
return this.itemTemplate;
|
|
36047
35664
|
}
|
|
36048
|
-
|
|
36049
|
-
this.
|
|
35665
|
+
if (this._dataType === DataTypes.COMPLEX) {
|
|
35666
|
+
return this.complexTemplate;
|
|
36050
35667
|
}
|
|
35668
|
+
return this.primitiveTemplate;
|
|
36051
35669
|
}
|
|
36052
|
-
/**
|
|
36053
|
-
|
|
36054
|
-
|
|
36055
|
-
|
|
36056
|
-
|
|
36057
|
-
event.preventDefault();
|
|
36058
|
-
event.stopPropagation();
|
|
36059
|
-
this.close();
|
|
36060
|
-
}
|
|
35670
|
+
/** @hidden @internal */
|
|
35671
|
+
onArrowDown(event) {
|
|
35672
|
+
event.preventDefault();
|
|
35673
|
+
event.stopPropagation();
|
|
35674
|
+
this.open();
|
|
36061
35675
|
}
|
|
36062
|
-
/**
|
|
36063
|
-
|
|
36064
|
-
|
|
36065
|
-
|
|
36066
|
-
|
|
36067
|
-
|
|
36068
|
-
|
|
36069
|
-
|
|
36070
|
-
|
|
36071
|
-
|
|
36072
|
-
|
|
36073
|
-
|
|
36074
|
-
|
|
36075
|
-
|
|
35676
|
+
/** @hidden @internal */
|
|
35677
|
+
ngOnInit() {
|
|
35678
|
+
this.ngControl = this._injector.get(NgControl, null);
|
|
35679
|
+
const targetElement = this.elementRef.nativeElement;
|
|
35680
|
+
this._overlaySettings = {
|
|
35681
|
+
target: targetElement,
|
|
35682
|
+
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
35683
|
+
positionStrategy: new AutoPositionStrategy(),
|
|
35684
|
+
modal: false,
|
|
35685
|
+
closeOnOutsideClick: true,
|
|
35686
|
+
excludeFromOutsideClick: [targetElement]
|
|
35687
|
+
};
|
|
35688
|
+
this.selectionService.set(this.id, new Set());
|
|
35689
|
+
this._iconService.addSvgIconFromText(caseSensitive.name, caseSensitive.value, 'imx-icons');
|
|
35690
|
+
}
|
|
35691
|
+
/** @hidden @internal */
|
|
35692
|
+
ngAfterViewInit() {
|
|
35693
|
+
this.filteredData = [...this.data];
|
|
35694
|
+
if (this.ngControl) {
|
|
35695
|
+
this.ngControl.statusChanges.pipe(takeUntil(this.destroy$)).subscribe(this.onStatusChanged);
|
|
35696
|
+
this.manageRequiredAsterisk();
|
|
35697
|
+
this.cdr.detectChanges();
|
|
36076
35698
|
}
|
|
36077
|
-
this.
|
|
35699
|
+
this.virtDir.chunkPreload.pipe(takeUntil(this.destroy$)).subscribe((e) => {
|
|
35700
|
+
const eventArgs = Object.assign({}, e, { owner: this });
|
|
35701
|
+
this.dataPreLoad.emit(eventArgs);
|
|
35702
|
+
});
|
|
35703
|
+
}
|
|
35704
|
+
/** @hidden @internal */
|
|
35705
|
+
ngOnDestroy() {
|
|
35706
|
+
this.destroy$.next();
|
|
35707
|
+
this.destroy$.complete();
|
|
35708
|
+
this.comboAPI.clear();
|
|
35709
|
+
this.selectionService.clear(this.id);
|
|
36078
35710
|
}
|
|
36079
35711
|
/**
|
|
36080
|
-
*
|
|
35712
|
+
* A method that opens/closes the combo.
|
|
35713
|
+
*
|
|
35714
|
+
* ```html
|
|
35715
|
+
* <button (click)="combo.toggle()">Toggle Combo</button>
|
|
35716
|
+
* <igx-combo #combo></igx-combo>
|
|
35717
|
+
* ```
|
|
36081
35718
|
*/
|
|
36082
|
-
|
|
36083
|
-
|
|
36084
|
-
|
|
36085
|
-
}
|
|
36086
|
-
return DataTypes.PRIMITIVE;
|
|
35719
|
+
toggle() {
|
|
35720
|
+
const overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
|
|
35721
|
+
this.dropdown.toggle(overlaySettings);
|
|
36087
35722
|
}
|
|
36088
35723
|
/**
|
|
36089
|
-
*
|
|
35724
|
+
* A method that opens the combo.
|
|
35725
|
+
*
|
|
35726
|
+
* ```html
|
|
35727
|
+
* <button (click)="combo.open()">Open Combo</button>
|
|
35728
|
+
* <igx-combo #combo></igx-combo>
|
|
35729
|
+
* ```
|
|
36090
35730
|
*/
|
|
36091
|
-
|
|
36092
|
-
|
|
36093
|
-
|
|
36094
|
-
this.dataType === DataTypes.COMPLEX;
|
|
35731
|
+
open() {
|
|
35732
|
+
const overlaySettings = Object.assign({}, this._overlaySettings, this.overlaySettings);
|
|
35733
|
+
this.dropdown.open(overlaySettings);
|
|
36095
35734
|
}
|
|
36096
35735
|
/**
|
|
36097
|
-
*
|
|
35736
|
+
* A method that closes the combo.
|
|
36098
35737
|
*
|
|
36099
|
-
*
|
|
36100
|
-
*
|
|
35738
|
+
* ```html
|
|
35739
|
+
* <button (click)="combo.close()">Close Combo</button>
|
|
35740
|
+
* <igx-combo #combo></igx-combo>
|
|
35741
|
+
* ```
|
|
36101
35742
|
*/
|
|
36102
|
-
|
|
36103
|
-
|
|
35743
|
+
close() {
|
|
35744
|
+
this.dropdown.close();
|
|
36104
35745
|
}
|
|
36105
35746
|
/**
|
|
36106
35747
|
* Triggers change detection on the combo view
|
|
@@ -36109,27 +35750,29 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36109
35750
|
this.cdr.detectChanges();
|
|
36110
35751
|
}
|
|
36111
35752
|
/**
|
|
36112
|
-
*
|
|
35753
|
+
* Get current selection state
|
|
35754
|
+
*
|
|
35755
|
+
* @returns Array of selected items
|
|
35756
|
+
* ```typescript
|
|
35757
|
+
* let selectedItems = this.combo.selectedItems();
|
|
35758
|
+
* ```
|
|
36113
35759
|
*/
|
|
36114
|
-
|
|
36115
|
-
|
|
36116
|
-
return
|
|
35760
|
+
get selection() {
|
|
35761
|
+
const items = Array.from(this.selectionService.get(this.id));
|
|
35762
|
+
return items;
|
|
36117
35763
|
}
|
|
36118
35764
|
/**
|
|
36119
|
-
*
|
|
35765
|
+
* Returns if the specified itemID is selected
|
|
35766
|
+
*
|
|
35767
|
+
* @hidden
|
|
35768
|
+
* @internal
|
|
36120
35769
|
*/
|
|
36121
|
-
|
|
36122
|
-
|
|
36123
|
-
this.selectAllItems();
|
|
36124
|
-
}
|
|
36125
|
-
else {
|
|
36126
|
-
this.deselectAllItems();
|
|
36127
|
-
}
|
|
35770
|
+
isItemSelected(item) {
|
|
35771
|
+
return this.selectionService.is_item_selected(this.id, item);
|
|
36128
35772
|
}
|
|
36129
|
-
/**
|
|
36130
|
-
* @hidden @internal
|
|
36131
|
-
*/
|
|
35773
|
+
/** @hidden @internal */
|
|
36132
35774
|
addItemToCollection() {
|
|
35775
|
+
var _a;
|
|
36133
35776
|
if (!this.searchValue) {
|
|
36134
35777
|
return;
|
|
36135
35778
|
}
|
|
@@ -36154,33 +35797,91 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36154
35797
|
this.data.push(args.addedItem);
|
|
36155
35798
|
// trigger re-render
|
|
36156
35799
|
this.data = cloneArray(this.data);
|
|
36157
|
-
this.
|
|
35800
|
+
this.select(this.valueKey !== null && this.valueKey !== undefined ?
|
|
36158
35801
|
[args.addedItem[this.valueKey]] : [args.addedItem], false);
|
|
36159
35802
|
this.customValueFlag = false;
|
|
36160
|
-
this.searchInput.nativeElement.focus();
|
|
35803
|
+
(_a = this.searchInput) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
36161
35804
|
this.dropdown.focusedItem = null;
|
|
36162
35805
|
this.virtDir.scrollTo(0);
|
|
36163
35806
|
}
|
|
36164
|
-
/**
|
|
36165
|
-
|
|
36166
|
-
|
|
36167
|
-
|
|
36168
|
-
|
|
36169
|
-
|
|
36170
|
-
|
|
36171
|
-
|
|
36172
|
-
|
|
36173
|
-
|
|
36174
|
-
|
|
36175
|
-
|
|
36176
|
-
|
|
36177
|
-
|
|
35807
|
+
/** @hidden @internal */
|
|
35808
|
+
isAddButtonVisible() {
|
|
35809
|
+
// This should always return a boolean value. If this.searchValue was '', it returns '' instead of false;
|
|
35810
|
+
return this.searchValue !== '' && this.customValueFlag;
|
|
35811
|
+
}
|
|
35812
|
+
/** @hidden @internal */
|
|
35813
|
+
handleInputChange(event) {
|
|
35814
|
+
if (event !== undefined) {
|
|
35815
|
+
const args = {
|
|
35816
|
+
searchText: typeof event === 'string' ? event : event.target.value,
|
|
35817
|
+
owner: this,
|
|
35818
|
+
cancel: false
|
|
35819
|
+
};
|
|
35820
|
+
this.searchInputUpdate.emit(args);
|
|
35821
|
+
if (args.cancel) {
|
|
35822
|
+
this.filterValue = null;
|
|
36178
35823
|
}
|
|
36179
35824
|
}
|
|
35825
|
+
this.checkMatch();
|
|
36180
35826
|
}
|
|
36181
35827
|
/**
|
|
36182
|
-
*
|
|
35828
|
+
* Event handlers
|
|
35829
|
+
*
|
|
35830
|
+
* @hidden
|
|
35831
|
+
* @internal
|
|
36183
35832
|
*/
|
|
35833
|
+
handleOpening(e) {
|
|
35834
|
+
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
35835
|
+
this.opening.emit(args);
|
|
35836
|
+
e.cancel = args.cancel;
|
|
35837
|
+
}
|
|
35838
|
+
/** @hidden @internal */
|
|
35839
|
+
handleClosing(e) {
|
|
35840
|
+
var _a;
|
|
35841
|
+
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
35842
|
+
this.closing.emit(args);
|
|
35843
|
+
e.cancel = args.cancel;
|
|
35844
|
+
if (e.cancel) {
|
|
35845
|
+
return;
|
|
35846
|
+
}
|
|
35847
|
+
this.searchValue = '';
|
|
35848
|
+
if (!e.event) {
|
|
35849
|
+
(_a = this.comboInput) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
35850
|
+
}
|
|
35851
|
+
}
|
|
35852
|
+
/** @hidden @internal */
|
|
35853
|
+
handleClosed() {
|
|
35854
|
+
this.closed.emit({ owner: this });
|
|
35855
|
+
}
|
|
35856
|
+
/** @hidden @internal */
|
|
35857
|
+
handleKeyDown(event) {
|
|
35858
|
+
if (event.key === 'ArrowUp' || event.key === 'Up') {
|
|
35859
|
+
event.preventDefault();
|
|
35860
|
+
event.stopPropagation();
|
|
35861
|
+
this.close();
|
|
35862
|
+
}
|
|
35863
|
+
}
|
|
35864
|
+
/** @hidden @internal */
|
|
35865
|
+
registerOnChange(fn) {
|
|
35866
|
+
this._onChangeCallback = fn;
|
|
35867
|
+
}
|
|
35868
|
+
/** @hidden @internal */
|
|
35869
|
+
registerOnTouched(fn) {
|
|
35870
|
+
this._onTouchedCallback = fn;
|
|
35871
|
+
}
|
|
35872
|
+
/** @hidden @internal */
|
|
35873
|
+
setDisabledState(isDisabled) {
|
|
35874
|
+
this.disabled = isDisabled;
|
|
35875
|
+
}
|
|
35876
|
+
/** @hidden @internal */
|
|
35877
|
+
onClick(event) {
|
|
35878
|
+
event.stopPropagation();
|
|
35879
|
+
event.preventDefault();
|
|
35880
|
+
if (!this.disabled) {
|
|
35881
|
+
this.toggle();
|
|
35882
|
+
}
|
|
35883
|
+
}
|
|
35884
|
+
/** @hidden @internal */
|
|
36184
35885
|
onBlur() {
|
|
36185
35886
|
if (this.collapsed) {
|
|
36186
35887
|
this._onTouchedCallback();
|
|
@@ -36192,174 +35893,600 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36192
35893
|
}
|
|
36193
35894
|
}
|
|
36194
35895
|
}
|
|
35896
|
+
/** @hidden @internal */
|
|
35897
|
+
toggleCaseSensitive() {
|
|
35898
|
+
this.filteringOptions = { caseSensitive: !this.filteringOptions.caseSensitive };
|
|
35899
|
+
}
|
|
35900
|
+
/** if there is a valueKey - map the keys to data items, else - just return the keys */
|
|
35901
|
+
convertKeysToItems(keys) {
|
|
35902
|
+
if (this.comboAPI.valueKey === null) {
|
|
35903
|
+
return keys;
|
|
35904
|
+
}
|
|
35905
|
+
// map keys vs. filter data to retain the order of the selected items
|
|
35906
|
+
return keys.map(key => this.data.find(entry => entry[this.valueKey] === key)).filter(e => e !== undefined);
|
|
35907
|
+
}
|
|
35908
|
+
checkMatch() {
|
|
35909
|
+
const itemMatch = this.filteredData.some(this.findMatch);
|
|
35910
|
+
this.customValueFlag = this.allowCustomValues && !itemMatch;
|
|
35911
|
+
}
|
|
35912
|
+
manageRequiredAsterisk() {
|
|
35913
|
+
if (this.ngControl && this.ngControl.control.validator) {
|
|
35914
|
+
// Run the validation with empty object to check if required is enabled.
|
|
35915
|
+
const error = this.ngControl.control.validator({});
|
|
35916
|
+
this.inputGroup.isRequired = error && error.required;
|
|
35917
|
+
}
|
|
35918
|
+
}
|
|
35919
|
+
/** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
|
|
35920
|
+
registerRemoteEntries(ids, add = true) {
|
|
35921
|
+
if (add) {
|
|
35922
|
+
const selection = this.getValueDisplayPairs(ids);
|
|
35923
|
+
for (const entry of selection) {
|
|
35924
|
+
this._remoteSelection[entry[this.valueKey]] = entry[this.displayKey];
|
|
35925
|
+
}
|
|
35926
|
+
}
|
|
35927
|
+
else {
|
|
35928
|
+
for (const entry of ids) {
|
|
35929
|
+
delete this._remoteSelection[entry];
|
|
35930
|
+
}
|
|
35931
|
+
}
|
|
35932
|
+
}
|
|
36195
35933
|
/**
|
|
36196
|
-
*
|
|
35934
|
+
* For `id: any[]` returns a mapped `{ [combo.valueKey]: any, [combo.displayKey]: any }[]`
|
|
36197
35935
|
*/
|
|
36198
|
-
|
|
36199
|
-
this.
|
|
36200
|
-
|
|
36201
|
-
|
|
36202
|
-
|
|
36203
|
-
|
|
36204
|
-
|
|
36205
|
-
|
|
36206
|
-
|
|
36207
|
-
|
|
35936
|
+
getValueDisplayPairs(ids) {
|
|
35937
|
+
return this.data.filter(entry => ids.indexOf(entry[this.valueKey]) > -1).map(e => ({
|
|
35938
|
+
[this.valueKey]: e[this.valueKey],
|
|
35939
|
+
[this.displayKey]: e[this.displayKey]
|
|
35940
|
+
}));
|
|
35941
|
+
}
|
|
35942
|
+
getRemoteSelection(newSelection, oldSelection) {
|
|
35943
|
+
if (!newSelection.length) {
|
|
35944
|
+
// If new selection is empty, clear all items
|
|
35945
|
+
this.registerRemoteEntries(oldSelection, false);
|
|
35946
|
+
return '';
|
|
35947
|
+
}
|
|
35948
|
+
const removedItems = oldSelection.filter(e => newSelection.indexOf(e) < 0);
|
|
35949
|
+
const addedItems = newSelection.filter(e => oldSelection.indexOf(e) < 0);
|
|
35950
|
+
this.registerRemoteEntries(addedItems);
|
|
35951
|
+
this.registerRemoteEntries(removedItems, false);
|
|
35952
|
+
return Object.keys(this._remoteSelection).map(e => this._remoteSelection[e]).join(', ');
|
|
35953
|
+
}
|
|
35954
|
+
}
|
|
35955
|
+
IgxComboBaseDirective.decorators = [
|
|
35956
|
+
{ type: Directive }
|
|
35957
|
+
];
|
|
35958
|
+
IgxComboBaseDirective.ctorParameters = () => [
|
|
35959
|
+
{ type: ElementRef },
|
|
35960
|
+
{ type: ChangeDetectorRef },
|
|
35961
|
+
{ type: IgxSelectionAPIService },
|
|
35962
|
+
{ type: IgxComboAPIService },
|
|
35963
|
+
{ type: IgxIconService },
|
|
35964
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] },
|
|
35965
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [IGX_INPUT_GROUP_TYPE,] }] },
|
|
35966
|
+
{ type: Injector, decorators: [{ type: Optional }] }
|
|
35967
|
+
];
|
|
35968
|
+
IgxComboBaseDirective.propDecorators = {
|
|
35969
|
+
showSearchCaseIcon: [{ type: Input }],
|
|
35970
|
+
overlaySettings: [{ type: Input }],
|
|
35971
|
+
id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }],
|
|
35972
|
+
width: [{ type: HostBinding, args: ['style.width',] }, { type: Input }],
|
|
35973
|
+
allowCustomValues: [{ type: Input }],
|
|
35974
|
+
itemsMaxHeight: [{ type: Input }],
|
|
35975
|
+
itemHeight: [{ type: Input }],
|
|
35976
|
+
itemsWidth: [{ type: Input }],
|
|
35977
|
+
placeholder: [{ type: Input }],
|
|
35978
|
+
data: [{ type: Input }],
|
|
35979
|
+
valueKey: [{ type: Input }],
|
|
35980
|
+
displayKey: [{ type: Input }],
|
|
35981
|
+
groupKey: [{ type: Input }],
|
|
35982
|
+
filterable: [{ type: Input }],
|
|
35983
|
+
ariaLabelledBy: [{ type: Input }, { type: HostBinding, args: ['attr.aria-labelledby',] }],
|
|
35984
|
+
cssClass: [{ type: HostBinding, args: ['class.igx-combo',] }],
|
|
35985
|
+
role: [{ type: HostBinding, args: [`attr.role`,] }],
|
|
35986
|
+
ariaExpanded: [{ type: HostBinding, args: ['attr.aria-expanded',] }],
|
|
35987
|
+
hasPopUp: [{ type: HostBinding, args: ['attr.aria-haspopup',] }],
|
|
35988
|
+
ariaOwns: [{ type: HostBinding, args: ['attr.aria-owns',] }],
|
|
35989
|
+
disabled: [{ type: Input }],
|
|
35990
|
+
type: [{ type: Input }],
|
|
35991
|
+
opening: [{ type: Output }],
|
|
35992
|
+
opened: [{ type: Output }],
|
|
35993
|
+
closing: [{ type: Output }],
|
|
35994
|
+
closed: [{ type: Output }],
|
|
35995
|
+
addition: [{ type: Output }],
|
|
35996
|
+
searchInputUpdate: [{ type: Output }],
|
|
35997
|
+
dataPreLoad: [{ type: Output }],
|
|
35998
|
+
itemTemplate: [{ type: ContentChild, args: [IgxComboItemDirective, { read: TemplateRef },] }],
|
|
35999
|
+
headerTemplate: [{ type: ContentChild, args: [IgxComboHeaderDirective, { read: TemplateRef },] }],
|
|
36000
|
+
footerTemplate: [{ type: ContentChild, args: [IgxComboFooterDirective, { read: TemplateRef },] }],
|
|
36001
|
+
headerItemTemplate: [{ type: ContentChild, args: [IgxComboHeaderItemDirective, { read: TemplateRef },] }],
|
|
36002
|
+
addItemTemplate: [{ type: ContentChild, args: [IgxComboAddItemDirective, { read: TemplateRef },] }],
|
|
36003
|
+
emptyTemplate: [{ type: ContentChild, args: [IgxComboEmptyDirective, { read: TemplateRef },] }],
|
|
36004
|
+
toggleIconTemplate: [{ type: ContentChild, args: [IgxComboToggleIconDirective, { read: TemplateRef },] }],
|
|
36005
|
+
clearIconTemplate: [{ type: ContentChild, args: [IgxComboClearIconDirective, { read: TemplateRef },] }],
|
|
36006
|
+
inputGroup: [{ type: ViewChild, args: ['inputGroup', { read: IgxInputGroupComponent, static: true },] }],
|
|
36007
|
+
comboInput: [{ type: ViewChild, args: ['comboInput', { read: IgxInputDirective, static: true },] }],
|
|
36008
|
+
searchInput: [{ type: ViewChild, args: ['searchInput',] }],
|
|
36009
|
+
virtualScrollContainer: [{ type: ViewChild, args: [IgxForOfDirective, { static: true },] }],
|
|
36010
|
+
virtDir: [{ type: ViewChild, args: [IgxForOfDirective, { read: IgxForOfDirective, static: true },] }],
|
|
36011
|
+
dropdownContainer: [{ type: ViewChild, args: ['dropdownItemContainer', { static: true },] }],
|
|
36012
|
+
primitiveTemplate: [{ type: ViewChild, args: ['primitive', { read: TemplateRef, static: true },] }],
|
|
36013
|
+
complexTemplate: [{ type: ViewChild, args: ['complex', { read: TemplateRef, static: true },] }],
|
|
36014
|
+
onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
|
|
36015
|
+
};
|
|
36016
|
+
|
|
36017
|
+
/**
|
|
36018
|
+
* @hidden
|
|
36019
|
+
*/
|
|
36020
|
+
class IgxComboAddItemComponent extends IgxComboItemComponent {
|
|
36021
|
+
get selected() {
|
|
36022
|
+
return false;
|
|
36023
|
+
}
|
|
36024
|
+
set selected(value) {
|
|
36025
|
+
}
|
|
36026
|
+
/**
|
|
36027
|
+
* @inheritdoc
|
|
36028
|
+
*/
|
|
36029
|
+
clicked(event) {
|
|
36030
|
+
this.comboAPI.disableTransitions = false;
|
|
36031
|
+
this.comboAPI.add_custom_item();
|
|
36032
|
+
}
|
|
36033
|
+
}
|
|
36034
|
+
IgxComboAddItemComponent.decorators = [
|
|
36035
|
+
{ type: Component, args: [{
|
|
36036
|
+
selector: 'igx-combo-add-item',
|
|
36037
|
+
template: '<ng-content></ng-content>',
|
|
36038
|
+
providers: [{ provide: IgxComboItemComponent, useExisting: IgxComboAddItemComponent }]
|
|
36039
|
+
},] }
|
|
36040
|
+
];
|
|
36041
|
+
|
|
36042
|
+
/** @hidden */
|
|
36043
|
+
class IgxComboDropDownComponent extends IgxDropDownComponent {
|
|
36044
|
+
constructor(elementRef, cdr, platform, selection, combo, comboAPI, _displayDensityOptions) {
|
|
36045
|
+
super(elementRef, cdr, platform, selection, _displayDensityOptions);
|
|
36046
|
+
this.elementRef = elementRef;
|
|
36047
|
+
this.cdr = cdr;
|
|
36048
|
+
this.platform = platform;
|
|
36049
|
+
this.selection = selection;
|
|
36050
|
+
this.combo = combo;
|
|
36051
|
+
this.comboAPI = comboAPI;
|
|
36052
|
+
this._displayDensityOptions = _displayDensityOptions;
|
|
36053
|
+
/** @hidden @internal */
|
|
36054
|
+
this.singleMode = false;
|
|
36055
|
+
/**
|
|
36056
|
+
* @hidden
|
|
36057
|
+
* @internal
|
|
36058
|
+
*/
|
|
36059
|
+
this.children = null;
|
|
36060
|
+
this.scrollHandler = () => {
|
|
36061
|
+
this.comboAPI.disableTransitions = true;
|
|
36208
36062
|
};
|
|
36209
|
-
|
|
36210
|
-
|
|
36063
|
+
}
|
|
36064
|
+
/** @hidden @internal */
|
|
36065
|
+
get scrollContainer() {
|
|
36066
|
+
return this.virtDir.dc.location.nativeElement;
|
|
36067
|
+
}
|
|
36068
|
+
get isScrolledToLast() {
|
|
36069
|
+
const scrollTop = this.virtDir.scrollPosition;
|
|
36070
|
+
const scrollHeight = this.virtDir.getScroll().scrollHeight;
|
|
36071
|
+
return Math.floor(scrollTop + this.virtDir.igxForContainerSize) === scrollHeight;
|
|
36072
|
+
}
|
|
36073
|
+
get lastVisibleIndex() {
|
|
36074
|
+
return this.combo.totalItemCount ?
|
|
36075
|
+
Math.floor(this.combo.itemsMaxHeight / this.combo.itemHeight) :
|
|
36076
|
+
this.items.length - 1;
|
|
36077
|
+
}
|
|
36078
|
+
get sortedChildren() {
|
|
36079
|
+
if (this.children !== undefined) {
|
|
36080
|
+
return this.children.toArray()
|
|
36081
|
+
.sort((a, b) => a.index - b.index);
|
|
36082
|
+
}
|
|
36083
|
+
return null;
|
|
36211
36084
|
}
|
|
36212
36085
|
/**
|
|
36213
|
-
*
|
|
36086
|
+
* Get all non-header items
|
|
36087
|
+
*
|
|
36088
|
+
* ```typescript
|
|
36089
|
+
* let myDropDownItems = this.dropdown.items;
|
|
36090
|
+
* ```
|
|
36214
36091
|
*/
|
|
36215
|
-
|
|
36216
|
-
|
|
36217
|
-
if (this.
|
|
36218
|
-
this.
|
|
36219
|
-
|
|
36220
|
-
|
|
36092
|
+
get items() {
|
|
36093
|
+
const items = [];
|
|
36094
|
+
if (this.children !== undefined) {
|
|
36095
|
+
const sortedChildren = this.sortedChildren;
|
|
36096
|
+
for (const child of sortedChildren) {
|
|
36097
|
+
if (!child.isHeader) {
|
|
36098
|
+
items.push(child);
|
|
36099
|
+
}
|
|
36100
|
+
}
|
|
36221
36101
|
}
|
|
36222
|
-
|
|
36223
|
-
const eventArgs = Object.assign({}, e, { owner: this });
|
|
36224
|
-
this.dataPreLoad.emit(eventArgs);
|
|
36225
|
-
});
|
|
36102
|
+
return items;
|
|
36226
36103
|
}
|
|
36227
36104
|
/**
|
|
36228
36105
|
* @hidden @internal
|
|
36229
36106
|
*/
|
|
36230
|
-
|
|
36231
|
-
this.
|
|
36232
|
-
this.destroy$.complete();
|
|
36233
|
-
this.comboAPI.clear();
|
|
36234
|
-
this.selection.clear(this.id);
|
|
36107
|
+
onFocus() {
|
|
36108
|
+
this.focusedItem = this._focusedItem || this.items[0];
|
|
36235
36109
|
}
|
|
36236
36110
|
/**
|
|
36237
36111
|
* @hidden @internal
|
|
36238
36112
|
*/
|
|
36239
|
-
|
|
36240
|
-
|
|
36241
|
-
const oldSelection = this.selectedItems();
|
|
36242
|
-
this.selection.select_items(this.id, selection, true);
|
|
36243
|
-
this.cdr.markForCheck();
|
|
36244
|
-
this._value = this.createDisplayText(this.selectedItems(), oldSelection);
|
|
36113
|
+
onBlur(_evt) {
|
|
36114
|
+
this.focusedItem = null;
|
|
36245
36115
|
}
|
|
36246
36116
|
/**
|
|
36247
36117
|
* @hidden @internal
|
|
36248
36118
|
*/
|
|
36249
|
-
|
|
36250
|
-
this.
|
|
36119
|
+
onToggleOpened() {
|
|
36120
|
+
this.opened.emit();
|
|
36251
36121
|
}
|
|
36252
36122
|
/**
|
|
36253
|
-
* @hidden
|
|
36123
|
+
* @hidden
|
|
36254
36124
|
*/
|
|
36255
|
-
|
|
36256
|
-
this.
|
|
36125
|
+
navigateFirst() {
|
|
36126
|
+
this.navigateItem(this.virtDir.igxForOf.findIndex(e => !e.isHeader));
|
|
36257
36127
|
}
|
|
36258
36128
|
/**
|
|
36259
|
-
* @hidden
|
|
36129
|
+
* @hidden
|
|
36260
36130
|
*/
|
|
36261
|
-
|
|
36262
|
-
this.
|
|
36131
|
+
navigatePrev() {
|
|
36132
|
+
if (this._focusedItem && this._focusedItem.index === 0 && this.virtDir.state.startIndex === 0) {
|
|
36133
|
+
this.combo.focusSearchInput(false);
|
|
36134
|
+
}
|
|
36135
|
+
else {
|
|
36136
|
+
super.navigatePrev();
|
|
36137
|
+
}
|
|
36263
36138
|
}
|
|
36264
36139
|
/**
|
|
36265
36140
|
* @hidden
|
|
36266
36141
|
*/
|
|
36267
|
-
|
|
36268
|
-
|
|
36142
|
+
navigateNext() {
|
|
36143
|
+
const lastIndex = this.combo.totalItemCount ? this.combo.totalItemCount - 1 : this.virtDir.igxForOf.length - 1;
|
|
36144
|
+
if (this._focusedItem && this._focusedItem.index === lastIndex) {
|
|
36145
|
+
this.focusAddItemButton();
|
|
36146
|
+
}
|
|
36147
|
+
else {
|
|
36148
|
+
super.navigateNext();
|
|
36149
|
+
}
|
|
36269
36150
|
}
|
|
36270
36151
|
/**
|
|
36271
36152
|
* @hidden @internal
|
|
36272
36153
|
*/
|
|
36273
|
-
|
|
36274
|
-
|
|
36275
|
-
|
|
36276
|
-
return this.itemTemplate;
|
|
36277
|
-
}
|
|
36278
|
-
if (this._dataType === DataTypes.COMPLEX) {
|
|
36279
|
-
return this.complexTemplate;
|
|
36154
|
+
selectItem(item) {
|
|
36155
|
+
if (item === null || item === undefined) {
|
|
36156
|
+
return;
|
|
36280
36157
|
}
|
|
36281
|
-
|
|
36158
|
+
this.comboAPI.set_selected_item(item.itemID);
|
|
36159
|
+
this._focusedItem = item;
|
|
36282
36160
|
}
|
|
36283
36161
|
/**
|
|
36284
36162
|
* @hidden @internal
|
|
36285
36163
|
*/
|
|
36286
|
-
|
|
36287
|
-
|
|
36288
|
-
$implicit: this
|
|
36289
|
-
};
|
|
36164
|
+
updateScrollPosition() {
|
|
36165
|
+
this.virtDir.getScroll().scrollTop = this._scrollPosition;
|
|
36290
36166
|
}
|
|
36291
36167
|
/**
|
|
36292
36168
|
* @hidden @internal
|
|
36293
36169
|
*/
|
|
36294
|
-
|
|
36295
|
-
|
|
36170
|
+
onItemActionKey(key) {
|
|
36171
|
+
switch (key) {
|
|
36172
|
+
case DropDownActionKey.ENTER:
|
|
36173
|
+
this.handleEnter();
|
|
36174
|
+
break;
|
|
36175
|
+
case DropDownActionKey.SPACE:
|
|
36176
|
+
this.handleSpace();
|
|
36177
|
+
break;
|
|
36178
|
+
case DropDownActionKey.ESCAPE:
|
|
36179
|
+
this.close();
|
|
36180
|
+
}
|
|
36181
|
+
}
|
|
36182
|
+
ngAfterViewInit() {
|
|
36183
|
+
this.virtDir.getScroll().addEventListener('scroll', this.scrollHandler);
|
|
36184
|
+
}
|
|
36185
|
+
/**
|
|
36186
|
+
* @hidden @internal
|
|
36187
|
+
*/
|
|
36188
|
+
ngOnDestroy() {
|
|
36189
|
+
this.virtDir.getScroll().removeEventListener('scroll', this.scrollHandler);
|
|
36190
|
+
this.destroy$.next(true);
|
|
36191
|
+
this.destroy$.complete();
|
|
36192
|
+
}
|
|
36193
|
+
scrollToHiddenItem(_newItem) { }
|
|
36194
|
+
handleEnter() {
|
|
36195
|
+
if (this.isAddItemFocused()) {
|
|
36196
|
+
this.combo.addItemToCollection();
|
|
36296
36197
|
return;
|
|
36297
36198
|
}
|
|
36298
|
-
this.
|
|
36299
|
-
|
|
36300
|
-
|
|
36199
|
+
if (this.singleMode && this.focusedItem) {
|
|
36200
|
+
this.combo.select(this.focusedItem.itemID);
|
|
36201
|
+
}
|
|
36202
|
+
this.close();
|
|
36203
|
+
}
|
|
36204
|
+
handleSpace() {
|
|
36205
|
+
if (this.isAddItemFocused()) {
|
|
36206
|
+
return;
|
|
36301
36207
|
}
|
|
36302
36208
|
else {
|
|
36303
|
-
this.
|
|
36209
|
+
this.selectItem(this.focusedItem);
|
|
36210
|
+
}
|
|
36211
|
+
}
|
|
36212
|
+
isAddItemFocused() {
|
|
36213
|
+
return this.focusedItem instanceof IgxComboAddItemComponent;
|
|
36214
|
+
}
|
|
36215
|
+
focusAddItemButton() {
|
|
36216
|
+
if (this.combo.isAddButtonVisible()) {
|
|
36217
|
+
this.focusedItem = this.items[this.items.length - 1];
|
|
36304
36218
|
}
|
|
36305
|
-
|
|
36219
|
+
}
|
|
36220
|
+
}
|
|
36221
|
+
IgxComboDropDownComponent.decorators = [
|
|
36222
|
+
{ type: Component, args: [{
|
|
36223
|
+
selector: 'igx-combo-drop-down',
|
|
36224
|
+
template: "<div class=\"igx-drop-down__list\" [style.width]=\"width\"\nigxToggle\n(appended)=\"onToggleContentAppended($event)\"\n(opening)=\"onToggleOpening($event)\" (opened)=\"onToggleOpened()\"\n(closing)=\"onToggleClosing($event)\" (closed)=\"onToggleClosed()\">\n <div class=\"igx-drop-down__list-scroll\" #scrollContainer [attr.id]=\"this.listId\" role=\"listbox\" [attr.aria-label]=\"this.listId\"\n [style.height]=\"height\"\n [style.maxHeight]=\"maxHeight\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n</div>\n",
|
|
36225
|
+
providers: [{ provide: IGX_DROPDOWN_BASE, useExisting: IgxComboDropDownComponent }]
|
|
36226
|
+
},] }
|
|
36227
|
+
];
|
|
36228
|
+
IgxComboDropDownComponent.ctorParameters = () => [
|
|
36229
|
+
{ type: ElementRef },
|
|
36230
|
+
{ type: ChangeDetectorRef },
|
|
36231
|
+
{ type: PlatformUtil },
|
|
36232
|
+
{ type: IgxSelectionAPIService },
|
|
36233
|
+
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] },
|
|
36234
|
+
{ type: IgxComboAPIService },
|
|
36235
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] }
|
|
36236
|
+
];
|
|
36237
|
+
IgxComboDropDownComponent.propDecorators = {
|
|
36238
|
+
singleMode: [{ type: Input }],
|
|
36239
|
+
children: [{ type: ContentChildren, args: [IgxComboItemComponent, { descendants: true },] }]
|
|
36240
|
+
};
|
|
36241
|
+
|
|
36242
|
+
/**
|
|
36243
|
+
* @hidden
|
|
36244
|
+
*/
|
|
36245
|
+
class IgxComboFilteringPipe {
|
|
36246
|
+
transform(collection, searchValue, displayKey, filteringOptions, shouldFilter = false) {
|
|
36247
|
+
if (!collection) {
|
|
36248
|
+
return [];
|
|
36249
|
+
}
|
|
36250
|
+
if (!searchValue || !shouldFilter) {
|
|
36251
|
+
return collection;
|
|
36252
|
+
}
|
|
36253
|
+
else {
|
|
36254
|
+
const searchTerm = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
|
|
36255
|
+
if (displayKey != null) {
|
|
36256
|
+
return collection.filter(e => filteringOptions.caseSensitive ? e[displayKey].includes(searchTerm) :
|
|
36257
|
+
e[displayKey].toString().toLowerCase().includes(searchTerm));
|
|
36258
|
+
}
|
|
36259
|
+
else {
|
|
36260
|
+
return collection.filter(e => filteringOptions.caseSensitive ? e.includes(searchTerm) :
|
|
36261
|
+
e.toString().toLowerCase().includes(searchTerm));
|
|
36262
|
+
}
|
|
36263
|
+
}
|
|
36264
|
+
}
|
|
36265
|
+
}
|
|
36266
|
+
IgxComboFilteringPipe.decorators = [
|
|
36267
|
+
{ type: Pipe, args: [{
|
|
36268
|
+
name: 'comboFiltering'
|
|
36269
|
+
},] }
|
|
36270
|
+
];
|
|
36271
|
+
/**
|
|
36272
|
+
* @hidden
|
|
36273
|
+
*/
|
|
36274
|
+
class IgxComboGroupingPipe {
|
|
36275
|
+
constructor(combo) {
|
|
36276
|
+
this.combo = combo;
|
|
36277
|
+
}
|
|
36278
|
+
transform(collection, groupKey, valueKey) {
|
|
36279
|
+
this.combo.filteredData = collection;
|
|
36280
|
+
if ((!groupKey && groupKey !== 0) || !collection.length) {
|
|
36281
|
+
return collection;
|
|
36282
|
+
}
|
|
36283
|
+
const sorted = DataUtil.sort(cloneArray(collection), [{
|
|
36284
|
+
fieldName: groupKey,
|
|
36285
|
+
dir: SortingDirection.Asc,
|
|
36286
|
+
ignoreCase: true,
|
|
36287
|
+
strategy: DefaultSortingStrategy.instance()
|
|
36288
|
+
}]);
|
|
36289
|
+
const data = cloneArray(sorted);
|
|
36290
|
+
let inserts = 0;
|
|
36291
|
+
let currentHeader = null;
|
|
36292
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
36293
|
+
let insertFlag = 0;
|
|
36294
|
+
if (currentHeader !== sorted[i][groupKey]) {
|
|
36295
|
+
currentHeader = sorted[i][groupKey];
|
|
36296
|
+
insertFlag = 1;
|
|
36297
|
+
}
|
|
36298
|
+
if (insertFlag) {
|
|
36299
|
+
data.splice(i + inserts, 0, {
|
|
36300
|
+
[valueKey]: currentHeader,
|
|
36301
|
+
[groupKey]: currentHeader,
|
|
36302
|
+
isHeader: true
|
|
36303
|
+
});
|
|
36304
|
+
inserts++;
|
|
36305
|
+
}
|
|
36306
|
+
}
|
|
36307
|
+
return data;
|
|
36308
|
+
}
|
|
36309
|
+
}
|
|
36310
|
+
IgxComboGroupingPipe.decorators = [
|
|
36311
|
+
{ type: Pipe, args: [{
|
|
36312
|
+
name: 'comboGrouping'
|
|
36313
|
+
},] }
|
|
36314
|
+
];
|
|
36315
|
+
IgxComboGroupingPipe.ctorParameters = () => [
|
|
36316
|
+
{ type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] }
|
|
36317
|
+
];
|
|
36318
|
+
|
|
36319
|
+
/**
|
|
36320
|
+
* When called with sets A & B, returns A - B (as array);
|
|
36321
|
+
*
|
|
36322
|
+
* @hidden
|
|
36323
|
+
*/
|
|
36324
|
+
const diffInSets = (set1, set2) => {
|
|
36325
|
+
const results = [];
|
|
36326
|
+
set1.forEach(entry => {
|
|
36327
|
+
if (!set2.has(entry)) {
|
|
36328
|
+
results.push(entry);
|
|
36329
|
+
}
|
|
36330
|
+
});
|
|
36331
|
+
return results;
|
|
36332
|
+
};
|
|
36333
|
+
const ɵ0$1 = diffInSets;
|
|
36334
|
+
/**
|
|
36335
|
+
* Represents a drop-down list that provides editable functionalities, allowing users to choose an option from a predefined list.
|
|
36336
|
+
*
|
|
36337
|
+
* @igxModule IgxComboModule
|
|
36338
|
+
* @igxTheme igx-combo-theme
|
|
36339
|
+
* @igxKeywords combobox, combo selection
|
|
36340
|
+
* @igxGroup Grids & Lists
|
|
36341
|
+
*
|
|
36342
|
+
* @remarks
|
|
36343
|
+
* It provides the ability to filter items as well as perform selection with the provided data.
|
|
36344
|
+
* Additionally, it exposes keyboard navigation and custom styling capabilities.
|
|
36345
|
+
* @example
|
|
36346
|
+
* ```html
|
|
36347
|
+
* <igx-combo [itemsMaxHeight]="250" [data]="locationData"
|
|
36348
|
+
* [displayKey]="'field'" [valueKey]="'field'"
|
|
36349
|
+
* placeholder="Location(s)" searchPlaceholder="Search...">
|
|
36350
|
+
* </igx-combo>
|
|
36351
|
+
* ```
|
|
36352
|
+
*/
|
|
36353
|
+
class IgxComboComponent extends IgxComboBaseDirective {
|
|
36354
|
+
constructor(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector) {
|
|
36355
|
+
super(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector);
|
|
36356
|
+
this.elementRef = elementRef;
|
|
36357
|
+
this.cdr = cdr;
|
|
36358
|
+
this.selectionService = selectionService;
|
|
36359
|
+
this.comboAPI = comboAPI;
|
|
36360
|
+
this._iconService = _iconService;
|
|
36361
|
+
this._displayDensityOptions = _displayDensityOptions;
|
|
36362
|
+
this._inputGroupType = _inputGroupType;
|
|
36363
|
+
this._injector = _injector;
|
|
36364
|
+
/**
|
|
36365
|
+
* An @Input property that controls whether the combo's search box
|
|
36366
|
+
* should be focused after the `opened` event is called
|
|
36367
|
+
* When `false`, the combo's list item container will be focused instead
|
|
36368
|
+
*/
|
|
36369
|
+
this.autoFocusSearch = true;
|
|
36370
|
+
/**
|
|
36371
|
+
* An @Input property that enabled/disables filtering in the list. The default is `true`.
|
|
36372
|
+
* ```html
|
|
36373
|
+
* <igx-combo [filterable]="false">
|
|
36374
|
+
* ```
|
|
36375
|
+
*/
|
|
36376
|
+
this.filterable = true;
|
|
36377
|
+
/**
|
|
36378
|
+
* Defines the placeholder value for the combo dropdown search field
|
|
36379
|
+
*
|
|
36380
|
+
* ```typescript
|
|
36381
|
+
* // get
|
|
36382
|
+
* let myComboSearchPlaceholder = this.combo.searchPlaceholder;
|
|
36383
|
+
* ```
|
|
36384
|
+
*
|
|
36385
|
+
* ```html
|
|
36386
|
+
* <!--set-->
|
|
36387
|
+
* <igx-combo [searchPlaceholder]='newPlaceHolder'></igx-combo>
|
|
36388
|
+
* ```
|
|
36389
|
+
*/
|
|
36390
|
+
this.searchPlaceholder = 'Enter a Search Term';
|
|
36391
|
+
/**
|
|
36392
|
+
* Emitted when item selection is changing, before the selection completes
|
|
36393
|
+
*
|
|
36394
|
+
* ```html
|
|
36395
|
+
* <igx-combo (selectionChanging)='handleSelection()'></igx-combo>
|
|
36396
|
+
* ```
|
|
36397
|
+
*/
|
|
36398
|
+
this.selectionChanging = new EventEmitter();
|
|
36399
|
+
/**
|
|
36400
|
+
* @hidden @internal
|
|
36401
|
+
*/
|
|
36402
|
+
this.filteringLogic = FilteringLogic.Or;
|
|
36403
|
+
this.stringFilters = IgxStringFilteringOperand;
|
|
36404
|
+
this.booleanFilters = IgxBooleanFilteringOperand;
|
|
36405
|
+
this._prevInputValue = '';
|
|
36406
|
+
this.comboAPI.register(this);
|
|
36306
36407
|
}
|
|
36307
36408
|
/**
|
|
36308
|
-
*
|
|
36309
|
-
*
|
|
36310
|
-
* ```html
|
|
36311
|
-
* <button (click)="combo.toggle()">Toggle Combo</button>
|
|
36312
|
-
* <igx-combo #combo></igx-combo>
|
|
36313
|
-
* ```
|
|
36409
|
+
* @hidden @internal
|
|
36314
36410
|
*/
|
|
36315
|
-
|
|
36316
|
-
|
|
36317
|
-
|
|
36411
|
+
get inputEmpty() {
|
|
36412
|
+
return !this.value && !this.placeholder;
|
|
36413
|
+
}
|
|
36414
|
+
/** @hidden @internal */
|
|
36415
|
+
get filteredData() {
|
|
36416
|
+
return this.filterable ? this._filteredData : this.data;
|
|
36417
|
+
}
|
|
36418
|
+
/** @hidden @internal */
|
|
36419
|
+
set filteredData(val) {
|
|
36420
|
+
this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;
|
|
36421
|
+
this.checkMatch();
|
|
36422
|
+
}
|
|
36423
|
+
/** @hidden @internal */
|
|
36424
|
+
get displaySearchInput() {
|
|
36425
|
+
return this.filterable || this.allowCustomValues;
|
|
36318
36426
|
}
|
|
36319
36427
|
/**
|
|
36320
|
-
*
|
|
36321
|
-
*
|
|
36322
|
-
* ```html
|
|
36323
|
-
* <button (click)="combo.open()">Open Combo</button>
|
|
36324
|
-
* <igx-combo #combo></igx-combo>
|
|
36325
|
-
* ```
|
|
36428
|
+
* @hidden @internal
|
|
36326
36429
|
*/
|
|
36327
|
-
|
|
36328
|
-
|
|
36329
|
-
|
|
36430
|
+
handleKeyUp(event) {
|
|
36431
|
+
// TODO: use PlatformUtil for keyboard navigation
|
|
36432
|
+
if (event.key === 'ArrowDown' || event.key === 'Down') {
|
|
36433
|
+
this.dropdown.focusedItem = this.dropdown.items[0];
|
|
36434
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36435
|
+
}
|
|
36436
|
+
else if (event.key === 'Escape' || event.key === 'Esc') {
|
|
36437
|
+
this.toggle();
|
|
36438
|
+
}
|
|
36330
36439
|
}
|
|
36331
36440
|
/**
|
|
36332
|
-
*
|
|
36333
|
-
*
|
|
36334
|
-
* ```html
|
|
36335
|
-
* <button (click)="combo.close()">Close Combo</button>
|
|
36336
|
-
* <igx-combo #combo></igx-combo>
|
|
36337
|
-
* ```
|
|
36441
|
+
* @hidden @internal
|
|
36338
36442
|
*/
|
|
36339
|
-
|
|
36340
|
-
|
|
36443
|
+
handleSelectAll(evt) {
|
|
36444
|
+
if (evt.checked) {
|
|
36445
|
+
this.selectAllItems();
|
|
36446
|
+
}
|
|
36447
|
+
else {
|
|
36448
|
+
this.deselectAllItems();
|
|
36449
|
+
}
|
|
36341
36450
|
}
|
|
36342
36451
|
/**
|
|
36343
|
-
*
|
|
36344
|
-
*
|
|
36345
|
-
* ```typescript
|
|
36346
|
-
* let state = this.combo.collapsed;
|
|
36347
|
-
* ```
|
|
36452
|
+
* @hidden @internal
|
|
36348
36453
|
*/
|
|
36349
|
-
|
|
36350
|
-
|
|
36454
|
+
writeValue(value) {
|
|
36455
|
+
const selection = Array.isArray(value) ? value : [];
|
|
36456
|
+
const oldSelection = this.selection;
|
|
36457
|
+
this.selectionService.select_items(this.id, selection, true);
|
|
36458
|
+
this.cdr.markForCheck();
|
|
36459
|
+
this._value = this.createDisplayText(this.selection, oldSelection);
|
|
36351
36460
|
}
|
|
36352
36461
|
/**
|
|
36353
|
-
*
|
|
36354
|
-
*
|
|
36355
|
-
* @returns Array of selected items
|
|
36356
|
-
* ```typescript
|
|
36357
|
-
* let selectedItems = this.combo.selectedItems();
|
|
36358
|
-
* ```
|
|
36462
|
+
* @hidden
|
|
36359
36463
|
*/
|
|
36360
|
-
|
|
36361
|
-
|
|
36362
|
-
|
|
36464
|
+
getEditElement() {
|
|
36465
|
+
return this.comboInput.nativeElement;
|
|
36466
|
+
}
|
|
36467
|
+
/**
|
|
36468
|
+
* @hidden @internal
|
|
36469
|
+
*/
|
|
36470
|
+
get context() {
|
|
36471
|
+
return {
|
|
36472
|
+
$implicit: this
|
|
36473
|
+
};
|
|
36474
|
+
}
|
|
36475
|
+
/**
|
|
36476
|
+
* @hidden @internal
|
|
36477
|
+
*/
|
|
36478
|
+
handleClearItems(event) {
|
|
36479
|
+
if (this.disabled) {
|
|
36480
|
+
return;
|
|
36481
|
+
}
|
|
36482
|
+
this.deselectAllItems(true, event);
|
|
36483
|
+
if (this.collapsed) {
|
|
36484
|
+
this.getEditElement().focus();
|
|
36485
|
+
}
|
|
36486
|
+
else {
|
|
36487
|
+
this.focusSearchInput(true);
|
|
36488
|
+
}
|
|
36489
|
+
event.stopPropagation();
|
|
36363
36490
|
}
|
|
36364
36491
|
/**
|
|
36365
36492
|
* Select defined items
|
|
@@ -36367,12 +36494,12 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36367
36494
|
* @param newItems new items to be selected
|
|
36368
36495
|
* @param clearCurrentSelection if true clear previous selected items
|
|
36369
36496
|
* ```typescript
|
|
36370
|
-
* this.combo.
|
|
36497
|
+
* this.combo.select(["New York", "New Jersey"]);
|
|
36371
36498
|
* ```
|
|
36372
36499
|
*/
|
|
36373
|
-
|
|
36500
|
+
select(newItems, clearCurrentSelection, event) {
|
|
36374
36501
|
if (newItems) {
|
|
36375
|
-
const newSelection = this.
|
|
36502
|
+
const newSelection = this.selectionService.add_items(this.id, newItems, clearCurrentSelection);
|
|
36376
36503
|
this.setSelection(newSelection, event);
|
|
36377
36504
|
}
|
|
36378
36505
|
}
|
|
@@ -36381,12 +36508,12 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36381
36508
|
*
|
|
36382
36509
|
* @param items items to deselected
|
|
36383
36510
|
* ```typescript
|
|
36384
|
-
* this.combo.
|
|
36511
|
+
* this.combo.deselect(["New York", "New Jersey"]);
|
|
36385
36512
|
* ```
|
|
36386
36513
|
*/
|
|
36387
|
-
|
|
36514
|
+
deselect(items, event) {
|
|
36388
36515
|
if (items) {
|
|
36389
|
-
const newSelection = this.
|
|
36516
|
+
const newSelection = this.selectionService.delete_items(this.id, items);
|
|
36390
36517
|
this.setSelection(newSelection, event);
|
|
36391
36518
|
}
|
|
36392
36519
|
}
|
|
@@ -36399,8 +36526,8 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36399
36526
|
* ```
|
|
36400
36527
|
*/
|
|
36401
36528
|
selectAllItems(ignoreFilter, event) {
|
|
36402
|
-
const allVisible = this.
|
|
36403
|
-
const newSelection = this.
|
|
36529
|
+
const allVisible = this.selectionService.get_all_ids(ignoreFilter ? this.data : this.filteredData, this.valueKey);
|
|
36530
|
+
const newSelection = this.selectionService.add_items(this.id, allVisible);
|
|
36404
36531
|
this.setSelection(newSelection, event);
|
|
36405
36532
|
}
|
|
36406
36533
|
/**
|
|
@@ -36412,9 +36539,9 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36412
36539
|
* ```
|
|
36413
36540
|
*/
|
|
36414
36541
|
deselectAllItems(ignoreFilter, event) {
|
|
36415
|
-
let newSelection = this.
|
|
36542
|
+
let newSelection = this.selectionService.get_empty();
|
|
36416
36543
|
if (this.filteredData.length !== this.data.length && !ignoreFilter) {
|
|
36417
|
-
newSelection = this.
|
|
36544
|
+
newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
|
|
36418
36545
|
}
|
|
36419
36546
|
this.setSelection(newSelection, event);
|
|
36420
36547
|
}
|
|
@@ -36442,26 +36569,13 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36442
36569
|
return;
|
|
36443
36570
|
}
|
|
36444
36571
|
if (select) {
|
|
36445
|
-
this.
|
|
36572
|
+
this.select([itemID], false, event);
|
|
36446
36573
|
}
|
|
36447
36574
|
else {
|
|
36448
|
-
this.
|
|
36575
|
+
this.deselect([itemID], event);
|
|
36449
36576
|
}
|
|
36450
36577
|
}
|
|
36451
|
-
/**
|
|
36452
|
-
* Event handlers
|
|
36453
|
-
*
|
|
36454
|
-
* @hidden
|
|
36455
|
-
* @internal
|
|
36456
|
-
*/
|
|
36457
|
-
handleOpening(e) {
|
|
36458
|
-
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
36459
|
-
this.opening.emit(args);
|
|
36460
|
-
e.cancel = args.cancel;
|
|
36461
|
-
}
|
|
36462
|
-
/**
|
|
36463
|
-
* @hidden @internal
|
|
36464
|
-
*/
|
|
36578
|
+
/** @hidden @internal */
|
|
36465
36579
|
handleOpened() {
|
|
36466
36580
|
this.triggerCheck();
|
|
36467
36581
|
// Disabling focus of the search input should happen only when drop down opens.
|
|
@@ -36475,36 +36589,26 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36475
36589
|
}
|
|
36476
36590
|
this.opened.emit({ owner: this });
|
|
36477
36591
|
}
|
|
36478
|
-
/**
|
|
36479
|
-
|
|
36480
|
-
|
|
36481
|
-
|
|
36482
|
-
|
|
36483
|
-
|
|
36484
|
-
|
|
36485
|
-
|
|
36486
|
-
|
|
36592
|
+
/** @hidden @internal */
|
|
36593
|
+
focusSearchInput(opening) {
|
|
36594
|
+
if (this.displaySearchInput && this.searchInput) {
|
|
36595
|
+
this.searchInput.nativeElement.focus();
|
|
36596
|
+
}
|
|
36597
|
+
else {
|
|
36598
|
+
if (opening) {
|
|
36599
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36600
|
+
}
|
|
36601
|
+
else {
|
|
36602
|
+
this.comboInput.nativeElement.focus();
|
|
36603
|
+
this.toggle();
|
|
36604
|
+
}
|
|
36487
36605
|
}
|
|
36488
|
-
this.searchValue = '';
|
|
36489
|
-
this.comboInput.nativeElement.focus();
|
|
36490
|
-
}
|
|
36491
|
-
/**
|
|
36492
|
-
* @hidden @internal
|
|
36493
|
-
*/
|
|
36494
|
-
handleClosed() {
|
|
36495
|
-
this.closed.emit({ owner: this });
|
|
36496
|
-
}
|
|
36497
|
-
/**
|
|
36498
|
-
* @hidden @internal
|
|
36499
|
-
*/
|
|
36500
|
-
toggleCaseSensitive() {
|
|
36501
|
-
this.filteringOptions = { caseSensitive: !this.filteringOptions.caseSensitive };
|
|
36502
36606
|
}
|
|
36503
36607
|
setSelection(newSelection, event) {
|
|
36504
|
-
const removed = diffInSets(this.
|
|
36505
|
-
const added = diffInSets(newSelection, this.
|
|
36608
|
+
const removed = diffInSets(this.selectionService.get(this.id), newSelection);
|
|
36609
|
+
const added = diffInSets(newSelection, this.selectionService.get(this.id));
|
|
36506
36610
|
const newSelectionAsArray = Array.from(newSelection);
|
|
36507
|
-
const oldSelectionAsArray = Array.from(this.
|
|
36611
|
+
const oldSelectionAsArray = Array.from(this.selectionService.get(this.id) || []);
|
|
36508
36612
|
const displayText = this.createDisplayText(newSelectionAsArray, oldSelectionAsArray);
|
|
36509
36613
|
const args = {
|
|
36510
36614
|
newSelection: newSelectionAsArray,
|
|
@@ -36518,7 +36622,7 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36518
36622
|
};
|
|
36519
36623
|
this.selectionChanging.emit(args);
|
|
36520
36624
|
if (!args.cancel) {
|
|
36521
|
-
this.
|
|
36625
|
+
this.selectionService.select_items(this.id, args.newSelection, true);
|
|
36522
36626
|
if (displayText !== args.displayText) {
|
|
36523
36627
|
this._value = args.displayText;
|
|
36524
36628
|
}
|
|
@@ -36528,44 +36632,10 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36528
36632
|
this._onChangeCallback(args.newSelection);
|
|
36529
36633
|
}
|
|
36530
36634
|
}
|
|
36531
|
-
|
|
36532
|
-
|
|
36533
|
-
|
|
36534
|
-
|
|
36535
|
-
this.inputGroup.isRequired = error && error.required;
|
|
36536
|
-
}
|
|
36537
|
-
}
|
|
36538
|
-
/** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
|
|
36539
|
-
registerRemoteEntries(ids, add = true) {
|
|
36540
|
-
if (add) {
|
|
36541
|
-
const selection = this.getValueDisplayPairs(ids);
|
|
36542
|
-
for (const entry of selection) {
|
|
36543
|
-
this._remoteSelection[entry[this.valueKey]] = entry[this.displayKey];
|
|
36544
|
-
}
|
|
36545
|
-
}
|
|
36546
|
-
else {
|
|
36547
|
-
for (const entry of ids) {
|
|
36548
|
-
delete this._remoteSelection[entry];
|
|
36549
|
-
}
|
|
36550
|
-
}
|
|
36551
|
-
}
|
|
36552
|
-
/**
|
|
36553
|
-
* For `id: any[]` returns a mapped `{ [combo.valueKey]: any, [combo.displayKey]: any }[]`
|
|
36554
|
-
*/
|
|
36555
|
-
getValueDisplayPairs(ids) {
|
|
36556
|
-
return this.data.filter(entry => ids.indexOf(entry[this.valueKey]) > -1).map(e => ({
|
|
36557
|
-
[this.valueKey]: e[this.valueKey],
|
|
36558
|
-
[this.displayKey]: e[this.displayKey]
|
|
36559
|
-
}));
|
|
36560
|
-
}
|
|
36561
|
-
checkMatch() {
|
|
36562
|
-
const displayKey = this.displayKey;
|
|
36563
|
-
const matchFn = (e) => {
|
|
36564
|
-
const value = displayKey ? e[displayKey] : e;
|
|
36565
|
-
return value.toString().toLowerCase() === this.searchValue.trim().toLowerCase();
|
|
36566
|
-
};
|
|
36567
|
-
const itemMatch = this.filteredData.some(matchFn);
|
|
36568
|
-
this.customValueFlag = this.allowCustomValues && !itemMatch;
|
|
36635
|
+
createDisplayText(newSelection, oldSelection) {
|
|
36636
|
+
return this.isRemote
|
|
36637
|
+
? this.getRemoteSelection(newSelection, oldSelection)
|
|
36638
|
+
: this.concatDisplayText(newSelection);
|
|
36569
36639
|
}
|
|
36570
36640
|
/** Returns a string that should be populated in the combo's text box */
|
|
36571
36641
|
concatDisplayText(selection) {
|
|
@@ -36574,44 +36644,11 @@ class IgxComboComponent extends DisplayDensityBase {
|
|
|
36574
36644
|
selection.join(', ');
|
|
36575
36645
|
return value;
|
|
36576
36646
|
}
|
|
36577
|
-
/**
|
|
36578
|
-
* Constructs the combo display value
|
|
36579
|
-
* If remote, caches the key displayText
|
|
36580
|
-
* If not, just combine the object.displayKeys
|
|
36581
|
-
*/
|
|
36582
|
-
createDisplayText(newSelection, oldSelection) {
|
|
36583
|
-
let value = '';
|
|
36584
|
-
if (this.isRemote) {
|
|
36585
|
-
if (newSelection.length) {
|
|
36586
|
-
const removedItems = oldSelection.filter(e => newSelection.indexOf(e) < 0);
|
|
36587
|
-
const addedItems = newSelection.filter(e => oldSelection.indexOf(e) < 0);
|
|
36588
|
-
this.registerRemoteEntries(addedItems);
|
|
36589
|
-
this.registerRemoteEntries(removedItems, false);
|
|
36590
|
-
value = Object.keys(this._remoteSelection).map(e => this._remoteSelection[e]).join(', ');
|
|
36591
|
-
}
|
|
36592
|
-
else {
|
|
36593
|
-
// If new selection is empty, clear all items
|
|
36594
|
-
this.registerRemoteEntries(oldSelection, false);
|
|
36595
|
-
}
|
|
36596
|
-
}
|
|
36597
|
-
else {
|
|
36598
|
-
value = this.concatDisplayText(newSelection);
|
|
36599
|
-
}
|
|
36600
|
-
return value;
|
|
36601
|
-
}
|
|
36602
|
-
/** if there is a valueKey - map the keys to data items, else - just return the keys */
|
|
36603
|
-
convertKeysToItems(keys) {
|
|
36604
|
-
if (this.comboAPI.valueKey === null) {
|
|
36605
|
-
return keys;
|
|
36606
|
-
}
|
|
36607
|
-
// map keys vs. filter data to retain the order of the selected items
|
|
36608
|
-
return keys.map(key => this.data.find(entry => entry[this.valueKey] === key)).filter(e => e !== undefined);
|
|
36609
|
-
}
|
|
36610
36647
|
}
|
|
36611
36648
|
IgxComboComponent.decorators = [
|
|
36612
36649
|
{ type: Component, args: [{
|
|
36613
36650
|
selector: 'igx-combo',
|
|
36614
|
-
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"
|
|
36651
|
+
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"value\" readonly [attr.placeholder]=\"placeholder\"\n [disabled]=\"disabled\" (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"value.length\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n clear\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: this.collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\">\n {{ dropdown.collapsed ? 'arrow_drop_down' : 'arrow_drop_up'}}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <igx-input-group *ngIf=\"displaySearchInput\" [displayDensity]=\"displayDensity\" theme=\"material\" class=\"igx-combo__search\">\n <input class=\"igx-combo-input\" igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"searchPlaceholder\"\n aria-autocomplete=\"both\" [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\" />\n <igx-suffix *ngIf=\"showSearchCaseIcon\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n </igx-input-group>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.px]=\"itemsMaxHeight\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" role=\"listbox\" [attr.id]=\"dropdown.id\">\n <igx-combo-item role=\"option\" [itemHeight]='itemHeight' *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterable\n | comboGrouping:groupKey:valueKey\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item.isHeader\" [index]=\"rowIndex\">\n <ng-container *ngIf=\"item.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>The list is empty</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n",
|
|
36615
36652
|
providers: [
|
|
36616
36653
|
IgxComboAPIService,
|
|
36617
36654
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
|
|
@@ -36630,56 +36667,11 @@ IgxComboComponent.ctorParameters = () => [
|
|
|
36630
36667
|
{ type: Injector, decorators: [{ type: Optional }] }
|
|
36631
36668
|
];
|
|
36632
36669
|
IgxComboComponent.propDecorators = {
|
|
36633
|
-
overlaySettings: [{ type: Input }],
|
|
36634
|
-
inputGroup: [{ type: ViewChild, args: ['inputGroup', { read: IgxInputGroupComponent, static: true },] }],
|
|
36635
|
-
comboInput: [{ type: ViewChild, args: ['comboInput', { read: IgxInputDirective, static: true },] }],
|
|
36636
|
-
dropdown: [{ type: ViewChild, args: [IgxComboDropDownComponent, { read: IgxComboDropDownComponent, static: true },] }],
|
|
36637
|
-
searchInput: [{ type: ViewChild, args: ['searchInput',] }],
|
|
36638
|
-
itemTemplate: [{ type: ContentChild, args: [IgxComboItemDirective, { read: TemplateRef },] }],
|
|
36639
|
-
headerTemplate: [{ type: ContentChild, args: [IgxComboHeaderDirective, { read: TemplateRef },] }],
|
|
36640
|
-
footerTemplate: [{ type: ContentChild, args: [IgxComboFooterDirective, { read: TemplateRef },] }],
|
|
36641
|
-
headerItemTemplate: [{ type: ContentChild, args: [IgxComboHeaderItemDirective, { read: TemplateRef },] }],
|
|
36642
|
-
addItemTemplate: [{ type: ContentChild, args: [IgxComboAddItemDirective, { read: TemplateRef },] }],
|
|
36643
|
-
emptyTemplate: [{ type: ContentChild, args: [IgxComboEmptyDirective, { read: TemplateRef },] }],
|
|
36644
|
-
toggleIconTemplate: [{ type: ContentChild, args: [IgxComboToggleIconDirective, { read: TemplateRef },] }],
|
|
36645
|
-
clearIconTemplate: [{ type: ContentChild, args: [IgxComboClearIconDirective, { read: TemplateRef },] }],
|
|
36646
|
-
virtualScrollContainer: [{ type: ViewChild, args: [IgxForOfDirective, { static: true },] }],
|
|
36647
|
-
selectionChanging: [{ type: Output }],
|
|
36648
|
-
opening: [{ type: Output }],
|
|
36649
|
-
opened: [{ type: Output }],
|
|
36650
|
-
closing: [{ type: Output }],
|
|
36651
|
-
closed: [{ type: Output }],
|
|
36652
|
-
addition: [{ type: Output }],
|
|
36653
|
-
searchInputUpdate: [{ type: Output }],
|
|
36654
|
-
dataPreLoad: [{ type: Output }],
|
|
36655
|
-
id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }],
|
|
36656
|
-
width: [{ type: HostBinding, args: ['style.width',] }, { type: Input }],
|
|
36657
|
-
cssClass: [{ type: HostBinding, args: ['class.igx-combo',] }],
|
|
36658
|
-
role: [{ type: HostBinding, args: [`attr.role`,] }],
|
|
36659
|
-
ariaExpanded: [{ type: HostBinding, args: ['attr.aria-expanded',] }],
|
|
36660
|
-
hasPopUp: [{ type: HostBinding, args: ['attr.aria-haspopup',] }],
|
|
36661
|
-
ariaOwns: [{ type: HostBinding, args: ['attr.aria-owns',] }],
|
|
36662
|
-
allowCustomValues: [{ type: Input }],
|
|
36663
|
-
itemsMaxHeight: [{ type: Input }],
|
|
36664
|
-
itemsWidth: [{ type: Input }],
|
|
36665
|
-
itemHeight: [{ type: Input }],
|
|
36666
|
-
placeholder: [{ type: Input }],
|
|
36667
|
-
searchPlaceholder: [{ type: Input }],
|
|
36668
|
-
showSearchCaseIcon: [{ type: Input }],
|
|
36669
|
-
data: [{ type: Input }],
|
|
36670
|
-
valueKey: [{ type: Input }],
|
|
36671
|
-
displayKey: [{ type: Input }],
|
|
36672
|
-
groupKey: [{ type: Input }],
|
|
36673
|
-
filterable: [{ type: Input }],
|
|
36674
|
-
ariaLabelledBy: [{ type: Input }, { type: HostBinding, args: ['attr.aria-labelledby',] }],
|
|
36675
|
-
disabled: [{ type: Input }],
|
|
36676
|
-
type: [{ type: Input }],
|
|
36677
36670
|
autoFocusSearch: [{ type: Input }],
|
|
36678
|
-
|
|
36679
|
-
|
|
36680
|
-
|
|
36681
|
-
|
|
36682
|
-
onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
|
|
36671
|
+
filterable: [{ type: Input }],
|
|
36672
|
+
searchPlaceholder: [{ type: Input }],
|
|
36673
|
+
selectionChanging: [{ type: Output }],
|
|
36674
|
+
dropdown: [{ type: ViewChild, args: [IgxComboDropDownComponent, { static: true },] }]
|
|
36683
36675
|
};
|
|
36684
36676
|
/**
|
|
36685
36677
|
* @hidden
|
|
@@ -36699,6 +36691,8 @@ IgxComboModule.decorators = [
|
|
|
36699
36691
|
IgxComboToggleIconDirective,
|
|
36700
36692
|
IgxComboClearIconDirective],
|
|
36701
36693
|
exports: [IgxComboComponent, IgxComboItemComponent, IgxComboDropDownComponent, IgxComboAddItemComponent,
|
|
36694
|
+
IgxComboGroupingPipe,
|
|
36695
|
+
IgxComboFilteringPipe,
|
|
36702
36696
|
IgxComboItemDirective,
|
|
36703
36697
|
IgxComboEmptyDirective,
|
|
36704
36698
|
IgxComboHeaderItemDirective,
|
|
@@ -36713,6 +36707,375 @@ IgxComboModule.decorators = [
|
|
|
36713
36707
|
},] }
|
|
36714
36708
|
];
|
|
36715
36709
|
|
|
36710
|
+
/**
|
|
36711
|
+
* Represents a drop-down list that provides filtering functionality, allowing users to choose a single option from a predefined list.
|
|
36712
|
+
*
|
|
36713
|
+
* @igxModule IgxSimpleComboModule
|
|
36714
|
+
* @igxTheme igx-combo-theme
|
|
36715
|
+
* @igxKeywords combobox, single combo selection
|
|
36716
|
+
* @igxGroup Grids & Lists
|
|
36717
|
+
*
|
|
36718
|
+
* @remarks
|
|
36719
|
+
* It provides the ability to filter items as well as perform single selection on the provided data.
|
|
36720
|
+
* Additionally, it exposes keyboard navigation and custom styling capabilities.
|
|
36721
|
+
* @example
|
|
36722
|
+
* ```html
|
|
36723
|
+
* <igx-simple-combo [itemsMaxHeight]="250" [data]="locationData"
|
|
36724
|
+
* [displayKey]="'field'" [valueKey]="'field'"
|
|
36725
|
+
* placeholder="Location" searchPlaceholder="Search...">
|
|
36726
|
+
* </igx-simple-combo>
|
|
36727
|
+
* ```
|
|
36728
|
+
*/
|
|
36729
|
+
class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
36730
|
+
constructor(elementRef, cdr, selectionService, comboAPI, _iconService, platformUtil, _displayDensityOptions, _inputGroupType, _injector) {
|
|
36731
|
+
super(elementRef, cdr, selectionService, comboAPI, _iconService, _displayDensityOptions, _inputGroupType, _injector);
|
|
36732
|
+
this.elementRef = elementRef;
|
|
36733
|
+
this.cdr = cdr;
|
|
36734
|
+
this.selectionService = selectionService;
|
|
36735
|
+
this.comboAPI = comboAPI;
|
|
36736
|
+
this._iconService = _iconService;
|
|
36737
|
+
this.platformUtil = platformUtil;
|
|
36738
|
+
this._displayDensityOptions = _displayDensityOptions;
|
|
36739
|
+
this._inputGroupType = _inputGroupType;
|
|
36740
|
+
this._injector = _injector;
|
|
36741
|
+
/**
|
|
36742
|
+
* Emitted when item selection is changing, before the selection completes
|
|
36743
|
+
*
|
|
36744
|
+
* ```html
|
|
36745
|
+
* <igx-simple-combo (selectionChanging)='handleSelection()'></igx-simple-combo>
|
|
36746
|
+
* ```
|
|
36747
|
+
*/
|
|
36748
|
+
this.selectionChanging = new EventEmitter();
|
|
36749
|
+
/** @hidden @internal */
|
|
36750
|
+
this.composing = false;
|
|
36751
|
+
this._updateInput = true;
|
|
36752
|
+
this.findMatch = (element) => {
|
|
36753
|
+
const value = this.displayKey ? element[this.displayKey] : element;
|
|
36754
|
+
return value.toString().toLowerCase().includes(this.searchValue.trim().toLowerCase());
|
|
36755
|
+
};
|
|
36756
|
+
this.comboAPI.register(this);
|
|
36757
|
+
}
|
|
36758
|
+
/** @hidden @internal */
|
|
36759
|
+
get filteredData() {
|
|
36760
|
+
return this._filteredData;
|
|
36761
|
+
}
|
|
36762
|
+
/** @hidden @internal */
|
|
36763
|
+
set filteredData(val) {
|
|
36764
|
+
this._filteredData = this.groupKey ? (val || []).filter((e) => e.isHeader !== true) : val;
|
|
36765
|
+
this.checkMatch();
|
|
36766
|
+
}
|
|
36767
|
+
/** @hidden @internal */
|
|
36768
|
+
onArrowDown(event) {
|
|
36769
|
+
if (this.collapsed) {
|
|
36770
|
+
event.preventDefault();
|
|
36771
|
+
event.stopPropagation();
|
|
36772
|
+
this.open();
|
|
36773
|
+
}
|
|
36774
|
+
else {
|
|
36775
|
+
if (this.virtDir.igxForOf.length > 0) {
|
|
36776
|
+
this.dropdown.navigateFirst();
|
|
36777
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36778
|
+
}
|
|
36779
|
+
else if (this.allowCustomValues) {
|
|
36780
|
+
this.addItem.element.nativeElement.focus();
|
|
36781
|
+
}
|
|
36782
|
+
}
|
|
36783
|
+
}
|
|
36784
|
+
/**
|
|
36785
|
+
* Select a defined item
|
|
36786
|
+
*
|
|
36787
|
+
* @param item the item to be selected
|
|
36788
|
+
* ```typescript
|
|
36789
|
+
* this.combo.select("New York");
|
|
36790
|
+
* ```
|
|
36791
|
+
*/
|
|
36792
|
+
select(item) {
|
|
36793
|
+
if (item !== null && item !== undefined) {
|
|
36794
|
+
const newSelection = this.selectionService.add_items(this.id, item instanceof Array ? item : [item], true);
|
|
36795
|
+
this.setSelection(newSelection);
|
|
36796
|
+
}
|
|
36797
|
+
}
|
|
36798
|
+
/**
|
|
36799
|
+
* Deselect the currently selected item
|
|
36800
|
+
*
|
|
36801
|
+
* @param item the items to be deselected
|
|
36802
|
+
* ```typescript
|
|
36803
|
+
* this.combo.deselect("New York");
|
|
36804
|
+
* ```
|
|
36805
|
+
*/
|
|
36806
|
+
deselect() {
|
|
36807
|
+
this.clearSelection();
|
|
36808
|
+
}
|
|
36809
|
+
/** @hidden @internal */
|
|
36810
|
+
writeValue(value) {
|
|
36811
|
+
const oldSelection = this.selection;
|
|
36812
|
+
this.selectionService.select_items(this.id, value ? [value] : [], true);
|
|
36813
|
+
this.cdr.markForCheck();
|
|
36814
|
+
this._value = this.createDisplayText(this.selection, oldSelection);
|
|
36815
|
+
}
|
|
36816
|
+
/** @hidden @internal */
|
|
36817
|
+
ngAfterViewInit() {
|
|
36818
|
+
this.virtDir.contentSizeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
36819
|
+
if (this.selection.length > 0) {
|
|
36820
|
+
const index = this.virtDir.igxForOf.findIndex(e => {
|
|
36821
|
+
let current = e[this.valueKey];
|
|
36822
|
+
if (this.valueKey === null || this.valueKey === undefined) {
|
|
36823
|
+
current = e;
|
|
36824
|
+
}
|
|
36825
|
+
return current === this.selection[0];
|
|
36826
|
+
});
|
|
36827
|
+
this.dropdown.navigateItem(index);
|
|
36828
|
+
}
|
|
36829
|
+
});
|
|
36830
|
+
this.dropdown.opened.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
36831
|
+
if (this.composing) {
|
|
36832
|
+
this.comboInput.focus();
|
|
36833
|
+
}
|
|
36834
|
+
});
|
|
36835
|
+
this.dropdown.closing.pipe(takeUntil(this.destroy$)).subscribe((args) => {
|
|
36836
|
+
if (this.getEditElement() && !args.event) {
|
|
36837
|
+
this.comboInput.focus();
|
|
36838
|
+
}
|
|
36839
|
+
else {
|
|
36840
|
+
this.clearOnBlur();
|
|
36841
|
+
this._onTouchedCallback();
|
|
36842
|
+
}
|
|
36843
|
+
});
|
|
36844
|
+
super.ngAfterViewInit();
|
|
36845
|
+
}
|
|
36846
|
+
/** @hidden @internal */
|
|
36847
|
+
handleInputChange(event) {
|
|
36848
|
+
this.searchValue = event.target.value;
|
|
36849
|
+
this._onChangeCallback(this.searchValue);
|
|
36850
|
+
if (this.collapsed && this.comboInput.focused) {
|
|
36851
|
+
this.open();
|
|
36852
|
+
this.dropdown.navigateFirst();
|
|
36853
|
+
}
|
|
36854
|
+
if (!this.comboInput.value.trim()) {
|
|
36855
|
+
// handle clearing of input by space
|
|
36856
|
+
this.clearSelection();
|
|
36857
|
+
this._onChangeCallback(null);
|
|
36858
|
+
}
|
|
36859
|
+
super.handleInputChange(event);
|
|
36860
|
+
this.composing = true;
|
|
36861
|
+
}
|
|
36862
|
+
/** @hidden @internal */
|
|
36863
|
+
handleKeyDown(event) {
|
|
36864
|
+
if (event.key === this.platformUtil.KEYMAP.ENTER) {
|
|
36865
|
+
const filtered = this.filteredData.find(this.findMatch);
|
|
36866
|
+
if (filtered === null || filtered === undefined) {
|
|
36867
|
+
return;
|
|
36868
|
+
}
|
|
36869
|
+
this.select(this.dropdown.focusedItem.itemID);
|
|
36870
|
+
event.preventDefault();
|
|
36871
|
+
event.stopPropagation();
|
|
36872
|
+
this.close();
|
|
36873
|
+
// manually trigger text selection as it will not be triggered during editing
|
|
36874
|
+
this.textSelection.trigger();
|
|
36875
|
+
return;
|
|
36876
|
+
}
|
|
36877
|
+
if (event.key === this.platformUtil.KEYMAP.BACKSPACE
|
|
36878
|
+
|| event.key === this.platformUtil.KEYMAP.DELETE) {
|
|
36879
|
+
this._updateInput = false;
|
|
36880
|
+
this.clearSelection();
|
|
36881
|
+
}
|
|
36882
|
+
if (!this.collapsed && event.key === this.platformUtil.KEYMAP.TAB) {
|
|
36883
|
+
this.close();
|
|
36884
|
+
this.clearOnBlur();
|
|
36885
|
+
}
|
|
36886
|
+
this.composing = false;
|
|
36887
|
+
super.handleKeyDown(event);
|
|
36888
|
+
}
|
|
36889
|
+
/** @hidden @internal */
|
|
36890
|
+
handleKeyUp(event) {
|
|
36891
|
+
if (event.key === this.platformUtil.KEYMAP.ARROW_DOWN) {
|
|
36892
|
+
const firstItem = this.selectionService.first_item(this.id);
|
|
36893
|
+
this.dropdown.focusedItem = firstItem && this.filteredData.length > 0
|
|
36894
|
+
? this.dropdown.items.find(i => i.itemID === firstItem)
|
|
36895
|
+
: this.dropdown.items[0];
|
|
36896
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36897
|
+
}
|
|
36898
|
+
}
|
|
36899
|
+
/** @hidden @internal */
|
|
36900
|
+
handleItemKeyDown(event) {
|
|
36901
|
+
if (event.key === this.platformUtil.KEYMAP.ARROW_UP && event.altKey) {
|
|
36902
|
+
this.close();
|
|
36903
|
+
this.comboInput.focus();
|
|
36904
|
+
return;
|
|
36905
|
+
}
|
|
36906
|
+
if (event.key === this.platformUtil.KEYMAP.ENTER) {
|
|
36907
|
+
this.comboInput.focus();
|
|
36908
|
+
}
|
|
36909
|
+
}
|
|
36910
|
+
/** @hidden @internal */
|
|
36911
|
+
handleItemClick() {
|
|
36912
|
+
this.close();
|
|
36913
|
+
this.comboInput.focus();
|
|
36914
|
+
}
|
|
36915
|
+
/** @hidden @internal */
|
|
36916
|
+
onBlur() {
|
|
36917
|
+
if (this.collapsed) {
|
|
36918
|
+
this.clearOnBlur();
|
|
36919
|
+
}
|
|
36920
|
+
super.onBlur();
|
|
36921
|
+
}
|
|
36922
|
+
/** @hidden @internal */
|
|
36923
|
+
getEditElement() {
|
|
36924
|
+
return this.comboInput.nativeElement;
|
|
36925
|
+
}
|
|
36926
|
+
/** @hidden @internal */
|
|
36927
|
+
handleClear(event) {
|
|
36928
|
+
if (this.disabled) {
|
|
36929
|
+
return;
|
|
36930
|
+
}
|
|
36931
|
+
this.clearSelection(true);
|
|
36932
|
+
if (this.collapsed) {
|
|
36933
|
+
this.open();
|
|
36934
|
+
this.dropdown.navigateFirst();
|
|
36935
|
+
}
|
|
36936
|
+
else {
|
|
36937
|
+
this.focusSearchInput(true);
|
|
36938
|
+
}
|
|
36939
|
+
event.stopPropagation();
|
|
36940
|
+
this.comboInput.value = this.filterValue = this.searchValue = '';
|
|
36941
|
+
this.dropdown.focusedItem = null;
|
|
36942
|
+
this.composing = false;
|
|
36943
|
+
this.comboInput.focus();
|
|
36944
|
+
}
|
|
36945
|
+
/** @hidden @internal */
|
|
36946
|
+
handleOpened() {
|
|
36947
|
+
this.triggerCheck();
|
|
36948
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36949
|
+
this.opened.emit({ owner: this });
|
|
36950
|
+
}
|
|
36951
|
+
/** @hidden @internal */
|
|
36952
|
+
handleClosing(e) {
|
|
36953
|
+
const args = { owner: this, event: e.event, cancel: e.cancel };
|
|
36954
|
+
this.closing.emit(args);
|
|
36955
|
+
e.cancel = args.cancel;
|
|
36956
|
+
if (e.cancel) {
|
|
36957
|
+
return;
|
|
36958
|
+
}
|
|
36959
|
+
this.composing = false;
|
|
36960
|
+
// explicitly update selection and trigger text selection so that we don't have to force CD
|
|
36961
|
+
this.textSelection.selected = true;
|
|
36962
|
+
this.textSelection.trigger();
|
|
36963
|
+
}
|
|
36964
|
+
/** @hidden @internal */
|
|
36965
|
+
focusSearchInput(opening) {
|
|
36966
|
+
if (opening) {
|
|
36967
|
+
this.dropdownContainer.nativeElement.focus();
|
|
36968
|
+
}
|
|
36969
|
+
else {
|
|
36970
|
+
this.comboInput.nativeElement.focus();
|
|
36971
|
+
this.toggle();
|
|
36972
|
+
}
|
|
36973
|
+
}
|
|
36974
|
+
/** @hidden @internal */
|
|
36975
|
+
onClick(event) {
|
|
36976
|
+
super.onClick(event);
|
|
36977
|
+
if (this.comboInput.value.length === 0) {
|
|
36978
|
+
this.virtDir.scrollTo(0);
|
|
36979
|
+
}
|
|
36980
|
+
}
|
|
36981
|
+
setSelection(newSelection) {
|
|
36982
|
+
const newSelectionAsArray = newSelection ? Array.from(newSelection) : [];
|
|
36983
|
+
const oldSelectionAsArray = Array.from(this.selectionService.get(this.id) || []);
|
|
36984
|
+
const displayText = this.createDisplayText(newSelectionAsArray, oldSelectionAsArray);
|
|
36985
|
+
const args = {
|
|
36986
|
+
newSelection: newSelectionAsArray[0],
|
|
36987
|
+
oldSelection: oldSelectionAsArray[0],
|
|
36988
|
+
displayText,
|
|
36989
|
+
owner: this,
|
|
36990
|
+
cancel: false
|
|
36991
|
+
};
|
|
36992
|
+
this.selectionChanging.emit(args);
|
|
36993
|
+
if (!args.cancel) {
|
|
36994
|
+
const argsSelection = args.newSelection !== undefined
|
|
36995
|
+
&& args.newSelection !== null
|
|
36996
|
+
? [args.newSelection]
|
|
36997
|
+
: [];
|
|
36998
|
+
this.selectionService.select_items(this.id, argsSelection, true);
|
|
36999
|
+
if (this._updateInput) {
|
|
37000
|
+
this.comboInput.value = this._value = displayText !== args.displayText
|
|
37001
|
+
? args.displayText
|
|
37002
|
+
: this.createDisplayText(argsSelection, [args.oldSelection]);
|
|
37003
|
+
}
|
|
37004
|
+
this._onChangeCallback(args.newSelection);
|
|
37005
|
+
this._updateInput = true;
|
|
37006
|
+
}
|
|
37007
|
+
}
|
|
37008
|
+
createDisplayText(newSelection, oldSelection) {
|
|
37009
|
+
if (this.isRemote) {
|
|
37010
|
+
return this.getRemoteSelection(newSelection, oldSelection);
|
|
37011
|
+
}
|
|
37012
|
+
if (this.displayKey !== null && this.displayKey !== undefined
|
|
37013
|
+
&& newSelection.length > 0) {
|
|
37014
|
+
return this.convertKeysToItems(newSelection).map(e => e[this.displayKey])[0];
|
|
37015
|
+
}
|
|
37016
|
+
return newSelection[0] || '';
|
|
37017
|
+
}
|
|
37018
|
+
clearSelection(ignoreFilter) {
|
|
37019
|
+
let newSelection = this.selectionService.get_empty();
|
|
37020
|
+
if (this.filteredData.length !== this.data.length && !ignoreFilter) {
|
|
37021
|
+
newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
|
|
37022
|
+
}
|
|
37023
|
+
this.setSelection(newSelection);
|
|
37024
|
+
}
|
|
37025
|
+
clearOnBlur() {
|
|
37026
|
+
const filtered = this.filteredData.find(this.findMatch);
|
|
37027
|
+
if ((filtered === undefined || filtered === null)) {
|
|
37028
|
+
this.close();
|
|
37029
|
+
this.clearSelection();
|
|
37030
|
+
this.searchValue = '';
|
|
37031
|
+
}
|
|
37032
|
+
}
|
|
37033
|
+
}
|
|
37034
|
+
IgxSimpleComboComponent.decorators = [
|
|
37035
|
+
{ type: Component, args: [{
|
|
37036
|
+
selector: 'igx-simple-combo',
|
|
37037
|
+
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [suppressInputAutofocus]=\"true\" [type]=\"type\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"value\" (input)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" [attr.placeholder]=\"placeholder\" aria-autocomplete=\"both\"\n [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\" [disabled]=\"disabled\"\n [igxTextSelection]=\"!composing\" />\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"comboInput.value.length\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClear($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n clear\n </igx-icon>\n </igx-suffix>\n <igx-suffix *ngIf=\"showSearchCaseIcon\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon (click)=\"onClick($event)\" *ngIf=\"!toggleIconTemplate\">\n {{ dropdown.collapsed ? 'arrow_drop_down' : 'arrow_drop_up'}}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.px]=\"itemsMaxHeight\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" role=\"listbox\" [attr.id]=\"dropdown.id\"\n (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item role=\"option\" [singleMode]=\"true\" [itemHeight]='itemHeight' (click)=\"handleItemClick()\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:true\n | comboGrouping:groupKey:valueKey\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item.isHeader\" [index]=\"rowIndex\">\n <ng-container *ngIf=\"item.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>The list is empty</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n",
|
|
37038
|
+
providers: [
|
|
37039
|
+
IgxComboAPIService,
|
|
37040
|
+
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },
|
|
37041
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSimpleComboComponent, multi: true }
|
|
37042
|
+
]
|
|
37043
|
+
},] }
|
|
37044
|
+
];
|
|
37045
|
+
IgxSimpleComboComponent.ctorParameters = () => [
|
|
37046
|
+
{ type: ElementRef },
|
|
37047
|
+
{ type: ChangeDetectorRef },
|
|
37048
|
+
{ type: IgxSelectionAPIService },
|
|
37049
|
+
{ type: IgxComboAPIService },
|
|
37050
|
+
{ type: IgxIconService },
|
|
37051
|
+
{ type: PlatformUtil },
|
|
37052
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DisplayDensityToken,] }] },
|
|
37053
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [IGX_INPUT_GROUP_TYPE,] }] },
|
|
37054
|
+
{ type: Injector, decorators: [{ type: Optional }] }
|
|
37055
|
+
];
|
|
37056
|
+
IgxSimpleComboComponent.propDecorators = {
|
|
37057
|
+
dropdown: [{ type: ViewChild, args: [IgxComboDropDownComponent, { static: true },] }],
|
|
37058
|
+
addItem: [{ type: ViewChild, args: [IgxComboAddItemComponent,] }],
|
|
37059
|
+
selectionChanging: [{ type: Output }],
|
|
37060
|
+
textSelection: [{ type: ViewChild, args: [IgxTextSelectionDirective, { static: true },] }],
|
|
37061
|
+
onArrowDown: [{ type: HostListener, args: ['keydown.ArrowDown', ['$event'],] }, { type: HostListener, args: ['keydown.Alt.ArrowDown', ['$event'],] }]
|
|
37062
|
+
};
|
|
37063
|
+
class IgxSimpleComboModule {
|
|
37064
|
+
}
|
|
37065
|
+
IgxSimpleComboModule.decorators = [
|
|
37066
|
+
{ type: NgModule, args: [{
|
|
37067
|
+
declarations: [IgxSimpleComboComponent],
|
|
37068
|
+
imports: [
|
|
37069
|
+
IgxComboModule, IgxRippleModule, CommonModule,
|
|
37070
|
+
IgxInputGroupModule, FormsModule, ReactiveFormsModule,
|
|
37071
|
+
IgxForOfModule, IgxToggleModule, IgxCheckboxModule,
|
|
37072
|
+
IgxDropDownModule, IgxButtonModule, IgxIconModule,
|
|
37073
|
+
IgxTextSelectionModule
|
|
37074
|
+
],
|
|
37075
|
+
exports: [IgxSimpleComboComponent, IgxComboModule]
|
|
37076
|
+
},] }
|
|
37077
|
+
];
|
|
37078
|
+
|
|
36716
37079
|
/** Header orientation in `dialog` mode. */
|
|
36717
37080
|
const PickerHeaderOrientation = mkenum({
|
|
36718
37081
|
Horizontal: 'horizontal',
|
|
@@ -39089,7 +39452,7 @@ IgxGridExcelStyleFilteringComponent.decorators = [
|
|
|
39089
39452
|
{ type: Component, args: [{
|
|
39090
39453
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
39091
39454
|
selector: 'igx-grid-excel-style-filtering',
|
|
39092
|
-
template: "<ng-template #defaultExcelColumnOperations>\n <igx-excel-style-header\n [showHiding]=\"displayDensity !== 'comfortable' && !column?.disableHiding\"\n [showPinning]=\"displayDensity !== 'comfortable' && !column?.disablePinning\"\n [showSelecting]=\"displayDensity !== 'comfortable' && columnSelectable()\"\n >\n </igx-excel-style-header>\n\n <igx-excel-style-sorting *ngIf=\"column?.sortable\">\n </igx-excel-style-sorting>\n\n <igx-excel-style-moving *ngIf=\"column?.movable\">\n </igx-excel-style-moving>\n\n <igx-excel-style-pinning *ngIf=\"!column?.disablePinning && displayDensity==='comfortable'\">\n </igx-excel-style-pinning>\n\n <igx-excel-style-hiding *ngIf=\"!column?.disableHiding && displayDensity==='comfortable'\">\n </igx-excel-style-hiding>\n\n <igx-excel-style-selecting *ngIf=\"columnSelectable() && displayDensity==='comfortable'\">\n </igx-excel-style-selecting>\n</ng-template>\n\n<ng-template #defaultExcelFilterOperations>\n <igx-excel-style-clear-filters>\n </igx-excel-style-clear-filters>\n\n <igx-excel-style-conditional-filter>\n </igx-excel-style-conditional-filter>\n\n <igx-excel-style-search>\n </igx-excel-style-search>\n</ng-template>\n\n<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__menu--cosy': displayDensity === 'cosy',\n 'igx-excel-filter__menu--compact': displayDensity === 'compact'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\">\n\n <ng-container *ngIf=\"this.excelColumnOperationsDirective; else defaultExcelColumnOperations\">\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n </ng-container>\n\n <ng-container *ngIf=\"this.excelFilterOperationsDirective; else defaultExcelFilterOperations\">\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n </ng-container>\n</article>\n"
|
|
39455
|
+
template: "<ng-template #defaultExcelColumnOperations>\n <igx-excel-style-header\n [showHiding]=\"displayDensity !== 'comfortable' && !column?.disableHiding\"\n [showPinning]=\"displayDensity !== 'comfortable' && !column?.disablePinning\"\n [showSelecting]=\"displayDensity !== 'comfortable' && columnSelectable()\"\n >\n </igx-excel-style-header>\n\n <igx-excel-style-sorting *ngIf=\"column?.sortable\">\n </igx-excel-style-sorting>\n\n <igx-excel-style-moving *ngIf=\"column?.movable\">\n </igx-excel-style-moving>\n\n <igx-excel-style-pinning *ngIf=\"!column?.disablePinning && displayDensity==='comfortable'\">\n </igx-excel-style-pinning>\n\n <igx-excel-style-hiding *ngIf=\"!column?.disableHiding && displayDensity==='comfortable'\">\n </igx-excel-style-hiding>\n\n <igx-excel-style-selecting *ngIf=\"columnSelectable() && displayDensity==='comfortable'\">\n </igx-excel-style-selecting>\n</ng-template>\n\n<ng-template #defaultExcelFilterOperations>\n <igx-excel-style-clear-filters>\n </igx-excel-style-clear-filters>\n\n <igx-excel-style-conditional-filter>\n </igx-excel-style-conditional-filter>\n\n <igx-excel-style-search>\n </igx-excel-style-search>\n</ng-template>\n\n<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__menu--cosy': displayDensity === 'cosy',\n 'igx-excel-filter__menu--compact': displayDensity === 'compact'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n role=\"menu\">\n\n <ng-container *ngIf=\"this.excelColumnOperationsDirective; else defaultExcelColumnOperations\">\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n </ng-container>\n\n <ng-container *ngIf=\"this.excelFilterOperationsDirective; else defaultExcelFilterOperations\">\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n </ng-container>\n</article>\n"
|
|
39093
39456
|
},] }
|
|
39094
39457
|
];
|
|
39095
39458
|
IgxGridExcelStyleFilteringComponent.ctorParameters = () => [
|
|
@@ -40643,7 +41006,7 @@ IgxExcelStyleDateExpressionComponent.decorators = [
|
|
|
40643
41006
|
{ type: Component, args: [{
|
|
40644
41007
|
preserveWhitespaces: false,
|
|
40645
41008
|
selector: 'igx-excel-style-date-expression',
|
|
40646
|
-
template: "<igx-select #dropdownConditions\n type=\"box\"\n [displayDensity]=\"displayDensity\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n <igx-icon *ngIf=\"expressionUI.expression.condition\" family=\"imx-icons\" [name]=\"getIconName()\"></igx-icon>\n <igx-icon *ngIf=\"!expressionUI.expression.condition\">filter_list</igx-icon>\n </igx-prefix>\n <igx-select-item *ngFor=\"let condition of conditions\" [value]=\"condition\" [selected]=\"isConditionSelected(condition)\">\n <igx-icon family=\"imx-icons\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span>{{translateCondition(condition)}}</span>\n </igx-select-item>\n</igx-select>\n\n<igx-date-picker #picker *ngIf=\"column.dataType === 'date'\"\n [(value)]=\"expressionUI.expression.searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayDensity]=\"displayDensity\"\n (click)=\"picker.open()\"\n [readOnly]=\"true\"\n [placeholder]=\"inputDatePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [formatter]=\"column.formatter\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"\n type=\"box\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n</igx-date-picker>\n\n<igx-time-picker #picker *ngIf=\"column.dataType === 'time'\"\n [inputFormat]=\"column.defaultTimeFormat\"\n [(value)]=\"expressionUI.expression.searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayDensity]=\"displayDensity\"\n (click)=\"picker.open()\"\n [readOnly]=\"true\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [formatter]=\"column.formatter\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"\n type=\"box\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n</igx-time-picker>\n\n<igx-input-group #dropDownTarget *ngIf=\"column.dataType === 'dateTime'\" #inputGroup type=\"box\" [displayDensity]=\"displayDensity\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [igxDateTimeEditor]=\"column.defaultDateTimeFormat\"\n [(ngModel)]=\"expressionUI.expression.searchVal\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"/>\n</igx-input-group>\n\n<button (click)=\"onRemoveButtonClick()\" igxButton=\"icon\" [displayDensity]=\"displayDensity\" *ngIf=\"!isSingle\" >\n <igx-icon>cancel</igx-icon>\n</button>\n\n<igx-buttongroup #logicOperatorButtonGroup\n *ngIf=\"!isLast\"\n [multiSelection]=\"false\">\n <span igxButton [displayDensity]=\"displayDensity\"\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n tabindex=\"0\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n\n <span igxButton [displayDensity]=\"displayDensity\"\n #orButton\n tabindex=\"0\"\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n</igx-buttongroup>\n\n<div #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n"
|
|
41009
|
+
template: "<igx-select #dropdownConditions\n type=\"box\"\n [displayDensity]=\"displayDensity\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n <igx-icon *ngIf=\"expressionUI.expression.condition\" family=\"imx-icons\" [name]=\"getIconName()\"></igx-icon>\n <igx-icon *ngIf=\"!expressionUI.expression.condition\">filter_list</igx-icon>\n </igx-prefix>\n <igx-select-item *ngFor=\"let condition of conditions\" [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\" [selected]=\"isConditionSelected(condition)\">\n <igx-icon family=\"imx-icons\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span>{{translateCondition(condition)}}</span>\n </igx-select-item>\n</igx-select>\n\n<igx-date-picker #picker *ngIf=\"column.dataType === 'date'\"\n [(value)]=\"expressionUI.expression.searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayDensity]=\"displayDensity\"\n (click)=\"picker.open()\"\n [readOnly]=\"true\"\n [placeholder]=\"inputDatePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [formatter]=\"column.formatter\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"\n type=\"box\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n</igx-date-picker>\n\n<igx-time-picker #picker *ngIf=\"column.dataType === 'time'\"\n [inputFormat]=\"column.defaultTimeFormat\"\n [(value)]=\"expressionUI.expression.searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayDensity]=\"displayDensity\"\n (click)=\"picker.open()\"\n [readOnly]=\"true\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [formatter]=\"column.formatter\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"\n type=\"box\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n</igx-time-picker>\n\n<igx-input-group #dropDownTarget *ngIf=\"column.dataType === 'dateTime'\" #inputGroup type=\"box\" [displayDensity]=\"displayDensity\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [igxDateTimeEditor]=\"column.defaultDateTimeFormat\"\n [(ngModel)]=\"expressionUI.expression.searchVal\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"/>\n</igx-input-group>\n\n<button (click)=\"onRemoveButtonClick()\" igxButton=\"icon\" [displayDensity]=\"displayDensity\" *ngIf=\"!isSingle\" >\n <igx-icon>cancel</igx-icon>\n</button>\n\n<igx-buttongroup #logicOperatorButtonGroup\n *ngIf=\"!isLast\"\n [multiSelection]=\"false\">\n <span igxButton [displayDensity]=\"displayDensity\"\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n tabindex=\"0\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n\n <span igxButton [displayDensity]=\"displayDensity\"\n #orButton\n tabindex=\"0\"\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n</igx-buttongroup>\n\n<div #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n"
|
|
40647
41010
|
},] }
|
|
40648
41011
|
];
|
|
40649
41012
|
IgxExcelStyleDateExpressionComponent.propDecorators = {
|
|
@@ -46879,15 +47242,23 @@ class IgxGridFilteringRowComponent {
|
|
|
46879
47242
|
set value(val) {
|
|
46880
47243
|
if (!val && val !== 0) {
|
|
46881
47244
|
this.expression.searchVal = null;
|
|
46882
|
-
this.
|
|
47245
|
+
const index = this.expressionsList.findIndex(item => item.expression === this.expression);
|
|
47246
|
+
if (index === 0 && this.expressionsList.length === 1) {
|
|
47247
|
+
this.clearFiltering();
|
|
47248
|
+
return;
|
|
47249
|
+
}
|
|
46883
47250
|
}
|
|
46884
47251
|
else {
|
|
47252
|
+
const oldValue = this.expression.searchVal;
|
|
47253
|
+
if (isEqual(oldValue, val)) {
|
|
47254
|
+
return;
|
|
47255
|
+
}
|
|
46885
47256
|
this.expression.searchVal = DataUtil.parseValue(this.column.dataType, val);
|
|
46886
47257
|
if (this.expressionsList.find(item => item.expression === this.expression) === undefined) {
|
|
46887
47258
|
this.addExpression(true);
|
|
46888
47259
|
}
|
|
47260
|
+
this.filter();
|
|
46889
47261
|
}
|
|
46890
|
-
this.filter();
|
|
46891
47262
|
}
|
|
46892
47263
|
get displayDensity() {
|
|
46893
47264
|
return this.column.grid.displayDensity === DisplayDensity.comfortable ? DisplayDensity.cosy : this.column.grid.displayDensity;
|
|
@@ -51091,7 +51462,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
|
|
|
51091
51462
|
this.rendered$.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
51092
51463
|
if (this.paginator) {
|
|
51093
51464
|
this.paginator.perPage = this._perPage !== DEFAULT_ITEMS_PER_PAGE ? this._perPage : this.paginator.perPage;
|
|
51094
|
-
this.paginator.totalRecords = this.totalRecords;
|
|
51465
|
+
this.paginator.totalRecords = this.totalRecords ? this.totalRecords : this.paginator.totalRecords;
|
|
51095
51466
|
this.paginator.overlaySettings = { outlet: this.outlet };
|
|
51096
51467
|
}
|
|
51097
51468
|
this._rendered = true;
|
|
@@ -64819,7 +65190,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
|
|
|
64819
65190
|
// if a row has been added and before commiting the transaction deleted
|
|
64820
65191
|
const leafRowsDirectParents = new Set();
|
|
64821
65192
|
this.records.forEach(record => {
|
|
64822
|
-
if (record && !record.children && record.parent) {
|
|
65193
|
+
if (record && (!record.children || record.children.length === 0) && record.parent) {
|
|
64823
65194
|
leafRowsDirectParents.add(record.parent);
|
|
64824
65195
|
}
|
|
64825
65196
|
});
|
|
@@ -64835,7 +65206,7 @@ class IgxTreeGridComponent extends IgxGridBaseDirective {
|
|
|
64835
65206
|
if (this.rowSelection === GridSelectionMode.multipleCascade) {
|
|
64836
65207
|
const leafRowsDirectParents = new Set();
|
|
64837
65208
|
this.records.forEach(record => {
|
|
64838
|
-
if (record && !record.children && record.parent) {
|
|
65209
|
+
if (record && (!record.children || record.children.length === 0) && record.parent) {
|
|
64839
65210
|
leafRowsDirectParents.add(record.parent);
|
|
64840
65211
|
}
|
|
64841
65212
|
});
|
|
@@ -76243,5 +76614,5 @@ IgxTreeModule.decorators = [
|
|
|
76243
76614
|
* Generated bundle index. Do not edit.
|
|
76244
76615
|
*/
|
|
76245
76616
|
|
|
76246
|
-
export { AbsolutePosition, AbsoluteScrollStrategy, AutoPositionStrategy, BaseFilteringStrategy, BaseProgressDirective, BlockScrollStrategy, ButtonGroupAlignment, Calendar, CalendarHammerConfig, CalendarSelection, CalendarView, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DataUtil, DatePart, DateRangePickerFormatPipe, DateRangeType, DefaultSortingStrategy, Direction, DisplayDensity, DisplayDensityBase, DisplayDensityToken, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportRecordType, FilterListItem, FilterMode, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, GlobalPositionStrategy, GridBaseAPIService, GridColumnDataType, GridInstanceType, GridPagingMode, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupedRecords, HeaderType, HorizontalAlignment, IGX_CHECKBOX_REQUIRED_VALIDATOR, IGX_INPUT_GROUP_TYPE, IGX_SWITCH_REQUIRED_VALIDATOR, ITreeGridAggregation, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripModule, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarBaseDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCardType, IgxCarouselComponent, IgxCarouselComponentBase, IgxCarouselModule, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxCheckboxRequiredDirective, IgxChipComponent, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnActionsModule, IgxColumnComponent, IgxColumnGroupComponent, IgxColumnLayoutComponent, IgxComboComponent, IgxComboModule, IgxComboState, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogComponent, IgxDialogModule, IgxDisplayDensityModule, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragLocation, IgxDropDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelModule, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridAPIService, IgxGridActionsBaseDirective, IgxGridBaseDirective, IgxGridBodyDirective, IgxGridCell, IgxGridCommonModule, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridForOfDirective, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalPipe, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridStateModule, IgxGridToolbarActionsDirective, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleDirective, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeaderCollapseIndicatorDirective, IgxHeaderExpandIndicatorDirective, IgxHierarchicalGridAPIService, IgxHierarchicalGridBaseDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHierarchicalTransactionServiceFactory, IgxHintDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerBaseDirective, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorDirective, IgxPaginatorModule, IgxPaginatorTemplateDirective, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPickersCommonModule, IgxPrefixDirective, IgxPrefixModule, IgxPrependDropStrategy, IgxProgressBarModule, IgxProgressType, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowCollapsedIndicatorDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandAPIService, IgxRowIslandComponent, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSorting, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStringFilteringOperand, IgxSuffixDirective, IgxSuffixModule, IgxSummaryOperand, IgxSummaryRow, IgxSwitchComponent, IgxSwitchModule, IgxSwitchRequiredDirective, IgxTabContentComponent, IgxTabContentDirective, IgxTabHeaderComponent, IgxTabHeaderDirective, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabItemDirective, IgxTabsAlignment, IgxTabsComponent, IgxTabsDirective, IgxTabsModule, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToastPosition, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridAPIService, IgxTreeGridComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectMarkerDirective, IgxTreeSelectionType, IgxYearsViewComponent, LabelPosition, NoOpScrollStrategy, NoopFilteringStrategy, NoopSortingStrategy, PagingError, PickerInteractionMode, Point, RadioGroupAlignment, RadioLabelPosition, RelativePosition, RelativePositionStrategy, RowEditPositionStrategy, RowPinningPosition, ScrollMonth, ScrollStrategy, SliderHandle, SortingDirection, SplitterType, SwitchLabelPosition, TickLabelsOrientation, TicksOrientation, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, VerticalAlignment, WEEKDAYS, blink, changei18n, fadeIn, fadeOut, filteringStateDefaults, flipBottom, flipHorBck, flipHorFwd, flipLeft, flipRight, flipTop, flipVerBck, flipVerFwd, getCurrentResourceStrings, getTypeNameForDebugging, growVerIn, growVerOut, heartbeat, hierarchicalTransactionServiceFactory, isDateInRanges, isLeap, monthRange, pulsateBck, pulsateFwd, range, rotateInBl, rotateInBottom, rotateInBr, rotateInCenter, rotateInDiagonal1, rotateInDiagonal2, rotateInHor, rotateInLeft, rotateInRight, rotateInTl, rotateInTop, rotateInTr, rotateInVer, rotateOutBl, rotateOutBottom, rotateOutBr, rotateOutCenter, rotateOutDiagonal1, rotateOutDiagonal2, rotateOutHor, rotateOutLeft, rotateOutRight, rotateOutTl, rotateOutTop, rotateOutTr, rotateOutVer, scaleInBl, scaleInBottom, scaleInBr, scaleInCenter, scaleInHorCenter, scaleInHorLeft, scaleInHorRight, scaleInLeft, scaleInRight, scaleInTl, scaleInTop, scaleInTr, scaleInVerBottom, scaleInVerCenter, scaleInVerTop, scaleOutBl, scaleOutBottom, scaleOutBr, scaleOutCenter, scaleOutHorCenter, scaleOutHorLeft, scaleOutHorRight, scaleOutLeft, scaleOutRight, scaleOutTl, scaleOutTop, scaleOutTr, scaleOutVerBottom, scaleOutVerCenter, scaleOutVerTop, shakeBl, shakeBottom, shakeBr, shakeCenter, shakeHor, shakeLeft, shakeRight, shakeTl, shakeTop, shakeTr, shakeVer, slideInBl, slideInBottom, slideInBr, slideInLeft, slideInRight, slideInTl, slideInTop, slideInTr, slideOutBl, slideOutBottom, slideOutBr, slideOutLeft, slideOutRight, slideOutTl, slideOutTop, slideOutTr, swingInBottomBck, swingInBottomFwd, swingInLeftBck, swingInLeftFwd, swingInRightBck, swingInRightFwd, swingInTopBck, swingInTopFwd, swingOutBottomBck, swingOutBottomFwd, swingOutLeftBck, swingOutLefttFwd, swingOutRightBck, swingOutRightFwd, swingOutTopBck, swingOutTopFwd, toPercent, valueInRange, weekDay, ɵ1, ɵ2, IgxActionStripMenuItemDirective as ɵa, IGX_DROPDOWN_BASE as ɵb, IgxExpansionPanelTitleDirective as ɵba, IgxExpansionPanelDescriptionDirective as ɵbb, IgxExpansionPanelIconDirective as ɵbc, IgxBannerActionsDirective as ɵbd, IgxDaysViewNavigationService as ɵbe, IgxDayItemComponent as ɵbf, IgxMonthViewSlotsCalendar as ɵbg, IgxGetViewDateCalendar as ɵbh, IgxCarouselIndicatorDirective as ɵbi, IgxCarouselNextButtonDirective as ɵbj, IgxCarouselPrevButtonDirective as ɵbk, IgxComboAPIService as ɵbl, IGX_COMBO_COMPONENT as ɵbm, IgxComboDropDownComponent as ɵbo, IgxComboItemComponent as ɵbp, IgxComboHeaderDirective as ɵbq, IgxComboFooterDirective as ɵbr, IgxComboItemDirective as ɵbs, IgxComboEmptyDirective as ɵbt, IgxComboHeaderItemDirective as ɵbu, IgxComboAddItemDirective as ɵbv, IgxComboToggleIconDirective as ɵbw, IgxComboClearIconDirective as ɵbx, IgxComboFilteringPipe as ɵby, IgxComboGroupingPipe as ɵbz, IgxComboAddItemComponent as ɵca, PickerBaseDirective as ɵcb, IgxCalendarContainerComponent as ɵcc, IgxCalendarContainerModule as ɵcd, IgxDialogTitleDirective as ɵce, IgxDialogActionsDirective as ɵcf, IgxCellCrudState as ɵcg, IgxRowCrudState as ɵch, IgxRowAddCrudState as ɵci, IgxGridCRUDService as ɵcj, IgxColumnMovingService as ɵck, IgxExcelStyleCustomDialogComponent as ɵcl, IgxExcelStyleDefaultExpressionComponent as ɵcm, IgxExcelStyleDateExpressionComponent as ɵcn, HammerGesturesManager as ɵco, WatchChanges as ɵcp, WatchColumnChanges as ɵcq, notifyChanges as ɵcr, IgxNotificationsDirective as ɵcs, IgxGridColumnResizerComponent as ɵct, IgxColumnResizerDirective as ɵcu, IgxColumnResizingService as ɵcv, IgxRowSelectorDirective as ɵcw, IgxGroupByRowSelectorDirective as ɵcx, IgxHeadSelectorDirective as ɵcy, IgxRowDragDirective as ɵcz, IgxGridSelectionService as ɵd, IgxDragIndicatorIconDirective as ɵda, IgxRowDragGhostDirective as ɵdb, IgxRowDragModule as ɵdc, IgxGridHeaderRowComponent as ɵdd, IgxGridHeaderGroupComponent as ɵde, IgxGridHeaderComponent as ɵdf, IgxGridFilteringCellComponent as ɵdg, IgxFilteringService as ɵdh, IgxGridFilteringRowComponent as ɵdi, IgxGridGroupByAreaComponent as ɵdj, IgxGroupByAreaDirective as ɵdk, IgxGroupByMetaPipe as ɵdl, IgxTemplateOutletDirective as ɵdm, IgxTemplateOutletModule as ɵdn, IgxRowEditTemplateDirective as ɵdo, IgxRowEditTextDirective as ɵdp, IgxRowAddTextDirective as ɵdq, IgxRowEditActionsDirective as ɵdr, IgxRowEditTabStopDirective as ɵds, IgxSummaryRowComponent as ɵdt, IgxSummaryCellComponent as ɵdu, IgxRowDirective as ɵdv, IgxGridNavigationService as ɵdw, IgxGridSummaryService as ɵdx, ConnectedPositioningStrategy as ɵdy, IgxGridGroupByRowComponent as ɵdz, IgxTreeGridSelectionService as ɵea, IgxTreeGridGroupByAreaComponent as ɵeb, IgxRowLoadingIndicatorTemplateDirective as ɵec, IgxHierarchicalGridNavigationService as ɵed, IgxChildGridRowComponent as ɵee, IgxGridCellComponent as ɵef, IgxGridFooterComponent as ɵeg, IgxAdvancedFilteringDialogComponent as ɵeh, IgxColumnHidingDirective as ɵei, IgxColumnPinningDirective as ɵej, IgxGridSharedModules as ɵek, IgxProcessBarTextTemplateDirective as ɵel, IgxProgressBarGradientDirective as ɵem, DIR_DOCUMENT_FACTORY as ɵen, DIR_DOCUMENT as ɵeo, IgxDirectionality as ɵep, IgxSelectItemNavigationDirective as ɵeq, IGX_TIME_PICKER_COMPONENT as ɵer, IgxItemListDirective as ɵet, IgxTimeItemDirective as ɵeu, IgxTimePickerTemplateDirective as ɵev, IgxTimePickerActionsDirective as ɵew, TimeFormatPipe as ɵex, TimeItemPipe as ɵey, IgxGridPipesModule as ɵez, IGX_EXPANSION_PANEL_COMPONENT as ɵf, IgxGridCellStyleClassesPipe as ɵfa, IgxGridCellStylesPipe as ɵfb, IgxGridRowClassesPipe as ɵfc, IgxGridRowStylesPipe as ɵfd, IgxGridNotGroupedPipe as ɵfe, IgxGridTopLevelColumns as ɵff, IgxGridFilterConditionPipe as ɵfg, IgxGridTransactionPipe as ɵfh, IgxGridPaginatorOptionsPipe as ɵfi, IgxHasVisibleColumnsPipe as ɵfj, IgxGridRowPinningPipe as ɵfk, IgxColumnActionEnabledPipe as ɵfl, IgxFilterActionColumnsPipe as ɵfm, IgxSortActionColumnsPipe as ɵfn, IgxGridDataMapperPipe as ɵfo, IgxStringReplacePipe as ɵfp, IgxGridTransactionStatePipe as ɵfq, IgxColumnFormatterPipe as ɵfr, IgxSummaryFormatterPipe as ɵfs, IgxGridAddRowPipe as ɵft, IgxHeaderGroupWidthPipe as ɵfu, IgxHeaderGroupStylePipe as ɵfv, IgxGridColumnModule as ɵfw, IgxGridHeadersModule as ɵfx, SortingIndexPipe as ɵfy, IgxGridFilteringModule as ɵfz, IGX_TREE_COMPONENT as ɵg, IgxColumnMovingModule as ɵga, IgxColumnMovingDropDirective as ɵgb, IgxColumnMovingDragDirective as ɵgc, IgxGridResizingModule as ɵgd, IgxResizeHandleDirective as ɵge, IgxGridExcelStyleFilteringModule as ɵgf, IgxGridSelectionModule as ɵgg, IgxGridDragSelectDirective as ɵgh, IgxGridSummaryModule as ɵgi, IgxSummaryDataPipe as ɵgj, IgxGridToolbarModule as ɵgk, BaseToolbarDirective as ɵgl, BaseToolbarColumnActionsDirective as ɵgm, IgxGridRowComponent as ɵgn, IgxGridSortingPipe as ɵgo, IgxGridGroupingPipe as ɵgp, IgxGridPagingPipe as ɵgq, IgxGridFilteringPipe as ɵgr, IgxGridSummaryPipe as ɵgs, IgxGridDetailsPipe as ɵgt, IgxGridExpandableCellComponent as ɵgu, IgxTreeGridRowComponent as ɵgv, IgxTreeGridCellComponent as ɵgw, IgxTreeGridHierarchizingPipe as ɵgx, IgxTreeGridFlatteningPipe as ɵgy, IgxTreeGridSortingPipe as ɵgz, IGX_TREE_NODE_COMPONENT as ɵh, IgxTreeGridPagingPipe as ɵha, IgxTreeGridTransactionPipe as ɵhb, IgxTreeGridNormalizeRecordsPipe as ɵhc, IgxTreeGridAddRowPipe as ɵhd, IgxTreeGridFilteringPipe as ɵhe, IgxTreeGridSummaryPipe as ɵhf, IgxHierarchicalRowComponent as ɵhg, IgxHierarchicalGridCellComponent as ɵhh, IgxSliderThumbComponent as ɵhi, IgxThumbLabelComponent as ɵhj, IgxTicksComponent as ɵhk, IgxTickLabelsPipe as ɵhl, IgxTabsBase as ɵhm, IgxTabHeaderBase as ɵhn, IgxTabContentBase as ɵho, IgxSplitBarComponent as ɵhp, IgxTreeService as ɵhq, IgxTreeSelectionService as ɵhr, IgxTreeNavigationService as ɵhs, PlatformUtil as ɵi, EaseIn as ɵj, EaseOut as ɵk, IgxInputGroupBase as ɵl, IgxSelectionAPIService as ɵm, IgxForOfSyncService as ɵn, IgxForOfScrollSyncService as ɵo, DisplayContainerComponent as ɵp, IgxScrollInertiaDirective as ɵq, IgxScrollInertiaModule as ɵr, VirtualHelperComponent as ɵs, VirtualHelperBaseDirective as ɵt, HVirtualHelperComponent as ɵu, MaskParsingService as ɵv, isHierarchyMatch as ɵw, getHierarchy as ɵx, IgxGridActionButtonComponent as ɵy, ToggleAnimationPlayer as ɵz };
|
|
76617
|
+
export { AbsolutePosition, AbsoluteScrollStrategy, AutoPositionStrategy, BaseFilteringStrategy, BaseProgressDirective, BlockScrollStrategy, ButtonGroupAlignment, Calendar, CalendarHammerConfig, CalendarSelection, CalendarView, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DataUtil, DatePart, DateRangePickerFormatPipe, DateRangeType, DefaultSortingStrategy, Direction, DisplayDensity, DisplayDensityBase, DisplayDensityToken, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportRecordType, FilterListItem, FilterMode, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, GlobalPositionStrategy, GridBaseAPIService, GridColumnDataType, GridInstanceType, GridPagingMode, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupedRecords, HeaderType, HorizontalAlignment, IGX_CHECKBOX_REQUIRED_VALIDATOR, IGX_INPUT_GROUP_TYPE, IGX_SWITCH_REQUIRED_VALIDATOR, ITreeGridAggregation, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripModule, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarBaseDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCardType, IgxCarouselComponent, IgxCarouselComponentBase, IgxCarouselModule, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxCheckboxRequiredDirective, IgxChipComponent, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnActionsModule, IgxColumnComponent, IgxColumnGroupComponent, IgxColumnLayoutComponent, IgxComboComponent, IgxComboModule, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogComponent, IgxDialogModule, IgxDisplayDensityModule, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragLocation, IgxDropDirective, IgxDropDownBaseDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemBaseDirective, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelModule, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridAPIService, IgxGridActionsBaseDirective, IgxGridBaseDirective, IgxGridBodyDirective, IgxGridCell, IgxGridCommonModule, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridForOfDirective, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalPipe, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridStateModule, IgxGridToolbarActionsDirective, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleDirective, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeaderCollapseIndicatorDirective, IgxHeaderExpandIndicatorDirective, IgxHierarchicalGridAPIService, IgxHierarchicalGridBaseDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHierarchicalTransactionServiceFactory, IgxHintDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerBaseDirective, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorDirective, IgxPaginatorModule, IgxPaginatorTemplateDirective, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPickersCommonModule, IgxPrefixDirective, IgxPrefixModule, IgxPrependDropStrategy, IgxProgressBarModule, IgxProgressType, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowCollapsedIndicatorDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandAPIService, IgxRowIslandComponent, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSimpleComboComponent, IgxSimpleComboModule, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSorting, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStringFilteringOperand, IgxSuffixDirective, IgxSuffixModule, IgxSummaryOperand, IgxSummaryRow, IgxSwitchComponent, IgxSwitchModule, IgxSwitchRequiredDirective, IgxTabContentComponent, IgxTabContentDirective, IgxTabHeaderComponent, IgxTabHeaderDirective, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabItemDirective, IgxTabsAlignment, IgxTabsComponent, IgxTabsDirective, IgxTabsModule, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToastPosition, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridAPIService, IgxTreeGridComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectMarkerDirective, IgxTreeSelectionType, IgxYearsViewComponent, LabelPosition, NoOpScrollStrategy, NoopFilteringStrategy, NoopSortingStrategy, PagingError, PickerInteractionMode, Point, RadioGroupAlignment, RadioLabelPosition, RelativePosition, RelativePositionStrategy, RowEditPositionStrategy, RowPinningPosition, ScrollMonth, ScrollStrategy, SliderHandle, SortingDirection, SplitterType, SwitchLabelPosition, TickLabelsOrientation, TicksOrientation, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, VerticalAlignment, WEEKDAYS, blink, changei18n, fadeIn, fadeOut, filteringStateDefaults, flipBottom, flipHorBck, flipHorFwd, flipLeft, flipRight, flipTop, flipVerBck, flipVerFwd, getCurrentResourceStrings, getTypeNameForDebugging, growVerIn, growVerOut, heartbeat, hierarchicalTransactionServiceFactory, isDateInRanges, isLeap, monthRange, pulsateBck, pulsateFwd, range, rotateInBl, rotateInBottom, rotateInBr, rotateInCenter, rotateInDiagonal1, rotateInDiagonal2, rotateInHor, rotateInLeft, rotateInRight, rotateInTl, rotateInTop, rotateInTr, rotateInVer, rotateOutBl, rotateOutBottom, rotateOutBr, rotateOutCenter, rotateOutDiagonal1, rotateOutDiagonal2, rotateOutHor, rotateOutLeft, rotateOutRight, rotateOutTl, rotateOutTop, rotateOutTr, rotateOutVer, scaleInBl, scaleInBottom, scaleInBr, scaleInCenter, scaleInHorCenter, scaleInHorLeft, scaleInHorRight, scaleInLeft, scaleInRight, scaleInTl, scaleInTop, scaleInTr, scaleInVerBottom, scaleInVerCenter, scaleInVerTop, scaleOutBl, scaleOutBottom, scaleOutBr, scaleOutCenter, scaleOutHorCenter, scaleOutHorLeft, scaleOutHorRight, scaleOutLeft, scaleOutRight, scaleOutTl, scaleOutTop, scaleOutTr, scaleOutVerBottom, scaleOutVerCenter, scaleOutVerTop, shakeBl, shakeBottom, shakeBr, shakeCenter, shakeHor, shakeLeft, shakeRight, shakeTl, shakeTop, shakeTr, shakeVer, slideInBl, slideInBottom, slideInBr, slideInLeft, slideInRight, slideInTl, slideInTop, slideInTr, slideOutBl, slideOutBottom, slideOutBr, slideOutLeft, slideOutRight, slideOutTl, slideOutTop, slideOutTr, swingInBottomBck, swingInBottomFwd, swingInLeftBck, swingInLeftFwd, swingInRightBck, swingInRightFwd, swingInTopBck, swingInTopFwd, swingOutBottomBck, swingOutBottomFwd, swingOutLeftBck, swingOutLefttFwd, swingOutRightBck, swingOutRightFwd, swingOutTopBck, swingOutTopFwd, toPercent, valueInRange, weekDay, ɵ1, ɵ2, IgxActionStripMenuItemDirective as ɵa, IGX_DROPDOWN_BASE as ɵb, IgxExpansionPanelTitleDirective as ɵba, IgxExpansionPanelDescriptionDirective as ɵbb, IgxExpansionPanelIconDirective as ɵbc, IgxBannerActionsDirective as ɵbd, IgxDaysViewNavigationService as ɵbe, IgxDayItemComponent as ɵbf, IgxMonthViewSlotsCalendar as ɵbg, IgxGetViewDateCalendar as ɵbh, IgxCarouselIndicatorDirective as ɵbi, IgxCarouselNextButtonDirective as ɵbj, IgxCarouselPrevButtonDirective as ɵbk, IGX_COMBO_COMPONENT as ɵbl, IgxComboBaseDirective as ɵbn, IgxComboHeaderDirective as ɵbo, IgxComboFooterDirective as ɵbp, IgxComboItemDirective as ɵbq, IgxComboEmptyDirective as ɵbr, IgxComboHeaderItemDirective as ɵbs, IgxComboAddItemDirective as ɵbt, IgxComboToggleIconDirective as ɵbu, IgxComboClearIconDirective as ɵbv, IgxComboAPIService as ɵbw, IgxComboDropDownComponent as ɵbx, IgxComboItemComponent as ɵby, IgxComboFilteringPipe as ɵbz, IgxComboGroupingPipe as ɵca, IgxComboAddItemComponent as ɵcb, PickerBaseDirective as ɵcc, IgxCalendarContainerComponent as ɵcd, IgxCalendarContainerModule as ɵce, IgxDialogTitleDirective as ɵcf, IgxDialogActionsDirective as ɵcg, IgxCellCrudState as ɵch, IgxRowCrudState as ɵci, IgxRowAddCrudState as ɵcj, IgxGridCRUDService as ɵck, IgxColumnMovingService as ɵcl, IgxExcelStyleCustomDialogComponent as ɵcm, IgxExcelStyleDefaultExpressionComponent as ɵcn, IgxExcelStyleDateExpressionComponent as ɵco, HammerGesturesManager as ɵcp, WatchChanges as ɵcq, WatchColumnChanges as ɵcr, notifyChanges as ɵcs, IgxNotificationsDirective as ɵct, IgxGridColumnResizerComponent as ɵcu, IgxColumnResizerDirective as ɵcv, IgxColumnResizingService as ɵcw, IgxRowSelectorDirective as ɵcx, IgxGroupByRowSelectorDirective as ɵcy, IgxHeadSelectorDirective as ɵcz, IgxGridSelectionService as ɵd, IgxRowDragDirective as ɵda, IgxDragIndicatorIconDirective as ɵdb, IgxRowDragGhostDirective as ɵdc, IgxRowDragModule as ɵdd, IgxGridHeaderRowComponent as ɵde, IgxGridHeaderGroupComponent as ɵdf, IgxGridHeaderComponent as ɵdg, IgxGridFilteringCellComponent as ɵdh, IgxFilteringService as ɵdi, IgxGridFilteringRowComponent as ɵdj, IgxGridGroupByAreaComponent as ɵdk, IgxGroupByAreaDirective as ɵdl, IgxGroupByMetaPipe as ɵdm, IgxTemplateOutletDirective as ɵdn, IgxTemplateOutletModule as ɵdo, IgxRowEditTemplateDirective as ɵdp, IgxRowEditTextDirective as ɵdq, IgxRowAddTextDirective as ɵdr, IgxRowEditActionsDirective as ɵds, IgxRowEditTabStopDirective as ɵdt, IgxSummaryRowComponent as ɵdu, IgxSummaryCellComponent as ɵdv, IgxRowDirective as ɵdw, IgxGridNavigationService as ɵdx, IgxGridSummaryService as ɵdy, ConnectedPositioningStrategy as ɵdz, IgxGridGroupByRowComponent as ɵea, IgxTreeGridSelectionService as ɵeb, IgxTreeGridGroupByAreaComponent as ɵec, IgxRowLoadingIndicatorTemplateDirective as ɵed, IgxHierarchicalGridNavigationService as ɵee, IgxChildGridRowComponent as ɵef, IgxGridCellComponent as ɵeg, IgxGridFooterComponent as ɵeh, IgxAdvancedFilteringDialogComponent as ɵei, IgxColumnHidingDirective as ɵej, IgxColumnPinningDirective as ɵek, IgxGridSharedModules as ɵel, IgxProcessBarTextTemplateDirective as ɵem, IgxProgressBarGradientDirective as ɵen, DIR_DOCUMENT_FACTORY as ɵeo, DIR_DOCUMENT as ɵep, IgxDirectionality as ɵeq, IgxSelectItemNavigationDirective as ɵer, IGX_TIME_PICKER_COMPONENT as ɵes, IgxItemListDirective as ɵeu, IgxTimeItemDirective as ɵev, IgxTimePickerTemplateDirective as ɵew, IgxTimePickerActionsDirective as ɵex, TimeFormatPipe as ɵey, TimeItemPipe as ɵez, IGX_EXPANSION_PANEL_COMPONENT as ɵf, IgxGridPipesModule as ɵfa, IgxGridCellStyleClassesPipe as ɵfb, IgxGridCellStylesPipe as ɵfc, IgxGridRowClassesPipe as ɵfd, IgxGridRowStylesPipe as ɵfe, IgxGridNotGroupedPipe as ɵff, IgxGridTopLevelColumns as ɵfg, IgxGridFilterConditionPipe as ɵfh, IgxGridTransactionPipe as ɵfi, IgxGridPaginatorOptionsPipe as ɵfj, IgxHasVisibleColumnsPipe as ɵfk, IgxGridRowPinningPipe as ɵfl, IgxColumnActionEnabledPipe as ɵfm, IgxFilterActionColumnsPipe as ɵfn, IgxSortActionColumnsPipe as ɵfo, IgxGridDataMapperPipe as ɵfp, IgxStringReplacePipe as ɵfq, IgxGridTransactionStatePipe as ɵfr, IgxColumnFormatterPipe as ɵfs, IgxSummaryFormatterPipe as ɵft, IgxGridAddRowPipe as ɵfu, IgxHeaderGroupWidthPipe as ɵfv, IgxHeaderGroupStylePipe as ɵfw, IgxGridColumnModule as ɵfx, IgxGridHeadersModule as ɵfy, SortingIndexPipe as ɵfz, IGX_TREE_COMPONENT as ɵg, IgxGridFilteringModule as ɵga, IgxColumnMovingModule as ɵgb, IgxColumnMovingDropDirective as ɵgc, IgxColumnMovingDragDirective as ɵgd, IgxGridResizingModule as ɵge, IgxResizeHandleDirective as ɵgf, IgxGridExcelStyleFilteringModule as ɵgg, IgxGridSelectionModule as ɵgh, IgxGridDragSelectDirective as ɵgi, IgxGridSummaryModule as ɵgj, IgxSummaryDataPipe as ɵgk, IgxGridToolbarModule as ɵgl, BaseToolbarDirective as ɵgm, BaseToolbarColumnActionsDirective as ɵgn, IgxGridRowComponent as ɵgo, IgxGridSortingPipe as ɵgp, IgxGridGroupingPipe as ɵgq, IgxGridPagingPipe as ɵgr, IgxGridFilteringPipe as ɵgs, IgxGridSummaryPipe as ɵgt, IgxGridDetailsPipe as ɵgu, IgxGridExpandableCellComponent as ɵgv, IgxTreeGridRowComponent as ɵgw, IgxTreeGridCellComponent as ɵgx, IgxTreeGridHierarchizingPipe as ɵgy, IgxTreeGridFlatteningPipe as ɵgz, IGX_TREE_NODE_COMPONENT as ɵh, IgxTreeGridSortingPipe as ɵha, IgxTreeGridPagingPipe as ɵhb, IgxTreeGridTransactionPipe as ɵhc, IgxTreeGridNormalizeRecordsPipe as ɵhd, IgxTreeGridAddRowPipe as ɵhe, IgxTreeGridFilteringPipe as ɵhf, IgxTreeGridSummaryPipe as ɵhg, IgxHierarchicalRowComponent as ɵhh, IgxHierarchicalGridCellComponent as ɵhi, IgxSliderThumbComponent as ɵhj, IgxThumbLabelComponent as ɵhk, IgxTicksComponent as ɵhl, IgxTickLabelsPipe as ɵhm, IgxTabsBase as ɵhn, IgxTabHeaderBase as ɵho, IgxTabContentBase as ɵhp, IgxSplitBarComponent as ɵhq, IgxTreeService as ɵhr, IgxTreeSelectionService as ɵhs, IgxTreeNavigationService as ɵht, PlatformUtil as ɵi, EaseIn as ɵj, EaseOut as ɵk, IgxInputGroupBase as ɵl, IgxSelectionAPIService as ɵm, IgxForOfSyncService as ɵn, IgxForOfScrollSyncService as ɵo, DisplayContainerComponent as ɵp, IgxScrollInertiaDirective as ɵq, IgxScrollInertiaModule as ɵr, VirtualHelperComponent as ɵs, VirtualHelperBaseDirective as ɵt, HVirtualHelperComponent as ɵu, MaskParsingService as ɵv, isHierarchyMatch as ɵw, getHierarchy as ɵx, IgxGridActionButtonComponent as ɵy, ToggleAnimationPlayer as ɵz };
|
|
76247
76618
|
//# sourceMappingURL=igniteui-angular.js.map
|