igniteui-angular 17.2.17 → 17.2.18
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/esm2022/lib/data-operations/filtering-condition.mjs +8 -1
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +25 -29
- package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +7 -5
- package/esm2022/lib/grids/grid-base.directive.mjs +2 -2
- package/esm2022/lib/query-builder/query-builder.component.mjs +3 -3
- package/esm2022/lib/services/exporter-common/base-export-service.mjs +5 -3
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +4 -2
- package/fesm2022/igniteui-angular.mjs +47 -38
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/input/_input-group-theme.scss +9 -9
- package/lib/core/styles/components/label/_label-theme.scss +19 -7
- package/lib/core/styles/typography/_bootstrap.scss +4 -0
- package/lib/core/styles/typography/_fluent.scss +4 -0
- package/lib/core/styles/typography/_indigo.scss +4 -0
- package/lib/core/styles/typography/_material.scss +2 -0
- package/lib/data-operations/filtering-condition.d.ts +1 -0
- package/lib/services/exporter-common/base-export-service.d.ts +1 -0
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -1928,6 +1928,7 @@ class IgxBaseExporter {
|
|
|
1928
1928
|
}
|
|
1929
1929
|
this.options = options;
|
|
1930
1930
|
this.locale = grid.locale;
|
|
1931
|
+
this.ownerGrid = grid;
|
|
1931
1932
|
let columns = grid.columns;
|
|
1932
1933
|
if (this.options.ignoreMultiColumnHeaders) {
|
|
1933
1934
|
columns = columns.filter(col => col.children === undefined);
|
|
@@ -2084,7 +2085,7 @@ class IgxBaseExporter {
|
|
|
2084
2085
|
}
|
|
2085
2086
|
});
|
|
2086
2087
|
}
|
|
2087
|
-
const targetCol = mapRecord.columns.filter(c => column.columnGroupParent !== null && c.columnGroup === column.columnGroupParent)[0];
|
|
2088
|
+
const targetCol = mapRecord.columns.filter(c => column.columnGroupParent !== null && column.columnGroupParent !== undefined && c.columnGroup === column.columnGroupParent)[0];
|
|
2088
2089
|
if (targetCol !== undefined) {
|
|
2089
2090
|
targetCol.columnSpan -= span;
|
|
2090
2091
|
if (targetCol.columnGroupParent !== null) {
|
|
@@ -2138,7 +2139,8 @@ class IgxBaseExporter {
|
|
|
2138
2139
|
const rowArgs = {
|
|
2139
2140
|
rowData: record.data,
|
|
2140
2141
|
rowIndex: index,
|
|
2141
|
-
cancel: false
|
|
2142
|
+
cancel: false,
|
|
2143
|
+
owner: record.owner ?? this.ownerGrid
|
|
2142
2144
|
};
|
|
2143
2145
|
this.rowExporting.emit(rowArgs);
|
|
2144
2146
|
if (!rowArgs.cancel) {
|
|
@@ -20142,6 +20144,13 @@ class IgxDateFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
20142
20144
|
}
|
|
20143
20145
|
}].concat(this.operations);
|
|
20144
20146
|
}
|
|
20147
|
+
findValueInSet(target, searchVal) {
|
|
20148
|
+
if (!target) {
|
|
20149
|
+
return false;
|
|
20150
|
+
}
|
|
20151
|
+
target = target.toDateString();
|
|
20152
|
+
return searchVal.has(target);
|
|
20153
|
+
}
|
|
20145
20154
|
}
|
|
20146
20155
|
class IgxDateTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
20147
20156
|
constructor() {
|
|
@@ -38035,7 +38044,9 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
|
38035
38044
|
if (this.filteredData.length !== this.data.length && !ignoreFilter) {
|
|
38036
38045
|
newSelection = this.selectionService.delete_items(this.id, this.selectionService.get_all_ids(this.filteredData, this.valueKey));
|
|
38037
38046
|
}
|
|
38038
|
-
this.
|
|
38047
|
+
if (this.selectionService.get(this.id).size > 0 || this.comboInput.value.trim()) {
|
|
38048
|
+
this.setSelection(newSelection);
|
|
38049
|
+
}
|
|
38039
38050
|
}
|
|
38040
38051
|
clearOnBlur() {
|
|
38041
38052
|
if (this.isRemote) {
|
|
@@ -47583,11 +47594,11 @@ class IgxQueryBuilderComponent extends DisplayDensityBase {
|
|
|
47583
47594
|
editorIcons.forEach(icon => this.iconService.addSvgIconFromText(icon.name, icon.value, 'imx-icons'));
|
|
47584
47595
|
}
|
|
47585
47596
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxQueryBuilderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: IgxIconService }, { token: PlatformUtil }, { token: i0.ElementRef }, { token: LOCALE_ID }, { token: DisplayDensityToken, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47586
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxQueryBuilderComponent, isStandalone: true, selector: "igx-query-builder", inputs: { fields: "fields", expressionTree: "expressionTree", locale: "locale", resourceStrings: "resourceStrings" }, outputs: { expressionTreeChange: "expressionTreeChange" }, host: { properties: { "class.igx-query-builder": "this.cssClass", "style.display": "this.display" } }, queries: [{ propertyName: "headerContent", first: true, predicate: IgxQueryBuilderHeaderComponent, descendants: true }], viewQueries: [{ propertyName: "fieldSelect", first: true, predicate: ["fieldSelect"], descendants: true, read: IgxSelectComponent }, { propertyName: "conditionSelect", first: true, predicate: ["conditionSelect"], descendants: true, read: IgxSelectComponent }, { propertyName: "searchValueInput", first: true, predicate: ["searchValueInput"], descendants: true, read: ElementRef }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "addRootAndGroupButton", first: true, predicate: ["addRootAndGroupButton"], descendants: true, read: ElementRef }, { propertyName: "addConditionButton", first: true, predicate: ["addConditionButton"], descendants: true, read: ElementRef }, { propertyName: "editingInputsContainer", first: true, predicate: ["editingInputsContainer"], descendants: true, read: ElementRef }, { propertyName: "addModeContainer", first: true, predicate: ["addModeContainer"], descendants: true, read: ElementRef }, { propertyName: "currentGroupButtonsContainer", first: true, predicate: ["currentGroupButtonsContainer"], descendants: true, read: ElementRef }, { propertyName: "contextMenuToggle", first: true, predicate: IgxToggleDirective, descendants: true }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true }, { propertyName: "overlayOutlet", first: true, predicate: ["overlayOutlet"], descendants: true, read: IgxOverlayOutletDirective, static: true }, { propertyName: "chips", predicate: IgxChipComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [title]=\"this.resourceStrings.igx_query_builder_title\"\n>\n</igx-query-builder-header>\n\n<ng-content select=\"igx-query-builder-header\"></ng-content>\n\n<div\n #expressionsContainer\n class=\"igx-query-builder__main\"\n (scroll)=\"onExpressionsScrolled()\"\n>\n <ng-container *ngIf=\"!rootGroup\">\n <button type=\"button\"\n #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addOrGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{ this.resourceStrings.igx_query_builder_initial_text }}\n </h6>\n </div>\n </ng-container>\n\n <ng-template\n #addExpressionsTemplate\n let-expressionItem\n let-afterExpression=\"afterExpression\"\n >\n <button type=\"button\"\n #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition\n }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div\n *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip\n [data]=\"expressionItem\"\n [displayDensity]=\"\n displayDensity === 'compact' ? 'cosy' : displayDensity\n \"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{\n expressionItem.fieldLabel ||\n expressionItem.expression.fieldName\n }}</span>\n <igx-prefix>\n <igx-icon\n family=\"imx-icons\"\n [name]=\"expressionItem.expression.condition.iconName\"\n >\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{\n getConditionFriendlyName(\n expressionItem.expression.condition.name\n )\n }}\n </span>\n <span\n igxSuffix\n *ngIf=\"!expressionItem.expression.condition.isUnary\"\n >\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(\n expressionItem.expression.fieldName\n )\n : undefined)\n : (expressionItem.expression.searchVal\n | date\n : getFormat(\n expressionItem.expression.fieldName\n )\n : undefined\n : this.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div\n class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"\n (expressionItem.selected &&\n selectedExpressions.length === 1) ||\n expressionItem.hovered\n \"\n >\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\"\n >\n edit\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"\n !expressionItem.inAddMode &&\n (expressionItem.parent !== currentGroup ||\n expressionItem !==\n currentGroup.children[\n currentGroup.children.length - 1\n ])\n \"\n >\n add\n </igx-icon>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select\n #fieldSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"fieldSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_column_placeholder\n \"\n [(ngModel)]=\"selectedField\"\n >\n <igx-select-item *ngFor=\"let field of fields\" [value]=\"field\">\n {{ field.label || field.header || field.field }}\n </igx-select-item>\n </igx-select>\n\n <igx-select\n #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_condition_placeholder\n \"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedField\"\n >\n <igx-prefix\n *ngIf=\"\n selectedField &&\n conditionSelect.value &&\n selectedField.filters.condition(conditionSelect.value)\n \"\n >\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(\n conditionSelect.value\n ).iconName\n \"\n >\n </igx-icon>\n </igx-prefix>\n\n <igx-select-item\n *ngFor=\"let condition of getConditionList()\"\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(condition)\n .iconName\n \"\n >\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n getConditionFriendlyName(condition)\n }}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group\n *ngIf=\"\n !selectedField ||\n (selectedField.dataType !== 'date' &&\n selectedField.dataType !== 'time' &&\n selectedField.dataType !== 'dateTime')\n \"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #searchValueInput\n igxInput\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [type]=\"\n selectedField && selectedField.dataType === 'number'\n ? 'number'\n : 'text'\n \"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_value_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n />\n </igx-input-group>\n\n <igx-date-picker\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [weekStart]=\"selectedField.pipeArgs.weekStart\"\n >\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\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'time'\"\n [(value)]=\"searchValue\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_time_placeholder\n \"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [inputFormat]=\"selectedField.defaultTimeFormat\"\n >\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\n #inputGroup\n #searchValueInput\n type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [igxDateTimeEditor]=\"selectedField.defaultDateTimeFormat\"\n />\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\"\n >\n <igx-icon>check</igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandEdit()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem.parent, expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandAdd()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div\n tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n isExpressionGroup(expr)\n ? expressionTreeTemplate\n : filterOperandTemplate;\n context: context(expr)\n \"\n >\n </ng-container>\n </ng-container>\n <div\n *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"\n hasEditedExpression ||\n expressionItem.children.length < 2\n \"\n (click)=\"endGroup(expressionItem)\"\n >\n <span>{{\n this.resourceStrings.igx_query_builder_end_group\n }}</span>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container\n *ngTemplateOutlet=\"\n expressionTreeTemplate;\n context: context(rootGroup)\n \"\n ></ng-container>\n </ng-container>\n\n <div\n igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button type=\"button\"\n igxIconButton=\"flat\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup\n [displayDensity]=\"this.displayDensity\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\"\n >\n </igx-buttongroup>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_ungroup\n }}</span>\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_delete }}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_and_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_or_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{ this.resourceStrings.igx_query_builder_delete_filters }}\n </button>\n </ng-container>\n </div>\n</div>\n<div\n #overlayOutlet\n igxOverlayOutlet\n class=\"igx-query-builder__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "showWeekNumbers", "formatter", "headerOrientation", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "outlet", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxPickerToggleComponent, selector: "igx-picker-toggle", outputs: ["clicked"] }, { kind: "component", type: IgxPickerClearComponent, selector: "igx-picker-clear" }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "headerOrientation", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "component", type: IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "selectionMode", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: IgxFieldFormatterPipe, name: "fieldFormatter" }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }] }); }
|
|
47597
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxQueryBuilderComponent, isStandalone: true, selector: "igx-query-builder", inputs: { fields: "fields", expressionTree: "expressionTree", locale: "locale", resourceStrings: "resourceStrings" }, outputs: { expressionTreeChange: "expressionTreeChange" }, host: { properties: { "class.igx-query-builder": "this.cssClass", "style.display": "this.display" } }, queries: [{ propertyName: "headerContent", first: true, predicate: IgxQueryBuilderHeaderComponent, descendants: true }], viewQueries: [{ propertyName: "fieldSelect", first: true, predicate: ["fieldSelect"], descendants: true, read: IgxSelectComponent }, { propertyName: "conditionSelect", first: true, predicate: ["conditionSelect"], descendants: true, read: IgxSelectComponent }, { propertyName: "searchValueInput", first: true, predicate: ["searchValueInput"], descendants: true, read: ElementRef }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "addRootAndGroupButton", first: true, predicate: ["addRootAndGroupButton"], descendants: true, read: ElementRef }, { propertyName: "addConditionButton", first: true, predicate: ["addConditionButton"], descendants: true, read: ElementRef }, { propertyName: "editingInputsContainer", first: true, predicate: ["editingInputsContainer"], descendants: true, read: ElementRef }, { propertyName: "addModeContainer", first: true, predicate: ["addModeContainer"], descendants: true, read: ElementRef }, { propertyName: "currentGroupButtonsContainer", first: true, predicate: ["currentGroupButtonsContainer"], descendants: true, read: ElementRef }, { propertyName: "contextMenuToggle", first: true, predicate: IgxToggleDirective, descendants: true }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true }, { propertyName: "overlayOutlet", first: true, predicate: ["overlayOutlet"], descendants: true, read: IgxOverlayOutletDirective, static: true }, { propertyName: "chips", predicate: IgxChipComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [title]=\"this.resourceStrings.igx_query_builder_title\"\n>\n</igx-query-builder-header>\n\n<ng-content select=\"igx-query-builder-header\"></ng-content>\n\n<div\n #expressionsContainer\n class=\"igx-query-builder__main\"\n (scroll)=\"onExpressionsScrolled()\"\n>\n <ng-container *ngIf=\"!rootGroup\">\n <button type=\"button\"\n #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addOrGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{ this.resourceStrings.igx_query_builder_initial_text }}\n </h6>\n </div>\n </ng-container>\n\n <ng-template\n #addExpressionsTemplate\n let-expressionItem\n let-afterExpression=\"afterExpression\"\n >\n <button type=\"button\"\n #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition\n }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div\n *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip\n [data]=\"expressionItem\"\n [displayDensity]=\"\n displayDensity === 'compact' ? 'cosy' : displayDensity\n \"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{\n expressionItem.fieldLabel ||\n expressionItem.expression.fieldName\n }}</span>\n <igx-prefix>\n <igx-icon\n family=\"imx-icons\"\n [name]=\"expressionItem.expression.condition.iconName\"\n >\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{\n getConditionFriendlyName(\n expressionItem.expression.condition.name\n )\n }}\n </span>\n <span\n igxSuffix\n *ngIf=\"!expressionItem.expression.condition.isUnary\"\n >\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(\n expressionItem.expression.fieldName\n )\n : undefined)\n : (expressionItem.expression.searchVal\n | date\n : getFormat(\n expressionItem.expression.fieldName\n )\n : undefined\n : this.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div\n class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"\n (expressionItem.selected &&\n selectedExpressions.length === 1) ||\n expressionItem.hovered\n \"\n >\n <span tabindex=\"0\">\n <igx-icon\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\"\n >\n edit\n </igx-icon>\n </span>\n <span tabindex=\"0\">\n <igx-icon\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"\n !expressionItem.inAddMode &&\n (expressionItem.parent !== currentGroup ||\n expressionItem !==\n currentGroup.children[\n currentGroup.children.length - 1\n ])\n \"\n >\n add\n </igx-icon>\n </span>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select\n #fieldSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"fieldSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_column_placeholder\n \"\n [(ngModel)]=\"selectedField\"\n >\n <igx-select-item *ngFor=\"let field of fields\" [value]=\"field\">\n {{ field.label || field.header || field.field }}\n </igx-select-item>\n </igx-select>\n\n <igx-select\n #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_condition_placeholder\n \"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedField\"\n >\n <igx-prefix\n *ngIf=\"\n selectedField &&\n conditionSelect.value &&\n selectedField.filters.condition(conditionSelect.value)\n \"\n >\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(\n conditionSelect.value\n ).iconName\n \"\n >\n </igx-icon>\n </igx-prefix>\n\n <igx-select-item\n *ngFor=\"let condition of getConditionList()\"\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(condition)\n .iconName\n \"\n >\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n getConditionFriendlyName(condition)\n }}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group\n *ngIf=\"\n !selectedField ||\n (selectedField.dataType !== 'date' &&\n selectedField.dataType !== 'time' &&\n selectedField.dataType !== 'dateTime')\n \"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #searchValueInput\n igxInput\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [type]=\"\n selectedField && selectedField.dataType === 'number'\n ? 'number'\n : 'text'\n \"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_value_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n />\n </igx-input-group>\n\n <igx-date-picker\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [weekStart]=\"selectedField.pipeArgs.weekStart\"\n >\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\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'time'\"\n [(value)]=\"searchValue\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_time_placeholder\n \"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [inputFormat]=\"selectedField.defaultTimeFormat\"\n >\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\n #inputGroup\n #searchValueInput\n type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [igxDateTimeEditor]=\"selectedField.defaultDateTimeFormat\"\n />\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\"\n >\n <igx-icon>check</igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandEdit()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem.parent, expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandAdd()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div\n tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n isExpressionGroup(expr)\n ? expressionTreeTemplate\n : filterOperandTemplate;\n context: context(expr)\n \"\n >\n </ng-container>\n </ng-container>\n <div\n *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"\n hasEditedExpression ||\n expressionItem.children.length < 2\n \"\n (click)=\"endGroup(expressionItem)\"\n >\n <span>{{\n this.resourceStrings.igx_query_builder_end_group\n }}</span>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container\n *ngTemplateOutlet=\"\n expressionTreeTemplate;\n context: context(rootGroup)\n \"\n ></ng-container>\n </ng-container>\n\n <div\n igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button type=\"button\"\n igxIconButton=\"flat\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup\n [displayDensity]=\"this.displayDensity\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\"\n >\n </igx-buttongroup>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_ungroup\n }}</span>\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_delete }}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_and_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_or_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{ this.resourceStrings.igx_query_builder_delete_filters }}\n </button>\n </ng-container>\n </div>\n</div>\n<div\n #overlayOutlet\n igxOverlayOutlet\n class=\"igx-query-builder__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "showWeekNumbers", "formatter", "headerOrientation", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "outlet", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxPickerToggleComponent, selector: "igx-picker-toggle", outputs: ["clicked"] }, { kind: "component", type: IgxPickerClearComponent, selector: "igx-picker-clear" }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "headerOrientation", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "component", type: IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "selectionMode", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: IgxFieldFormatterPipe, name: "fieldFormatter" }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }] }); }
|
|
47587
47598
|
}
|
|
47588
47599
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxQueryBuilderComponent, decorators: [{
|
|
47589
47600
|
type: Component,
|
|
47590
|
-
args: [{ selector: 'igx-query-builder', standalone: true, imports: [NgIf, IgxQueryBuilderHeaderComponent, IgxButtonDirective, IgxIconComponent, IgxChipComponent, IgxPrefixDirective, IgxSuffixDirective, IgxSelectComponent, FormsModule, NgFor, IgxSelectItemComponent, IgxInputGroupComponent, IgxInputDirective, IgxDatePickerComponent, IgxPickerToggleComponent, IgxPickerClearComponent, IgxTimePickerComponent, IgxDateTimeEditorDirective, NgTemplateOutlet, NgClass, IgxToggleDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, DatePipe, IgxFieldFormatterPipe, IgxIconButtonDirective], template: "<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [title]=\"this.resourceStrings.igx_query_builder_title\"\n>\n</igx-query-builder-header>\n\n<ng-content select=\"igx-query-builder-header\"></ng-content>\n\n<div\n #expressionsContainer\n class=\"igx-query-builder__main\"\n (scroll)=\"onExpressionsScrolled()\"\n>\n <ng-container *ngIf=\"!rootGroup\">\n <button type=\"button\"\n #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addOrGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{ this.resourceStrings.igx_query_builder_initial_text }}\n </h6>\n </div>\n </ng-container>\n\n <ng-template\n #addExpressionsTemplate\n let-expressionItem\n let-afterExpression=\"afterExpression\"\n >\n <button type=\"button\"\n #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition\n }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div\n *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip\n [data]=\"expressionItem\"\n [displayDensity]=\"\n displayDensity === 'compact' ? 'cosy' : displayDensity\n \"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{\n expressionItem.fieldLabel ||\n expressionItem.expression.fieldName\n }}</span>\n <igx-prefix>\n <igx-icon\n family=\"imx-icons\"\n [name]=\"expressionItem.expression.condition.iconName\"\n >\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{\n getConditionFriendlyName(\n expressionItem.expression.condition.name\n )\n }}\n </span>\n <span\n igxSuffix\n *ngIf=\"!expressionItem.expression.condition.isUnary\"\n >\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(\n expressionItem.expression.fieldName\n )\n : undefined)\n : (expressionItem.expression.searchVal\n | date\n : getFormat(\n expressionItem.expression.fieldName\n )\n : undefined\n : this.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div\n class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"\n (expressionItem.selected &&\n selectedExpressions.length === 1) ||\n expressionItem.hovered\n \"\n >\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\"\n >\n edit\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"\n !expressionItem.inAddMode &&\n (expressionItem.parent !== currentGroup ||\n expressionItem !==\n currentGroup.children[\n currentGroup.children.length - 1\n ])\n \"\n >\n add\n </igx-icon>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select\n #fieldSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"fieldSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_column_placeholder\n \"\n [(ngModel)]=\"selectedField\"\n >\n <igx-select-item *ngFor=\"let field of fields\" [value]=\"field\">\n {{ field.label || field.header || field.field }}\n </igx-select-item>\n </igx-select>\n\n <igx-select\n #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_condition_placeholder\n \"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedField\"\n >\n <igx-prefix\n *ngIf=\"\n selectedField &&\n conditionSelect.value &&\n selectedField.filters.condition(conditionSelect.value)\n \"\n >\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(\n conditionSelect.value\n ).iconName\n \"\n >\n </igx-icon>\n </igx-prefix>\n\n <igx-select-item\n *ngFor=\"let condition of getConditionList()\"\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(condition)\n .iconName\n \"\n >\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n getConditionFriendlyName(condition)\n }}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group\n *ngIf=\"\n !selectedField ||\n (selectedField.dataType !== 'date' &&\n selectedField.dataType !== 'time' &&\n selectedField.dataType !== 'dateTime')\n \"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #searchValueInput\n igxInput\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [type]=\"\n selectedField && selectedField.dataType === 'number'\n ? 'number'\n : 'text'\n \"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_value_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n />\n </igx-input-group>\n\n <igx-date-picker\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [weekStart]=\"selectedField.pipeArgs.weekStart\"\n >\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\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'time'\"\n [(value)]=\"searchValue\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_time_placeholder\n \"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [inputFormat]=\"selectedField.defaultTimeFormat\"\n >\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\n #inputGroup\n #searchValueInput\n type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [igxDateTimeEditor]=\"selectedField.defaultDateTimeFormat\"\n />\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\"\n >\n <igx-icon>check</igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandEdit()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem.parent, expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandAdd()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div\n tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n isExpressionGroup(expr)\n ? expressionTreeTemplate\n : filterOperandTemplate;\n context: context(expr)\n \"\n >\n </ng-container>\n </ng-container>\n <div\n *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"\n hasEditedExpression ||\n expressionItem.children.length < 2\n \"\n (click)=\"endGroup(expressionItem)\"\n >\n <span>{{\n this.resourceStrings.igx_query_builder_end_group\n }}</span>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container\n *ngTemplateOutlet=\"\n expressionTreeTemplate;\n context: context(rootGroup)\n \"\n ></ng-container>\n </ng-container>\n\n <div\n igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button type=\"button\"\n igxIconButton=\"flat\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup\n [displayDensity]=\"this.displayDensity\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\"\n >\n </igx-buttongroup>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_ungroup\n }}</span>\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_delete }}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_and_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_or_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{ this.resourceStrings.igx_query_builder_delete_filters }}\n </button>\n </ng-container>\n </div>\n</div>\n<div\n #overlayOutlet\n igxOverlayOutlet\n class=\"igx-query-builder__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n" }]
|
|
47601
|
+
args: [{ selector: 'igx-query-builder', standalone: true, imports: [NgIf, IgxQueryBuilderHeaderComponent, IgxButtonDirective, IgxIconComponent, IgxChipComponent, IgxPrefixDirective, IgxSuffixDirective, IgxSelectComponent, FormsModule, NgFor, IgxSelectItemComponent, IgxInputGroupComponent, IgxInputDirective, IgxDatePickerComponent, IgxPickerToggleComponent, IgxPickerClearComponent, IgxTimePickerComponent, IgxDateTimeEditorDirective, NgTemplateOutlet, NgClass, IgxToggleDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, DatePipe, IgxFieldFormatterPipe, IgxIconButtonDirective], template: "<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [title]=\"this.resourceStrings.igx_query_builder_title\"\n>\n</igx-query-builder-header>\n\n<ng-content select=\"igx-query-builder-header\"></ng-content>\n\n<div\n #expressionsContainer\n class=\"igx-query-builder__main\"\n (scroll)=\"onExpressionsScrolled()\"\n>\n <ng-container *ngIf=\"!rootGroup\">\n <button type=\"button\"\n #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"addOrGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{ this.resourceStrings.igx_query_builder_initial_text }}\n </h6>\n </div>\n </ng-container>\n\n <ng-template\n #addExpressionsTemplate\n let-expressionItem\n let-afterExpression=\"afterExpression\"\n >\n <button type=\"button\"\n #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition\n }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_or_group }}</span>\n </button>\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div\n *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip\n [data]=\"expressionItem\"\n [displayDensity]=\"\n displayDensity === 'compact' ? 'cosy' : displayDensity\n \"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{\n expressionItem.fieldLabel ||\n expressionItem.expression.fieldName\n }}</span>\n <igx-prefix>\n <igx-icon\n family=\"imx-icons\"\n [name]=\"expressionItem.expression.condition.iconName\"\n >\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{\n getConditionFriendlyName(\n expressionItem.expression.condition.name\n )\n }}\n </span>\n <span\n igxSuffix\n *ngIf=\"!expressionItem.expression.condition.isUnary\"\n >\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(\n expressionItem.expression.fieldName\n )\n : undefined)\n : (expressionItem.expression.searchVal\n | date\n : getFormat(\n expressionItem.expression.fieldName\n )\n : undefined\n : this.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div\n class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"\n (expressionItem.selected &&\n selectedExpressions.length === 1) ||\n expressionItem.hovered\n \"\n >\n <span tabindex=\"0\">\n <igx-icon\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\"\n >\n edit\n </igx-icon>\n </span>\n <span tabindex=\"0\">\n <igx-icon\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"\n !expressionItem.inAddMode &&\n (expressionItem.parent !== currentGroup ||\n expressionItem !==\n currentGroup.children[\n currentGroup.children.length - 1\n ])\n \"\n >\n add\n </igx-icon>\n </span>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select\n #fieldSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"fieldSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_column_placeholder\n \"\n [(ngModel)]=\"selectedField\"\n >\n <igx-select-item *ngFor=\"let field of fields\" [value]=\"field\">\n {{ field.label || field.header || field.field }}\n </igx-select-item>\n </igx-select>\n\n <igx-select\n #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_condition_placeholder\n \"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedField\"\n >\n <igx-prefix\n *ngIf=\"\n selectedField &&\n conditionSelect.value &&\n selectedField.filters.condition(conditionSelect.value)\n \"\n >\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(\n conditionSelect.value\n ).iconName\n \"\n >\n </igx-icon>\n </igx-prefix>\n\n <igx-select-item\n *ngFor=\"let condition of getConditionList()\"\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"imx-icons\"\n [name]=\"\n selectedField.filters.condition(condition)\n .iconName\n \"\n >\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n getConditionFriendlyName(condition)\n }}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group\n *ngIf=\"\n !selectedField ||\n (selectedField.dataType !== 'date' &&\n selectedField.dataType !== 'time' &&\n selectedField.dataType !== 'dateTime')\n \"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #searchValueInput\n igxInput\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [type]=\"\n selectedField && selectedField.dataType === 'number'\n ? 'number'\n : 'text'\n \"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_value_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n />\n </igx-input-group>\n\n <igx-date-picker\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [weekStart]=\"selectedField.pipeArgs.weekStart\"\n >\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\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'time'\"\n [(value)]=\"searchValue\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_time_placeholder\n \"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [inputFormat]=\"selectedField.defaultTimeFormat\"\n >\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\n #inputGroup\n #searchValueInput\n type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\"\n >\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"\n this.resourceStrings.igx_query_builder_date_placeholder\n \"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"\n !selectedField ||\n !selectedCondition ||\n (selectedField &&\n selectedField.filters.condition(selectedCondition)\n .isUnary)\n \"\n [igxDateTimeEditor]=\"selectedField.defaultDateTimeFormat\"\n />\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\"\n >\n <igx-icon>check</igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandEdit()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem.parent, expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxIconButton=\"flat\"\n [style.--component-size]=\"getComponentSizeStyles()\"\n (click)=\"cancelOperandAdd()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div\n tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container\n *ngTemplateOutlet=\"\n isExpressionGroup(expr)\n ? expressionTreeTemplate\n : filterOperandTemplate;\n context: context(expr)\n \"\n >\n </ng-container>\n </ng-container>\n <div\n *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n addExpressionsTemplate;\n context: context(expressionItem)\n \"\n >\n </ng-container>\n <button type=\"button\"\n igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"\n hasEditedExpression ||\n expressionItem.children.length < 2\n \"\n (click)=\"endGroup(expressionItem)\"\n >\n <span>{{\n this.resourceStrings.igx_query_builder_end_group\n }}</span>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container\n *ngTemplateOutlet=\"\n expressionTreeTemplate;\n context: context(rootGroup)\n \"\n ></ng-container>\n </ng-container>\n\n <div\n igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button type=\"button\"\n igxIconButton=\"flat\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup\n [displayDensity]=\"this.displayDensity\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\"\n >\n </igx-buttongroup>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{\n this.resourceStrings.igx_query_builder_ungroup\n }}</span>\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{ this.resourceStrings.igx_query_builder_delete }}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_and_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_or_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n [displayDensity]=\"this.displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{ this.resourceStrings.igx_query_builder_delete_filters }}\n </button>\n </ng-container>\n </div>\n</div>\n<div\n #overlayOutlet\n igxOverlayOutlet\n class=\"igx-query-builder__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n" }]
|
|
47591
47602
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: IgxIconService }, { type: PlatformUtil }, { type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
47592
47603
|
type: Inject,
|
|
47593
47604
|
args: [LOCALE_ID]
|
|
@@ -52690,11 +52701,13 @@ class IgxExcelStyleSearchComponent {
|
|
|
52690
52701
|
condition: this.createCondition('in'),
|
|
52691
52702
|
fieldName: this.esf.column.field,
|
|
52692
52703
|
ignoreCase: this.esf.column.filteringIgnoreCase,
|
|
52693
|
-
searchVal: new Set(this.esf.column.dataType === GridColumnDataType.Date
|
|
52704
|
+
searchVal: new Set(this.esf.column.dataType === GridColumnDataType.Date ?
|
|
52705
|
+
selectedItems.map(d => d.value.toDateString()) :
|
|
52694
52706
|
this.esf.column.dataType === GridColumnDataType.DateTime ?
|
|
52695
|
-
|
|
52696
|
-
|
|
52697
|
-
|
|
52707
|
+
selectedItems.map(d => d.value.toISOString()) :
|
|
52708
|
+
this.esf.column.dataType === GridColumnDataType.Time ?
|
|
52709
|
+
selectedItems.map(e => e.value.toLocaleTimeString()) :
|
|
52710
|
+
selectedItems.map(e => e.value))
|
|
52698
52711
|
});
|
|
52699
52712
|
if (blanksItem) {
|
|
52700
52713
|
filterTree.filteringOperands.push({
|
|
@@ -53417,35 +53430,31 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
|
|
|
53417
53430
|
});
|
|
53418
53431
|
}
|
|
53419
53432
|
renderValues() {
|
|
53420
|
-
this.filterValues = this.generateFilterValues(
|
|
53433
|
+
this.filterValues = this.generateFilterValues();
|
|
53421
53434
|
this.generateListData();
|
|
53422
53435
|
}
|
|
53423
|
-
generateFilterValues(
|
|
53424
|
-
|
|
53425
|
-
|
|
53426
|
-
|
|
53427
|
-
|
|
53428
|
-
|
|
53429
|
-
|
|
53430
|
-
|
|
53431
|
-
|
|
53432
|
-
|
|
53433
|
-
|
|
53434
|
-
|
|
53435
|
-
|
|
53436
|
-
|
|
53437
|
-
|
|
53438
|
-
|
|
53439
|
-
|
|
53440
|
-
|
|
53441
|
-
|
|
53442
|
-
|
|
53443
|
-
|
|
53444
|
-
|
|
53445
|
-
}
|
|
53446
|
-
return [...arr, ...[e.expression.searchVal]];
|
|
53447
|
-
}, []));
|
|
53448
|
-
}
|
|
53436
|
+
generateFilterValues() {
|
|
53437
|
+
const formatValue = (value) => {
|
|
53438
|
+
if (!value)
|
|
53439
|
+
return value;
|
|
53440
|
+
switch (this.column.dataType) {
|
|
53441
|
+
case GridColumnDataType.Date:
|
|
53442
|
+
return new Date(value).toDateString();
|
|
53443
|
+
case GridColumnDataType.DateTime:
|
|
53444
|
+
return new Date(value).toISOString();
|
|
53445
|
+
case GridColumnDataType.Time:
|
|
53446
|
+
return typeof value === 'string' ? value : new Date(value).toLocaleTimeString();
|
|
53447
|
+
default:
|
|
53448
|
+
return value;
|
|
53449
|
+
}
|
|
53450
|
+
};
|
|
53451
|
+
const processExpression = (arr, e) => {
|
|
53452
|
+
if (e.expression.condition.name === 'in') {
|
|
53453
|
+
return [...arr, ...Array.from(e.expression.searchVal.values()).map(v => formatValue(v))];
|
|
53454
|
+
}
|
|
53455
|
+
return [...arr, formatValue(e.expression.searchVal)];
|
|
53456
|
+
};
|
|
53457
|
+
const filterValues = new Set(this.expressionsList.reduce(processExpression, []));
|
|
53449
53458
|
return filterValues;
|
|
53450
53459
|
}
|
|
53451
53460
|
generateListData() {
|
|
@@ -53626,7 +53635,7 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
|
|
|
53626
53635
|
}
|
|
53627
53636
|
getExpressionValue(value) {
|
|
53628
53637
|
if (this.column.dataType === GridColumnDataType.Date) {
|
|
53629
|
-
value = value ? new Date(value).
|
|
53638
|
+
value = value ? new Date(value).toDateString() : value;
|
|
53630
53639
|
}
|
|
53631
53640
|
else if (this.column.dataType === GridColumnDataType.DateTime) {
|
|
53632
53641
|
value = value ? new Date(value).toISOString() : value;
|
|
@@ -60343,7 +60352,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
60343
60352
|
type: Injectable
|
|
60344
60353
|
}] });
|
|
60345
60354
|
|
|
60346
|
-
/*@__PURE__*/ IgcTrialWatermark.register();
|
|
60347
60355
|
let FAKE_ROW_ID = -1;
|
|
60348
60356
|
const DEFAULT_ITEMS_PER_PAGE = 15;
|
|
60349
60357
|
const MINIMUM_COLUMN_WIDTH$1 = 136;
|
|
@@ -62670,6 +62678,7 @@ class IgxGridBaseDirective extends DisplayDensityBase {
|
|
|
62670
62678
|
this._transactions = this.transactionFactory.create("None" /* TRANSACTION_TYPE.None */);
|
|
62671
62679
|
this._transactions.cloneStrategy = this.dataCloneStrategy;
|
|
62672
62680
|
this.cdr.detach();
|
|
62681
|
+
IgcTrialWatermark.register();
|
|
62673
62682
|
}
|
|
62674
62683
|
/**
|
|
62675
62684
|
* @hidden
|