igniteui-angular 19.0.6 → 19.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igniteui-angular.mjs +1874 -718
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/carousel/carousel-base.d.ts +2 -31
- package/lib/carousel/carousel.component.d.ts +12 -12
- package/lib/carousel/enums.d.ts +8 -0
- package/lib/carousel/slide.component.d.ts +3 -2
- package/lib/checkbox/checkbox.component.d.ts +5 -4
- package/lib/core/i18n/query-builder-resources.d.ts +22 -2
- package/lib/core/styles/components/avatar/_avatar-theme.scss +31 -1
- package/lib/core/styles/components/card/_card-theme.scss +1 -1
- package/lib/core/styles/components/carousel/_carousel-component.scss +4 -4
- package/lib/core/styles/components/carousel/_carousel-theme.scss +8 -4
- package/lib/core/styles/components/checkbox/_checkbox-component.scss +4 -8
- package/lib/core/styles/components/checkbox/_checkbox-theme.scss +3 -8
- package/lib/core/styles/components/chip/_chip-theme.scss +4 -2
- package/lib/core/styles/components/combo/_combo-theme.scss +10 -24
- package/lib/core/styles/components/grid/_excel-filtering-theme.scss +14 -16
- package/lib/core/styles/components/grid/_grid-theme.scss +34 -30
- package/lib/core/styles/components/input/_input-group-theme.scss +2 -5
- package/lib/core/styles/components/query-builder/_query-builder-component.scss +59 -44
- package/lib/core/styles/components/query-builder/_query-builder-theme.scss +325 -232
- package/lib/core/styles/components/radio/_radio-theme.scss +2 -0
- package/lib/core/styles/components/switch/_switch-theme.scss +2 -0
- package/lib/core/styles/components/tree/_tree-theme.scss +1 -7
- package/lib/core/styles/themes/generators/_base.scss +4 -6
- package/lib/core/styles/themes/generators/_bootstrap.scss +0 -2
- package/lib/core/styles/themes/generators/_fluent.scss +0 -2
- package/lib/core/styles/themes/generators/_indigo.scss +0 -2
- package/lib/core/utils.d.ts +0 -2
- package/lib/data-operations/filtering-condition.d.ts +16 -5
- package/lib/data-operations/filtering-expression.interface.d.ts +4 -1
- package/lib/data-operations/filtering-expressions-tree.d.ts +29 -3
- package/lib/directives/drag-drop/drag-drop.directive.d.ts +0 -1
- package/lib/grids/common/grid.interface.d.ts +13 -10
- package/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.d.ts +7 -0
- package/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.d.ts +1 -4
- package/lib/grids/filtering/excel-style/excel-style-date-expression.component.d.ts +3 -1
- package/lib/grids/grid-base.directive.d.ts +2 -5
- package/lib/grids/pivot-grid/pivot-grid.component.d.ts +1 -1
- package/lib/grids/resizing/resizer.directive.d.ts +0 -2
- package/lib/grids/resizing/resizing.service.d.ts +2 -2
- package/lib/icon/icon.component.d.ts +17 -1
- package/lib/icon/icon.service.d.ts +4 -7
- package/lib/icon/types.d.ts +1 -3
- package/lib/input-group/input-group.component.d.ts +10 -8
- package/lib/query-builder/public_api.d.ts +3 -1
- package/lib/query-builder/query-builder-header.component.d.ts +1 -11
- package/lib/query-builder/query-builder-tree.component.d.ts +565 -0
- package/lib/query-builder/query-builder.component.d.ts +43 -303
- package/lib/query-builder/query-builder.directives.d.ts +22 -0
- package/lib/query-builder/query-builder.module.d.ts +2 -1
- package/lib/services/public_api.d.ts +0 -1
- package/lib/services/theme/theme.service.d.ts +27 -0
- package/migrations/update-18_2_0/changes/inputs.json +9 -0
- package/migrations/update-18_2_0/index.js +4 -0
- package/package.json +2 -2
- 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
- package/lib/services/theme/theme.token.d.ts +0 -24
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Directive, Input, HostListener, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, Output, HostBinding, Self, Optional, booleanAttribute, SecurityContext,
|
|
2
|
+
import { Injectable, Directive, Input, HostListener, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, Output, HostBinding, Self, Optional, booleanAttribute, SecurityContext, Component, ContentChildren, ContentChild, RendererStyleFlags2, Pipe, ViewChild, DestroyRef, LOCALE_ID, forwardRef, Host, QueryList, ViewChildren, TemplateRef, ChangeDetectionStrategy, SimpleChange, SkipSelf, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/forms';
|
|
4
4
|
import { NgModel, NgControl, FormControlName, NG_VALUE_ACCESSOR, Validators, NG_VALIDATORS, FormGroup, FormsModule, RequiredValidator, MinValidator, MaxValidator, EmailValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { Observable, NEVER, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, merge, Subscription, timer, takeUntil as takeUntil$1, pipe } from 'rxjs';
|
|
5
|
+
import { Observable, NEVER, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, merge, Subscription, timer, sampleTime, filter as filter$1, tap as tap$1, takeUntil as takeUntil$1, pipe } from 'rxjs';
|
|
6
6
|
import { takeUntil, filter, throttle, throttleTime, first as first$2, startWith, take, debounce, tap, switchMap, skipLast, debounceTime, map, shareReplay, takeWhile, timeout, pluck } from 'rxjs/operators';
|
|
7
7
|
import { isPlatformBrowser, formatDate as formatDate$1, CurrencyPipe, formatPercent, formatNumber, getLocaleCurrencyCode, DatePipe, getLocaleDateFormat, FormatWidth, getLocaleDateTimeFormat, DOCUMENT, NgTemplateOutlet, NgIf, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault, NgFor, TitleCasePipe, getLocaleFirstDayOfWeek, NgStyle, getLocaleCurrencySymbol, formatCurrency as formatCurrency$1, getLocaleNumberFormat, NumberFormatStyle, DecimalPipe, PercentPipe, getCurrencySymbol, AsyncPipe } from '@angular/common';
|
|
8
8
|
import { mergeWith, isEqual as isEqual$1 } from 'lodash-es';
|
|
@@ -789,13 +789,7 @@ function getComponentCssSizeVar(size) {
|
|
|
789
789
|
* @returns string encoded using the encodeURI function.
|
|
790
790
|
*/
|
|
791
791
|
function normalizeURI(path) {
|
|
792
|
-
return path
|
|
793
|
-
}
|
|
794
|
-
function getComponentTheme(el) {
|
|
795
|
-
return globalThis.window
|
|
796
|
-
?.getComputedStyle(el)
|
|
797
|
-
.getPropertyValue('--theme')
|
|
798
|
-
.trim();
|
|
792
|
+
return path.split('/').map(encodeURI).join('/');
|
|
799
793
|
}
|
|
800
794
|
|
|
801
795
|
var PagingError;
|
|
@@ -1409,14 +1403,13 @@ class ExportUtilities {
|
|
|
1409
1403
|
return !ExportUtilities.isSpecialData(dataEntry) ? Array.from(keys) : ['Column 1'];
|
|
1410
1404
|
}
|
|
1411
1405
|
static saveBlobToFile(blob, fileName) {
|
|
1412
|
-
const
|
|
1413
|
-
const a = doc.createElement('a');
|
|
1406
|
+
const a = document.createElement('a');
|
|
1414
1407
|
const url = window.URL.createObjectURL(blob);
|
|
1415
1408
|
a.download = fileName;
|
|
1416
1409
|
a.href = url;
|
|
1417
|
-
|
|
1410
|
+
document.body.appendChild(a);
|
|
1418
1411
|
a.click();
|
|
1419
|
-
|
|
1412
|
+
document.body.removeChild(a);
|
|
1420
1413
|
window.URL.revokeObjectURL(url);
|
|
1421
1414
|
}
|
|
1422
1415
|
static stringToArrayBuffer(s) {
|
|
@@ -1514,7 +1507,7 @@ var FilteringExpressionsTreeType;
|
|
|
1514
1507
|
/* marshalByValue */
|
|
1515
1508
|
/* jsonAPIPlainObject */
|
|
1516
1509
|
class FilteringExpressionsTree {
|
|
1517
|
-
constructor(operator, fieldName) {
|
|
1510
|
+
constructor(operator, fieldName, entity, returnFields) {
|
|
1518
1511
|
/**
|
|
1519
1512
|
* Sets/gets the filtering operands.
|
|
1520
1513
|
* ```typescript
|
|
@@ -1537,6 +1530,8 @@ class FilteringExpressionsTree {
|
|
|
1537
1530
|
*/
|
|
1538
1531
|
this.filteringOperands = [];
|
|
1539
1532
|
this.operator = operator;
|
|
1533
|
+
this.entity = entity;
|
|
1534
|
+
this.returnFields = returnFields;
|
|
1540
1535
|
this.fieldName = fieldName;
|
|
1541
1536
|
}
|
|
1542
1537
|
/**
|
|
@@ -4539,7 +4534,7 @@ class WorksheetDataDictionary {
|
|
|
4539
4534
|
}
|
|
4540
4535
|
getContext() {
|
|
4541
4536
|
if (!this._context) {
|
|
4542
|
-
const canvas =
|
|
4537
|
+
const canvas = document.createElement('canvas');
|
|
4543
4538
|
this._context = canvas.getContext('2d');
|
|
4544
4539
|
this._context.font = WorksheetDataDictionary.DEFAULT_FONT;
|
|
4545
4540
|
}
|
|
@@ -7327,41 +7322,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
7327
7322
|
}]
|
|
7328
7323
|
}] });
|
|
7329
7324
|
|
|
7330
|
-
class ThemeToken {
|
|
7331
|
-
constructor(t) {
|
|
7332
|
-
this.t = t;
|
|
7333
|
-
this.document = inject(DOCUMENT);
|
|
7334
|
-
const globalTheme = globalThis.window
|
|
7335
|
-
?.getComputedStyle(this.document.body)
|
|
7336
|
-
.getPropertyValue("--ig-theme")
|
|
7337
|
-
.trim() || 'material';
|
|
7338
|
-
const _theme = t ?? globalTheme;
|
|
7339
|
-
this.subject = new BehaviorSubject(_theme);
|
|
7340
|
-
}
|
|
7341
|
-
onChange(callback) {
|
|
7342
|
-
return this.subject.subscribe(callback);
|
|
7343
|
-
}
|
|
7344
|
-
set(theme) {
|
|
7345
|
-
this.subject.next(theme);
|
|
7346
|
-
}
|
|
7347
|
-
get theme() {
|
|
7348
|
-
return this.subject.getValue();
|
|
7349
|
-
}
|
|
7350
|
-
get preferToken() {
|
|
7351
|
-
return !!this.t;
|
|
7352
|
-
}
|
|
7353
|
-
}
|
|
7354
|
-
const THEME_TOKEN = new InjectionToken('ThemeToken', {
|
|
7355
|
-
providedIn: 'root',
|
|
7356
|
-
factory: () => new ThemeToken()
|
|
7357
|
-
});
|
|
7358
|
-
const Theme = /*@__PURE__*/ mkenum({
|
|
7359
|
-
Material: "material",
|
|
7360
|
-
Fluent: "fluent",
|
|
7361
|
-
Bootstrap: "bootstrap",
|
|
7362
|
-
IndigoDesign: "indigo",
|
|
7363
|
-
});
|
|
7364
|
-
|
|
7365
7325
|
// Export services
|
|
7366
7326
|
|
|
7367
7327
|
/** @hidden */
|
|
@@ -9742,12 +9702,10 @@ const IndigoIcons = new Map(Object.entries({
|
|
|
9742
9702
|
* ```
|
|
9743
9703
|
*/
|
|
9744
9704
|
class IgxIconService {
|
|
9745
|
-
constructor(_sanitizer, _httpClient, _platformUtil,
|
|
9705
|
+
constructor(_sanitizer, _httpClient, _platformUtil, document) {
|
|
9746
9706
|
this._sanitizer = _sanitizer;
|
|
9747
9707
|
this._httpClient = _httpClient;
|
|
9748
9708
|
this._platformUtil = _platformUtil;
|
|
9749
|
-
this._themeToken = _themeToken;
|
|
9750
|
-
this._destroyRef = _destroyRef;
|
|
9751
9709
|
this.document = document;
|
|
9752
9710
|
this._defaultFamily = {
|
|
9753
9711
|
name: "material",
|
|
@@ -9759,10 +9717,6 @@ class IgxIconService {
|
|
|
9759
9717
|
this._iconLoaded = new Subject();
|
|
9760
9718
|
this.iconLoaded = this._iconLoaded.asObservable();
|
|
9761
9719
|
this.setFamily(this._defaultFamily.name, this._defaultFamily.meta);
|
|
9762
|
-
const { unsubscribe } = this._themeToken?.onChange((theme) => {
|
|
9763
|
-
this.setRefsByTheme(theme);
|
|
9764
|
-
});
|
|
9765
|
-
this._destroyRef.onDestroy(() => unsubscribe);
|
|
9766
9720
|
if (this._platformUtil?.isBrowser) {
|
|
9767
9721
|
this._domParser = new DOMParser();
|
|
9768
9722
|
for (const [name, svg] of IndigoIcons) {
|
|
@@ -9815,13 +9769,12 @@ class IgxIconService {
|
|
|
9815
9769
|
}
|
|
9816
9770
|
/** @hidden @internal */
|
|
9817
9771
|
setRefsByTheme(theme) {
|
|
9818
|
-
|
|
9819
|
-
|
|
9820
|
-
const
|
|
9821
|
-
|
|
9822
|
-
|
|
9823
|
-
|
|
9824
|
-
this._setIconRef(alias.name, alias.family, icon, overwrite);
|
|
9772
|
+
if (this.theme !== theme) {
|
|
9773
|
+
this.theme = theme;
|
|
9774
|
+
for (const { alias, target } of iconReferences) {
|
|
9775
|
+
const icon = target.get(theme) ?? target.get('default');
|
|
9776
|
+
this.addIconRef(alias.name, alias.family, icon);
|
|
9777
|
+
}
|
|
9825
9778
|
}
|
|
9826
9779
|
}
|
|
9827
9780
|
/**
|
|
@@ -9847,14 +9800,6 @@ class IgxIconService {
|
|
|
9847
9800
|
this.setIconRef(name, family, icon);
|
|
9848
9801
|
}
|
|
9849
9802
|
}
|
|
9850
|
-
_setIconRef(name, family, icon, overwrite = false) {
|
|
9851
|
-
if (overwrite) {
|
|
9852
|
-
this.setIconRef(name, family, {
|
|
9853
|
-
...icon,
|
|
9854
|
-
external: false
|
|
9855
|
-
});
|
|
9856
|
-
}
|
|
9857
|
-
}
|
|
9858
9803
|
/**
|
|
9859
9804
|
* Similar to addIconRef, but always sets the icon reference meta for an icon in a meta family.
|
|
9860
9805
|
* ```typescript
|
|
@@ -9867,9 +9812,8 @@ class IgxIconService {
|
|
|
9867
9812
|
familyRef = new Map();
|
|
9868
9813
|
this._iconRefs.set(family, familyRef);
|
|
9869
9814
|
}
|
|
9870
|
-
const external = icon.external ?? true;
|
|
9871
9815
|
const familyType = this.familyType(icon?.family);
|
|
9872
|
-
familyRef.set(name, { ...icon, type: icon.type ?? familyType
|
|
9816
|
+
familyRef.set(name, { ...icon, type: icon.type ?? familyType });
|
|
9873
9817
|
this._iconLoaded.next({ name, family });
|
|
9874
9818
|
}
|
|
9875
9819
|
/**
|
|
@@ -10008,7 +9952,7 @@ class IgxIconService {
|
|
|
10008
9952
|
}
|
|
10009
9953
|
}
|
|
10010
9954
|
}
|
|
10011
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconService, deps: [{ token: i1$1.DomSanitizer, optional: true }, { token: i2.HttpClient, optional: true }, { token: PlatformUtil, optional: true }, { token:
|
|
9955
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconService, deps: [{ token: i1$1.DomSanitizer, optional: true }, { token: i2.HttpClient, optional: true }, { token: PlatformUtil, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10012
9956
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconService, providedIn: "root" }); }
|
|
10013
9957
|
}
|
|
10014
9958
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconService, decorators: [{
|
|
@@ -10022,16 +9966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
10022
9966
|
type: Optional
|
|
10023
9967
|
}] }, { type: PlatformUtil, decorators: [{
|
|
10024
9968
|
type: Optional
|
|
10025
|
-
}] }, { type: ThemeToken, decorators: [{
|
|
10026
|
-
type: Optional
|
|
10027
|
-
}, {
|
|
10028
|
-
type: Inject,
|
|
10029
|
-
args: [THEME_TOKEN]
|
|
10030
|
-
}] }, { type: i0.DestroyRef, decorators: [{
|
|
10031
|
-
type: Optional
|
|
10032
|
-
}, {
|
|
10033
|
-
type: Inject,
|
|
10034
|
-
args: [DestroyRef]
|
|
10035
9969
|
}] }, { type: Document, decorators: [{
|
|
10036
9970
|
type: Optional
|
|
10037
9971
|
}, {
|
|
@@ -10039,6 +9973,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
10039
9973
|
args: [DOCUMENT]
|
|
10040
9974
|
}] }] });
|
|
10041
9975
|
|
|
9976
|
+
const Theme = /*@__PURE__*/ mkenum({
|
|
9977
|
+
Material: "material",
|
|
9978
|
+
Fluent: "fluent",
|
|
9979
|
+
Bootstrap: "bootstrap",
|
|
9980
|
+
IndigoDesign: "indigo",
|
|
9981
|
+
});
|
|
9982
|
+
class ThemeService {
|
|
9983
|
+
constructor(document) {
|
|
9984
|
+
this.document = document;
|
|
9985
|
+
this.theme$ = new BehaviorSubject("material");
|
|
9986
|
+
this.theme$.asObservable().subscribe((value) => {
|
|
9987
|
+
this.globalTheme = value;
|
|
9988
|
+
});
|
|
9989
|
+
this.init();
|
|
9990
|
+
}
|
|
9991
|
+
init() {
|
|
9992
|
+
const theme = globalThis.window
|
|
9993
|
+
?.getComputedStyle(this.document.body)
|
|
9994
|
+
.getPropertyValue("--ig-theme")
|
|
9995
|
+
.trim();
|
|
9996
|
+
if (theme !== "") {
|
|
9997
|
+
this.theme$.next(theme);
|
|
9998
|
+
}
|
|
9999
|
+
}
|
|
10000
|
+
getComponentTheme(el) {
|
|
10001
|
+
return globalThis.window
|
|
10002
|
+
?.getComputedStyle(el.nativeElement)
|
|
10003
|
+
.getPropertyValue('--theme')
|
|
10004
|
+
.trim();
|
|
10005
|
+
}
|
|
10006
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ThemeService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10007
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ThemeService, providedIn: "root" }); }
|
|
10008
|
+
}
|
|
10009
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: ThemeService, decorators: [{
|
|
10010
|
+
type: Injectable,
|
|
10011
|
+
args: [{
|
|
10012
|
+
providedIn: "root",
|
|
10013
|
+
}]
|
|
10014
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
10015
|
+
type: Inject,
|
|
10016
|
+
args: [DOCUMENT]
|
|
10017
|
+
}] }] });
|
|
10018
|
+
|
|
10042
10019
|
/**
|
|
10043
10020
|
* Icon provides a way to include material icons to markup
|
|
10044
10021
|
*
|
|
@@ -10088,13 +10065,28 @@ class IgxIconComponent {
|
|
|
10088
10065
|
get getInactive() {
|
|
10089
10066
|
return !this.active;
|
|
10090
10067
|
}
|
|
10091
|
-
constructor(el, iconService, ref) {
|
|
10068
|
+
constructor(el, iconService, themeService, ref) {
|
|
10092
10069
|
this.el = el;
|
|
10093
10070
|
this.iconService = iconService;
|
|
10071
|
+
this.themeService = themeService;
|
|
10094
10072
|
this.ref = ref;
|
|
10095
10073
|
this._destroy$ = new Subject();
|
|
10096
10074
|
this._userClasses = new Set();
|
|
10097
10075
|
this._iconClasses = new Set();
|
|
10076
|
+
/**
|
|
10077
|
+
* This allows you to disable the `aria-hidden` attribute. By default it's applied.
|
|
10078
|
+
*
|
|
10079
|
+
* @example
|
|
10080
|
+
* ```typescript
|
|
10081
|
+
* @ViewChild("MyIcon") public icon: IgxIconComponent;
|
|
10082
|
+
* constructor(private cdRef:ChangeDetectorRef) {}
|
|
10083
|
+
* ngAfterViewInit() {
|
|
10084
|
+
* this.icon.ariaHidden = false;
|
|
10085
|
+
* this.cdRef.detectChanges();
|
|
10086
|
+
* }
|
|
10087
|
+
* ```
|
|
10088
|
+
*/
|
|
10089
|
+
this.ariaHidden = true;
|
|
10098
10090
|
/**
|
|
10099
10091
|
* An @Input property that allows you to disable the `active` property. By default it's applied.
|
|
10100
10092
|
*
|
|
@@ -10105,6 +10097,7 @@ class IgxIconComponent {
|
|
|
10105
10097
|
*/
|
|
10106
10098
|
this.active = true;
|
|
10107
10099
|
this.family = this.iconService.defaultFamily.name;
|
|
10100
|
+
this.iconService.setRefsByTheme(this.themeService.globalTheme);
|
|
10108
10101
|
this.iconService.iconLoaded
|
|
10109
10102
|
.pipe(filter((e) => e.name === this.name && e.family === this.family), takeUntil(this._destroy$))
|
|
10110
10103
|
.subscribe(() => {
|
|
@@ -10217,15 +10210,18 @@ class IgxIconComponent {
|
|
|
10217
10210
|
}
|
|
10218
10211
|
this.addIconClass(className);
|
|
10219
10212
|
}
|
|
10220
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconComponent, deps: [{ token: i0.ElementRef }, { token: IgxIconService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10221
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: IgxIconComponent, isStandalone: true, selector: "igx-icon", inputs: { family: "family", name: "name", active: ["active", "active", booleanAttribute] }, host: { properties: { "class": "this.elementClasses", "class.igx-icon--inactive": "this.getInactive" } }, usesOnChanges: true, ngImport: i0, template: "<!-- This is only here for backwards compatibility in case -->\n<!-- ligatures are used and the name is provided as content -->\n@if (!iconRef.name) {\n <ng-content></ng-content>\n}\n\n@switch (iconRef.type) {\n @case (\"liga\") {{{ iconRef.name }}}\n\n @case (\"svg\") {\n <div [innerHTML]=\"getSvg\"></div>\n }\n}\n" }); }
|
|
10213
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconComponent, deps: [{ token: i0.ElementRef }, { token: IgxIconService }, { token: ThemeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10214
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: IgxIconComponent, isStandalone: true, selector: "igx-icon", inputs: { family: "family", name: "name", active: ["active", "active", booleanAttribute] }, host: { properties: { "class": "this.elementClasses", "attr.aria-hidden": "this.ariaHidden", "class.igx-icon--inactive": "this.getInactive" } }, usesOnChanges: true, ngImport: i0, template: "<!-- This is only here for backwards compatibility in case -->\n<!-- ligatures are used and the name is provided as content -->\n@if (!iconRef.name) {\n <ng-content></ng-content>\n}\n\n@switch (iconRef.type) {\n @case (\"liga\") {{{ iconRef.name }}}\n\n @case (\"svg\") {\n <div [innerHTML]=\"getSvg\"></div>\n }\n}\n" }); }
|
|
10222
10215
|
}
|
|
10223
10216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxIconComponent, decorators: [{
|
|
10224
10217
|
type: Component,
|
|
10225
10218
|
args: [{ selector: "igx-icon", imports: [NgTemplateOutlet, NgIf], template: "<!-- This is only here for backwards compatibility in case -->\n<!-- ligatures are used and the name is provided as content -->\n@if (!iconRef.name) {\n <ng-content></ng-content>\n}\n\n@switch (iconRef.type) {\n @case (\"liga\") {{{ iconRef.name }}}\n\n @case (\"svg\") {\n <div [innerHTML]=\"getSvg\"></div>\n }\n}\n" }]
|
|
10226
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: IgxIconService }, { type: i0.ChangeDetectorRef }], propDecorators: { elementClasses: [{
|
|
10219
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: IgxIconService }, { type: ThemeService }, { type: i0.ChangeDetectorRef }], propDecorators: { elementClasses: [{
|
|
10227
10220
|
type: HostBinding,
|
|
10228
10221
|
args: ["class"]
|
|
10222
|
+
}], ariaHidden: [{
|
|
10223
|
+
type: HostBinding,
|
|
10224
|
+
args: ["attr.aria-hidden"]
|
|
10229
10225
|
}], getInactive: [{
|
|
10230
10226
|
type: HostBinding,
|
|
10231
10227
|
args: ["class.igx-icon--inactive"]
|
|
@@ -10351,13 +10347,13 @@ class IgxInputGroupComponent {
|
|
|
10351
10347
|
get theme() {
|
|
10352
10348
|
return this._theme;
|
|
10353
10349
|
}
|
|
10354
|
-
constructor(element, _inputGroupType, document, platform, cdr,
|
|
10350
|
+
constructor(element, _inputGroupType, document, platform, cdr, themeService) {
|
|
10355
10351
|
this.element = element;
|
|
10356
10352
|
this._inputGroupType = _inputGroupType;
|
|
10357
10353
|
this.document = document;
|
|
10358
10354
|
this.platform = platform;
|
|
10359
10355
|
this.cdr = cdr;
|
|
10360
|
-
this.
|
|
10356
|
+
this.themeService = themeService;
|
|
10361
10357
|
/**
|
|
10362
10358
|
* Property that enables/disables the auto-generated class of the `IgxInputGroupComponent`.
|
|
10363
10359
|
* By default applied the class is applied.
|
|
@@ -10398,18 +10394,15 @@ class IgxInputGroupComponent {
|
|
|
10398
10394
|
this.suppressInputAutofocus = false;
|
|
10399
10395
|
/** @hidden */
|
|
10400
10396
|
this.hasWarning = false;
|
|
10401
|
-
this._destroyRef = inject(DestroyRef);
|
|
10402
10397
|
this._type = null;
|
|
10403
10398
|
this._filled = false;
|
|
10399
|
+
this._theme$ = new Subject();
|
|
10404
10400
|
this._resourceStrings = getCurrentResourceStrings(InputResourceStringsEN);
|
|
10405
|
-
this._theme = this.
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
|
|
10409
|
-
this.cdr.detectChanges();
|
|
10410
|
-
}
|
|
10401
|
+
this._theme = this.themeService.globalTheme;
|
|
10402
|
+
this._subscription = this._theme$.asObservable().subscribe(value => {
|
|
10403
|
+
this._theme = value;
|
|
10404
|
+
this.cdr.detectChanges();
|
|
10411
10405
|
});
|
|
10412
|
-
this._destroyRef.onDestroy(() => unsubscribe);
|
|
10413
10406
|
}
|
|
10414
10407
|
/** @hidden */
|
|
10415
10408
|
onClick(event) {
|
|
@@ -10587,20 +10580,19 @@ class IgxInputGroupComponent {
|
|
|
10587
10580
|
set filled(val) {
|
|
10588
10581
|
this._filled = val;
|
|
10589
10582
|
}
|
|
10590
|
-
|
|
10591
|
-
|
|
10592
|
-
|
|
10593
|
-
|
|
10594
|
-
|
|
10595
|
-
|
|
10596
|
-
}
|
|
10583
|
+
/** @hidden @internal */
|
|
10584
|
+
ngAfterViewChecked() {
|
|
10585
|
+
const theme = this.themeService.getComponentTheme(this.element);
|
|
10586
|
+
if (theme) {
|
|
10587
|
+
this._theme$.next(theme);
|
|
10588
|
+
this.cdr.markForCheck();
|
|
10597
10589
|
}
|
|
10598
10590
|
}
|
|
10599
10591
|
/** @hidden @internal */
|
|
10600
|
-
|
|
10601
|
-
this.
|
|
10592
|
+
ngOnDestroy() {
|
|
10593
|
+
this._subscription.unsubscribe();
|
|
10602
10594
|
}
|
|
10603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxInputGroupComponent, deps: [{ token: i0.ElementRef }, { token: IGX_INPUT_GROUP_TYPE, optional: true }, { token: DOCUMENT }, { token: PlatformUtil }, { token: i0.ChangeDetectorRef }, { token:
|
|
10595
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxInputGroupComponent, deps: [{ token: i0.ElementRef }, { token: IGX_INPUT_GROUP_TYPE, optional: true }, { token: DOCUMENT }, { token: PlatformUtil }, { token: i0.ChangeDetectorRef }, { token: ThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10604
10596
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxInputGroupComponent, isStandalone: true, selector: "igx-input-group", inputs: { resourceStrings: "resourceStrings", suppressInputAutofocus: ["suppressInputAutofocus", "suppressInputAutofocus", booleanAttribute], type: "type", theme: "theme" }, host: { listeners: { "click": "onClick($event)", "pointerdown": "onPointerDown($event)" }, properties: { "class.igx-input-group": "this.defaultClass", "class.igx-input-group--placeholder": "this.hasPlaceholder", "class.igx-input-group--required": "this.isRequired", "class.igx-input-group--focused": "this.isFocused", "class.igx-input-group--disabled": "this.disabled", "class.igx-input-group--warning": "this.hasWarning", "class.igx-input-group--valid": "this.validClass", "class.igx-input-group--invalid": "this.invalidClass", "class.igx-input-group--filled": "this.isFilled", "class.igx-input-group--textarea-group": "this.textAreaClass", "class.igx-input-group--prefixed": "this.hasPrefixes", "class.igx-input-group--suffixed": "this.hasSuffixes", "class.igx-input-group--box": "this.isTypeBox", "class.igx-input-group--file": "this.isFileType", "class.igx-input-group--border": "this.isTypeBorder", "class.igx-input-group--fluent": "this.isTypeFluent", "class.igx-input-group--bootstrap": "this.isTypeBootstrap", "class.igx-input-group--indigo": "this.isTypeIndigo", "class.igx-input-group--search": "this.isTypeSearch" } }, providers: [{ provide: IgxInputGroupBase, useExisting: IgxInputGroupComponent }], queries: [{ propertyName: "input", first: true, predicate: IgxInputDirective, descendants: true, read: IgxInputDirective, static: true }, { propertyName: "hints", predicate: IgxHintDirective, read: IgxHintDirective }, { propertyName: "_prefixes", predicate: IgxPrefixDirective, descendants: true, read: IgxPrefixDirective }, { propertyName: "_suffixes", predicate: IgxSuffixDirective, descendants: true, read: IgxSuffixDirective }], ngImport: i0, template: "<div class=\"igx-input-group__wrapper\" *ngIf=\"isTypeBox; else bundle\">\n <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n</div>\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #uploadButton>\n <igx-prefix *ngIf=\"isFileType\" class=\"igx-input-group__upload-button\">\n <button\n igxButton=\"contained\"\n type=\"button\"\n (click)=\"uploadButtonHandler()\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'igx-input-group__upload-button': isTypeLine }\"\n >\n {{ resourceStrings.igx_input_upload_button }}\n </button>\n </igx-prefix>\n</ng-template>\n\n<ng-template #files>\n <div\n *ngIf=\"isFileType\"\n class=\"igx-input-group__file-input\"\n [title]=\"fileNames\"\n >\n <span>{{ fileNames }}</span>\n </div>\n</ng-template>\n\n<ng-template #clear>\n <igx-suffix\n class=\"igx-input-group__clear-icon\"\n *ngIf=\"isFileType && isFilled\"\n (click)=\"clearValueHandler()\"\n (keydown.Enter)=\"clearValueHandler()\"\n title=\"clear files\"\n tabindex=\"0\"\n >\n <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n</ng-template>\n\n<ng-template #suffix>\n <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container>\n <div class=\"igx-input-group__notch\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </div>\n </ng-container>\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__filler\"></div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__line\" *ngIf=\"hasBorder\"></div>\n </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n\n <div class=\"igx-input-group__bundle-main\">\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n\n <div class=\"igx-input-group__line\" *ngIf=\"hasBorder\"></div>\n </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n <div class=\"igx-input-group__bundle\">\n <div class=\"igx-input-group__bundle-start\">\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n <div class=\"igx-input-group__bundle-end\">\n <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #bundle>\n <ng-container [ngSwitch]=\"theme\">\n <ng-container *ngSwitchCase=\"'bootstrap'\">\n <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'fluent'\">\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'indigo'\">\n <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }] }); }
|
|
10605
10597
|
}
|
|
10606
10598
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxInputGroupComponent, decorators: [{
|
|
@@ -10614,10 +10606,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
10614
10606
|
}] }, { type: undefined, decorators: [{
|
|
10615
10607
|
type: Inject,
|
|
10616
10608
|
args: [DOCUMENT]
|
|
10617
|
-
}] }, { type: PlatformUtil }, { type: i0.ChangeDetectorRef }, { type:
|
|
10618
|
-
type: Inject,
|
|
10619
|
-
args: [THEME_TOKEN]
|
|
10620
|
-
}] }], propDecorators: { resourceStrings: [{
|
|
10609
|
+
}] }, { type: PlatformUtil }, { type: i0.ChangeDetectorRef }, { type: ThemeService }], propDecorators: { resourceStrings: [{
|
|
10621
10610
|
type: Input
|
|
10622
10611
|
}], defaultClass: [{
|
|
10623
10612
|
type: HostBinding,
|
|
@@ -11379,7 +11368,7 @@ class IgxDragDirective {
|
|
|
11379
11368
|
set ghostLeft(pageX) {
|
|
11380
11369
|
if (this.ghostElement) {
|
|
11381
11370
|
// We need to take into account marginLeft, since top style does not include margin, but pageX includes the margin.
|
|
11382
|
-
const ghostMarginLeft = parseInt(
|
|
11371
|
+
const ghostMarginLeft = parseInt(document.defaultView.getComputedStyle(this.ghostElement)['margin-left'], 10);
|
|
11383
11372
|
// If ghost host is defined it needs to be taken into account.
|
|
11384
11373
|
this.ghostElement.style.left = (pageX - ghostMarginLeft - this._ghostHostX) + 'px';
|
|
11385
11374
|
}
|
|
@@ -11392,7 +11381,7 @@ class IgxDragDirective {
|
|
|
11392
11381
|
set ghostTop(pageY) {
|
|
11393
11382
|
if (this.ghostElement) {
|
|
11394
11383
|
// We need to take into account marginTop, since top style does not include margin, but pageY includes the margin.
|
|
11395
|
-
const ghostMarginTop = parseInt(
|
|
11384
|
+
const ghostMarginTop = parseInt(document.defaultView.getComputedStyle(this.ghostElement)['margin-top'], 10);
|
|
11396
11385
|
// If ghost host is defined it needs to be taken into account.
|
|
11397
11386
|
this.ghostElement.style.top = (pageY - ghostMarginTop - this._ghostHostY) + 'px';
|
|
11398
11387
|
}
|
|
@@ -11403,16 +11392,16 @@ class IgxDragDirective {
|
|
|
11403
11392
|
}
|
|
11404
11393
|
}
|
|
11405
11394
|
get windowScrollTop() {
|
|
11406
|
-
return
|
|
11395
|
+
return document.documentElement.scrollTop || window.scrollY;
|
|
11407
11396
|
}
|
|
11408
11397
|
get windowScrollLeft() {
|
|
11409
|
-
return
|
|
11398
|
+
return document.documentElement.scrollLeft || window.scrollX;
|
|
11410
11399
|
}
|
|
11411
11400
|
get windowScrollHeight() {
|
|
11412
|
-
return
|
|
11401
|
+
return document.documentElement.scrollHeight;
|
|
11413
11402
|
}
|
|
11414
11403
|
get windowScrollWidth() {
|
|
11415
|
-
return
|
|
11404
|
+
return document.documentElement.scrollWidth;
|
|
11416
11405
|
}
|
|
11417
11406
|
/**
|
|
11418
11407
|
* Sets the offset of the dragged element relative to the mouse in pixels.
|
|
@@ -11671,7 +11660,6 @@ class IgxDragDirective {
|
|
|
11671
11660
|
this._scrollContainerStepMs = 10;
|
|
11672
11661
|
this._scrollContainerThreshold = 25;
|
|
11673
11662
|
this._containerScrollIntervalId = null;
|
|
11674
|
-
this.document = inject(DOCUMENT);
|
|
11675
11663
|
}
|
|
11676
11664
|
/**
|
|
11677
11665
|
* @hidden
|
|
@@ -11719,13 +11707,13 @@ class IgxDragDirective {
|
|
|
11719
11707
|
});
|
|
11720
11708
|
// We should bind to document events only once when there are no pointer events.
|
|
11721
11709
|
if (!this.pointerEventsEnabled && this.touchEventsEnabled) {
|
|
11722
|
-
fromEvent(
|
|
11723
|
-
fromEvent(
|
|
11710
|
+
fromEvent(document.defaultView, 'touchmove').pipe(throttle(() => interval(0, animationFrameScheduler)), takeUntil(this._destroy)).subscribe((res) => this.onPointerMove(res));
|
|
11711
|
+
fromEvent(document.defaultView, 'touchend').pipe(takeUntil(this._destroy))
|
|
11724
11712
|
.subscribe((res) => this.onPointerUp(res));
|
|
11725
11713
|
}
|
|
11726
11714
|
else if (!this.pointerEventsEnabled) {
|
|
11727
|
-
fromEvent(
|
|
11728
|
-
fromEvent(
|
|
11715
|
+
fromEvent(document.defaultView, 'mousemove').pipe(throttle(() => interval(0, animationFrameScheduler)), takeUntil(this._destroy)).subscribe((res) => this.onPointerMove(res));
|
|
11716
|
+
fromEvent(document.defaultView, 'mouseup').pipe(takeUntil(this._destroy))
|
|
11729
11717
|
.subscribe((res) => this.onPointerUp(res));
|
|
11730
11718
|
}
|
|
11731
11719
|
this.element.nativeElement.addEventListener('transitionend', this.onTransitionEnd.bind(this));
|
|
@@ -12084,9 +12072,9 @@ class IgxDragDirective {
|
|
|
12084
12072
|
ghostReattached = true;
|
|
12085
12073
|
this.ghostHost.appendChild(this.ghostElement);
|
|
12086
12074
|
}
|
|
12087
|
-
else if (!this.ghostHost && !Array.from(
|
|
12075
|
+
else if (!this.ghostHost && !Array.from(document.body.children).includes(this.ghostElement)) {
|
|
12088
12076
|
ghostReattached = true;
|
|
12089
|
-
|
|
12077
|
+
document.body.appendChild(this.ghostElement);
|
|
12090
12078
|
}
|
|
12091
12079
|
if (ghostReattached) {
|
|
12092
12080
|
this.ghostElement.setPointerCapture(this._pointerDownId);
|
|
@@ -12224,10 +12212,10 @@ class IgxDragDirective {
|
|
|
12224
12212
|
this.ghostHost.appendChild(this.ghostElement);
|
|
12225
12213
|
}
|
|
12226
12214
|
else {
|
|
12227
|
-
|
|
12215
|
+
document.body.appendChild(this.ghostElement);
|
|
12228
12216
|
}
|
|
12229
|
-
const ghostMarginLeft = parseInt(
|
|
12230
|
-
const ghostMarginTop = parseInt(
|
|
12217
|
+
const ghostMarginLeft = parseInt(document.defaultView.getComputedStyle(this.ghostElement)['margin-left'], 10);
|
|
12218
|
+
const ghostMarginTop = parseInt(document.defaultView.getComputedStyle(this.ghostElement)['margin-top'], 10);
|
|
12231
12219
|
this.ghostElement.style.left = (this._ghostStartX - ghostMarginLeft + totalMovedX - this._ghostHostX) + 'px';
|
|
12232
12220
|
this.ghostElement.style.top = (this._ghostStartY - ghostMarginTop + totalMovedY - this._ghostHostY) + 'px';
|
|
12233
12221
|
if (this.pointerEventsEnabled) {
|
|
@@ -12336,14 +12324,14 @@ class IgxDragDirective {
|
|
|
12336
12324
|
// using window.pageXOffset for IE9 compatibility
|
|
12337
12325
|
const viewPortX = pageX - window.pageXOffset;
|
|
12338
12326
|
const viewPortY = pageY - window.pageYOffset;
|
|
12339
|
-
if (
|
|
12327
|
+
if (document['msElementsFromPoint']) {
|
|
12340
12328
|
// Edge and IE special snowflakes
|
|
12341
|
-
const elements =
|
|
12329
|
+
const elements = document['msElementsFromPoint'](viewPortX, viewPortY);
|
|
12342
12330
|
return elements === null ? [] : elements;
|
|
12343
12331
|
}
|
|
12344
12332
|
else {
|
|
12345
12333
|
// Other browsers like Chrome, Firefox, Opera
|
|
12346
|
-
return
|
|
12334
|
+
return document.elementsFromPoint(viewPortX, viewPortY);
|
|
12347
12335
|
}
|
|
12348
12336
|
}
|
|
12349
12337
|
/**
|
|
@@ -12396,8 +12384,8 @@ class IgxDragDirective {
|
|
|
12396
12384
|
getGhostHostBaseOffsetX() {
|
|
12397
12385
|
if (!this.ghostHost)
|
|
12398
12386
|
return 0;
|
|
12399
|
-
const ghostPosition =
|
|
12400
|
-
if (ghostPosition === 'static' && this.ghostHost.offsetParent && this.ghostHost.offsetParent ===
|
|
12387
|
+
const ghostPosition = document.defaultView.getComputedStyle(this.ghostHost).getPropertyValue('position');
|
|
12388
|
+
if (ghostPosition === 'static' && this.ghostHost.offsetParent && this.ghostHost.offsetParent === document.body) {
|
|
12401
12389
|
return 0;
|
|
12402
12390
|
}
|
|
12403
12391
|
else if (ghostPosition === 'static' && this.ghostHost.offsetParent) {
|
|
@@ -12408,8 +12396,8 @@ class IgxDragDirective {
|
|
|
12408
12396
|
getGhostHostBaseOffsetY() {
|
|
12409
12397
|
if (!this.ghostHost)
|
|
12410
12398
|
return 0;
|
|
12411
|
-
const ghostPosition =
|
|
12412
|
-
if (ghostPosition === 'static' && this.ghostHost.offsetParent && this.ghostHost.offsetParent ===
|
|
12399
|
+
const ghostPosition = document.defaultView.getComputedStyle(this.ghostHost).getPropertyValue('position');
|
|
12400
|
+
if (ghostPosition === 'static' && this.ghostHost.offsetParent && this.ghostHost.offsetParent === document.body) {
|
|
12413
12401
|
return 0;
|
|
12414
12402
|
}
|
|
12415
12403
|
else if (ghostPosition === 'static' && this.ghostHost.offsetParent) {
|
|
@@ -12453,8 +12441,8 @@ class IgxDragDirective {
|
|
|
12453
12441
|
let yDir = scrollDir == DragScrollDirection$1.UP ? -1 : (scrollDir == DragScrollDirection$1.DOWN ? 1 : 0);
|
|
12454
12442
|
if (!this.scrollContainer) {
|
|
12455
12443
|
// Cap scrolling so we don't scroll past the window max scroll position.
|
|
12456
|
-
const maxScrollX = this._originalScrollContainerWidth -
|
|
12457
|
-
const maxScrollY = this._originalScrollContainerHeight -
|
|
12444
|
+
const maxScrollX = this._originalScrollContainerWidth - document.documentElement.clientWidth;
|
|
12445
|
+
const maxScrollY = this._originalScrollContainerHeight - document.documentElement.clientHeight;
|
|
12458
12446
|
xDir = (this.windowScrollLeft <= 0 && xDir < 0) || (this.windowScrollLeft >= maxScrollX && xDir > 0) ? 0 : xDir;
|
|
12459
12447
|
yDir = (this.windowScrollTop <= 0 && yDir < 0) || (this.windowScrollTop >= maxScrollY && yDir > 0) ? 0 : yDir;
|
|
12460
12448
|
}
|
|
@@ -16754,10 +16742,10 @@ class IgxCheckboxComponent {
|
|
|
16754
16742
|
this._onChangeCallback(this._checked);
|
|
16755
16743
|
}
|
|
16756
16744
|
}
|
|
16757
|
-
constructor(cdr, renderer,
|
|
16745
|
+
constructor(cdr, renderer, themeService, ngControl) {
|
|
16758
16746
|
this.cdr = cdr;
|
|
16759
16747
|
this.renderer = renderer;
|
|
16760
|
-
this.
|
|
16748
|
+
this.themeService = themeService;
|
|
16761
16749
|
this.ngControl = ngControl;
|
|
16762
16750
|
/**
|
|
16763
16751
|
* An event that is emitted after the checkbox state is changed.
|
|
@@ -16970,27 +16958,17 @@ class IgxCheckboxComponent {
|
|
|
16970
16958
|
*/
|
|
16971
16959
|
this._required = false;
|
|
16972
16960
|
this.elRef = inject(ElementRef);
|
|
16961
|
+
this._theme$ = new Subject();
|
|
16973
16962
|
this.destroyRef = inject(DestroyRef);
|
|
16974
16963
|
if (this.ngControl !== null) {
|
|
16975
16964
|
this.ngControl.valueAccessor = this;
|
|
16976
16965
|
}
|
|
16977
|
-
this.theme = this.
|
|
16978
|
-
|
|
16979
|
-
|
|
16980
|
-
|
|
16981
|
-
this.cdr.detectChanges();
|
|
16982
|
-
}
|
|
16966
|
+
this.theme = this.themeService.globalTheme;
|
|
16967
|
+
this._subscription = this._theme$.asObservable().subscribe(value => {
|
|
16968
|
+
this.theme = value;
|
|
16969
|
+
this.cdr.detectChanges();
|
|
16983
16970
|
});
|
|
16984
|
-
this.destroyRef.onDestroy(() => unsubscribe);
|
|
16985
|
-
}
|
|
16986
|
-
setComponentTheme() {
|
|
16987
|
-
if (!this.themeToken.preferToken) {
|
|
16988
|
-
const theme = getComponentTheme(this.elRef.nativeElement);
|
|
16989
|
-
if (theme && theme !== this.theme) {
|
|
16990
|
-
this.theme = theme;
|
|
16991
|
-
this.cdr.markForCheck();
|
|
16992
|
-
}
|
|
16993
|
-
}
|
|
16971
|
+
this.destroyRef.onDestroy(() => this._subscription.unsubscribe());
|
|
16994
16972
|
}
|
|
16995
16973
|
/**
|
|
16996
16974
|
* @hidden
|
|
@@ -17004,7 +16982,11 @@ class IgxCheckboxComponent {
|
|
|
17004
16982
|
this.cdr.detectChanges();
|
|
17005
16983
|
}
|
|
17006
16984
|
}
|
|
17007
|
-
this.
|
|
16985
|
+
const theme = this.themeService.getComponentTheme(this.elRef);
|
|
16986
|
+
if (theme) {
|
|
16987
|
+
this._theme$.next(theme);
|
|
16988
|
+
this.cdr.markForCheck();
|
|
16989
|
+
}
|
|
17008
16990
|
}
|
|
17009
16991
|
/** @hidden @internal */
|
|
17010
16992
|
onKeyUp(event) {
|
|
@@ -17125,7 +17107,7 @@ class IgxCheckboxComponent {
|
|
|
17125
17107
|
this.invalid = false;
|
|
17126
17108
|
}
|
|
17127
17109
|
}
|
|
17128
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token:
|
|
17110
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: ThemeService }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17129
17111
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: IgxCheckboxComponent, isStandalone: true, selector: "igx-checkbox", inputs: { id: "id", labelId: "labelId", value: "value", name: "name", tabindex: "tabindex", labelPosition: "labelPosition", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], required: ["required", "required", booleanAttribute], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLabel: ["aria-label", "ariaLabel"], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], invalid: ["invalid", "invalid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], disableTransitions: ["disableTransitions", "disableTransitions", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "keyup": "onKeyUp($event)", "click": "_onCheckboxClick($event)", "blur": "onBlur()" }, properties: { "attr.id": "this.id", "class.igx-checkbox": "this.cssClass", "class.igx-checkbox--material": "this.material", "class.igx-checkbox--indigo": "this.indigo", "class.igx-checkbox--bootstrap": "this.bootstrap", "class.igx-checkbox--fluent": "this.fluent", "class.igx-checkbox--focused": "this.focused", "class.igx-checkbox--indeterminate": "this.indeterminate", "class.igx-checkbox--checked": "this.checked", "class.igx-checkbox--disabled": "this.disabled", "class.igx-checkbox--invalid": "this.invalid", "class.igx-checkbox--plain": "this.disableTransitions" } }, providers: [{
|
|
17130
17112
|
provide: EDITOR_PROVIDER,
|
|
17131
17113
|
useExisting: IgxCheckboxComponent,
|
|
@@ -17139,10 +17121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
17139
17121
|
useExisting: IgxCheckboxComponent,
|
|
17140
17122
|
multi: true
|
|
17141
17123
|
}], preserveWhitespaces: false, imports: [IgxRippleDirective], template: "<input #checkbox class=\"igx-checkbox__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [value]=\"value\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n [checked]=\"checked\"\n [required]=\"required\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-labelledby]=\"ariaLabel ? null : ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n (change)=\"_onCheckboxChange($event)\"\n (blur)=\"onBlur()\" />\n\n<div\n igxRipple\n igxRippleTarget=\".igx-checkbox__ripple\"\n [igxRippleDisabled]=\"disableRipple\"\n [igxRippleCentered]=\"true\"\n [igxRippleDuration]=\"300\"\n class=\"igx-checkbox__composite-wrapper\"\n>\n <span #label class=\"igx-checkbox__composite\">\n @if (theme === 'indigo') {\n <svg class=\"igx-checkbox__composite-mark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"18\" height=\"4\" x=\"2\" y=\"9\" rx=\"1.85\"/>\n <path d=\"M19.033 5a1.966 1.966 0 0 0-1.418.586l-8.479 8.577-2.753-2.77a1.971 1.971 0 0 0-2.8 0 1.998 1.998 0 0 0 0 2.822l4.155 4.196a1.955 1.955 0 0 0 2.8 0l9.879-9.99a1.998 1.998 0 0 0 0-2.821 1.966 1.966 0 0 0-1.384-.6Z\"/>\n </svg>\n } @else {\n <svg class=\"igx-checkbox__composite-mark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M4.1,12.7 9,17.6 20.3,6.3\"/>\n </svg>\n }\n </span>\n\n <div class=\"igx-checkbox__ripple\"></div>\n</div>\n\n<span #placeholderLabel\n [class]=\"labelClass\"\n [id]=\"labelId\">\n <ng-content></ng-content>\n</span>\n" }]
|
|
17142
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type:
|
|
17143
|
-
type: Inject,
|
|
17144
|
-
args: [THEME_TOKEN]
|
|
17145
|
-
}] }, { type: i4.NgControl, decorators: [{
|
|
17124
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: ThemeService }, { type: i4.NgControl, decorators: [{
|
|
17146
17125
|
type: Optional
|
|
17147
17126
|
}, {
|
|
17148
17127
|
type: Self
|
|
@@ -21235,18 +21214,31 @@ class IgxFilteringOperand {
|
|
|
21235
21214
|
}, {
|
|
21236
21215
|
name: 'in',
|
|
21237
21216
|
isUnary: false,
|
|
21238
|
-
|
|
21239
|
-
|
|
21217
|
+
isNestedQuery: true,
|
|
21218
|
+
iconName: 'in',
|
|
21240
21219
|
logic: (target, searchVal) => this.findValueInSet(target, searchVal)
|
|
21220
|
+
},
|
|
21221
|
+
{
|
|
21222
|
+
name: 'notIn',
|
|
21223
|
+
isUnary: false,
|
|
21224
|
+
isNestedQuery: true,
|
|
21225
|
+
iconName: 'not-in',
|
|
21226
|
+
logic: (target, searchVal) => !this.findValueInSet(target, searchVal)
|
|
21241
21227
|
}];
|
|
21242
21228
|
}
|
|
21243
21229
|
static instance() {
|
|
21244
21230
|
return this._instance || (this._instance = new this());
|
|
21245
21231
|
}
|
|
21246
21232
|
/**
|
|
21247
|
-
* Returns an array of names of the conditions which are visible in the UI
|
|
21233
|
+
* Returns an array of names of the conditions which are visible in the filtering UI
|
|
21248
21234
|
*/
|
|
21249
21235
|
conditionList() {
|
|
21236
|
+
return this.operations.filter(f => !f.hidden && !f.isNestedQuery).map((element) => element.name);
|
|
21237
|
+
}
|
|
21238
|
+
/**
|
|
21239
|
+
* Returns an array of names of the conditions which are visible in the UI, including "In" and "Not In", allowing the creation of sub-queries.
|
|
21240
|
+
*/
|
|
21241
|
+
extendedConditionList() {
|
|
21250
21242
|
return this.operations.filter(f => !f.hidden).map((element) => element.name);
|
|
21251
21243
|
}
|
|
21252
21244
|
/**
|
|
@@ -21281,7 +21273,7 @@ class IgxFilteringOperand {
|
|
|
21281
21273
|
class IgxBooleanFilteringOperand extends IgxFilteringOperand {
|
|
21282
21274
|
constructor() {
|
|
21283
21275
|
super();
|
|
21284
|
-
|
|
21276
|
+
const newOperations = [{
|
|
21285
21277
|
name: 'all',
|
|
21286
21278
|
isUnary: true,
|
|
21287
21279
|
iconName: 'filter_all',
|
|
@@ -21306,7 +21298,8 @@ class IgxBooleanFilteringOperand extends IgxFilteringOperand {
|
|
|
21306
21298
|
isUnary: true,
|
|
21307
21299
|
iconName: 'filter_not_empty',
|
|
21308
21300
|
logic: (target) => target !== null && target !== undefined
|
|
21309
|
-
}]
|
|
21301
|
+
}];
|
|
21302
|
+
this.operations = newOperations.concat(this.operations);
|
|
21310
21303
|
}
|
|
21311
21304
|
}
|
|
21312
21305
|
/* blazorCSSuppress */
|
|
@@ -21317,7 +21310,7 @@ class IgxBooleanFilteringOperand extends IgxFilteringOperand {
|
|
|
21317
21310
|
class IgxBaseDateTimeFilteringOperand extends IgxFilteringOperand {
|
|
21318
21311
|
constructor() {
|
|
21319
21312
|
super();
|
|
21320
|
-
|
|
21313
|
+
const newOperations = [{
|
|
21321
21314
|
name: 'empty',
|
|
21322
21315
|
isUnary: true,
|
|
21323
21316
|
iconName: 'filter_empty',
|
|
@@ -21327,7 +21320,8 @@ class IgxBaseDateTimeFilteringOperand extends IgxFilteringOperand {
|
|
|
21327
21320
|
isUnary: true,
|
|
21328
21321
|
iconName: 'filter_not_empty',
|
|
21329
21322
|
logic: (target) => target !== null && target !== undefined
|
|
21330
|
-
}]
|
|
21323
|
+
}];
|
|
21324
|
+
this.operations = newOperations.concat(this.operations);
|
|
21331
21325
|
}
|
|
21332
21326
|
/**
|
|
21333
21327
|
* Splits a Date object into parts
|
|
@@ -21370,6 +21364,9 @@ class IgxBaseDateTimeFilteringOperand extends IgxFilteringOperand {
|
|
|
21370
21364
|
}
|
|
21371
21365
|
return res;
|
|
21372
21366
|
}
|
|
21367
|
+
/**
|
|
21368
|
+
* @hidden
|
|
21369
|
+
*/
|
|
21373
21370
|
findValueInSet(target, searchVal) {
|
|
21374
21371
|
if (!target) {
|
|
21375
21372
|
return false;
|
|
@@ -21391,7 +21388,7 @@ class IgxBaseDateTimeFilteringOperand extends IgxFilteringOperand {
|
|
|
21391
21388
|
class IgxDateFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
21392
21389
|
constructor() {
|
|
21393
21390
|
super();
|
|
21394
|
-
|
|
21391
|
+
const newOperations = [{
|
|
21395
21392
|
name: 'equals',
|
|
21396
21393
|
isUnary: false,
|
|
21397
21394
|
iconName: 'filter_equal',
|
|
@@ -21569,7 +21566,8 @@ class IgxDateFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
21569
21566
|
const now = IgxDateFilteringOperand.getDateParts(new Date(), 'y');
|
|
21570
21567
|
return d.year === now.year + 1;
|
|
21571
21568
|
}
|
|
21572
|
-
}]
|
|
21569
|
+
}];
|
|
21570
|
+
this.operations = newOperations.concat(this.operations);
|
|
21573
21571
|
}
|
|
21574
21572
|
findValueInSet(target, searchVal) {
|
|
21575
21573
|
if (!target) {
|
|
@@ -21583,7 +21581,7 @@ class IgxDateFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
21583
21581
|
class IgxDateTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
21584
21582
|
constructor() {
|
|
21585
21583
|
super();
|
|
21586
|
-
|
|
21584
|
+
const newOperations = [{
|
|
21587
21585
|
name: 'equals',
|
|
21588
21586
|
isUnary: false,
|
|
21589
21587
|
iconName: 'filter_equal',
|
|
@@ -21767,14 +21765,15 @@ class IgxDateTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
21767
21765
|
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
|
|
21768
21766
|
return d.year === now.year + 1;
|
|
21769
21767
|
}
|
|
21770
|
-
}]
|
|
21768
|
+
}];
|
|
21769
|
+
this.operations = newOperations.concat(this.operations);
|
|
21771
21770
|
}
|
|
21772
21771
|
}
|
|
21773
21772
|
/* blazorCSSuppress */
|
|
21774
21773
|
class IgxTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
21775
21774
|
constructor() {
|
|
21776
21775
|
super();
|
|
21777
|
-
|
|
21776
|
+
const newOperations = [{
|
|
21778
21777
|
name: 'at',
|
|
21779
21778
|
isUnary: false,
|
|
21780
21779
|
iconName: 'filter_equal',
|
|
@@ -21862,8 +21861,12 @@ class IgxTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
21862
21861
|
targetn.hours > search.hours ? true : targetn.hours === search.hours && targetn.minutes > search.minutes ?
|
|
21863
21862
|
true : targetn.hours === search.hours && targetn.minutes === search.minutes && targetn.seconds > search.seconds;
|
|
21864
21863
|
}
|
|
21865
|
-
}]
|
|
21864
|
+
}];
|
|
21865
|
+
this.operations = newOperations.concat(this.operations);
|
|
21866
21866
|
}
|
|
21867
|
+
/**
|
|
21868
|
+
* @hidden
|
|
21869
|
+
*/
|
|
21867
21870
|
findValueInSet(target, searchVal) {
|
|
21868
21871
|
if (!target) {
|
|
21869
21872
|
return false;
|
|
@@ -21880,7 +21883,7 @@ class IgxTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
21880
21883
|
class IgxNumberFilteringOperand extends IgxFilteringOperand {
|
|
21881
21884
|
constructor() {
|
|
21882
21885
|
super();
|
|
21883
|
-
|
|
21886
|
+
const newOperations = [{
|
|
21884
21887
|
name: 'equals',
|
|
21885
21888
|
isUnary: false,
|
|
21886
21889
|
iconName: 'filter_equal',
|
|
@@ -21920,7 +21923,8 @@ class IgxNumberFilteringOperand extends IgxFilteringOperand {
|
|
|
21920
21923
|
isUnary: true,
|
|
21921
21924
|
iconName: 'filter_not_empty',
|
|
21922
21925
|
logic: (target) => target !== null && target !== undefined && !isNaN(target)
|
|
21923
|
-
}]
|
|
21926
|
+
}];
|
|
21927
|
+
this.operations = newOperations.concat(this.operations);
|
|
21924
21928
|
}
|
|
21925
21929
|
}
|
|
21926
21930
|
/* blazorCSSuppress */
|
|
@@ -21932,7 +21936,7 @@ class IgxNumberFilteringOperand extends IgxFilteringOperand {
|
|
|
21932
21936
|
class IgxStringFilteringOperand extends IgxFilteringOperand {
|
|
21933
21937
|
constructor() {
|
|
21934
21938
|
super();
|
|
21935
|
-
|
|
21939
|
+
const newOperations = [{
|
|
21936
21940
|
name: 'contains',
|
|
21937
21941
|
isUnary: false,
|
|
21938
21942
|
iconName: 'filter_contains',
|
|
@@ -21996,7 +22000,8 @@ class IgxStringFilteringOperand extends IgxFilteringOperand {
|
|
|
21996
22000
|
isUnary: true,
|
|
21997
22001
|
iconName: 'filter_not_empty',
|
|
21998
22002
|
logic: (target) => target !== null && target !== undefined && target.length > 0
|
|
21999
|
-
}]
|
|
22003
|
+
}];
|
|
22004
|
+
this.operations = newOperations.concat(this.operations);
|
|
22000
22005
|
}
|
|
22001
22006
|
/**
|
|
22002
22007
|
* Applies case sensitivity on strings if provided
|
|
@@ -22443,11 +22448,11 @@ class IgxExpansionPanelHeaderComponent {
|
|
|
22443
22448
|
}
|
|
22444
22449
|
}
|
|
22445
22450
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExpansionPanelHeaderComponent, deps: [{ token: IGX_EXPANSION_PANEL_COMPONENT, host: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22446
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxExpansionPanelHeaderComponent, isStandalone: true, selector: "igx-expansion-panel-header", inputs: { lv: "lv", role: "role", iconPosition: "iconPosition", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { interaction: "interaction" }, host: { listeners: { "keydown.Enter": "onAction($event)", "keydown.Space": "onAction($event)", "keydown.Spacebar": "onAction($event)", "click": "onAction($event)", "keydown.Alt.ArrowDown": "openPanel($event)", "keydown.Alt.ArrowUp": "closePanel($event)" }, properties: { "attr.aria-level": "this.lv", "attr.role": "this.role", "class.igx-expansion-panel__header": "this.cssClass", "class.igx-expansion-panel__header--expanded": "this.isExpanded", "class.igx-expansion-panel--disabled": "this.disabled" } }, queries: [{ propertyName: "iconTemplate", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true }, { propertyName: "customIconRef", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "defaultIconRef", first: true, predicate: IgxIconComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon\n *ngIf=\"!iconTemplate\"\n family=\"default\"\n [name]=\"panel.collapsed ? 'expand' : 'collapse'\"
|
|
22451
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxExpansionPanelHeaderComponent, isStandalone: true, selector: "igx-expansion-panel-header", inputs: { lv: "lv", role: "role", iconPosition: "iconPosition", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { interaction: "interaction" }, host: { listeners: { "keydown.Enter": "onAction($event)", "keydown.Space": "onAction($event)", "keydown.Spacebar": "onAction($event)", "click": "onAction($event)", "keydown.Alt.ArrowDown": "openPanel($event)", "keydown.Alt.ArrowUp": "closePanel($event)" }, properties: { "attr.aria-level": "this.lv", "attr.role": "this.role", "class.igx-expansion-panel__header": "this.cssClass", "class.igx-expansion-panel__header--expanded": "this.isExpanded", "class.igx-expansion-panel--disabled": "this.disabled" } }, queries: [{ propertyName: "iconTemplate", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true }, { propertyName: "customIconRef", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "defaultIconRef", first: true, predicate: IgxIconComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon\n *ngIf=\"!iconTemplate\"\n family=\"default\"\n [name]=\"panel.collapsed ? 'expand' : 'collapse'\">\n </igx-icon>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }] }); }
|
|
22447
22452
|
}
|
|
22448
22453
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExpansionPanelHeaderComponent, decorators: [{
|
|
22449
22454
|
type: Component,
|
|
22450
|
-
args: [{ selector: 'igx-expansion-panel-header', imports: [NgIf, IgxIconComponent], template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon\n *ngIf=\"!iconTemplate\"\n family=\"default\"\n [name]=\"panel.collapsed ? 'expand' : 'collapse'\"
|
|
22455
|
+
args: [{ selector: 'igx-expansion-panel-header', imports: [NgIf, IgxIconComponent], template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon\n *ngIf=\"!iconTemplate\"\n family=\"default\"\n [name]=\"panel.collapsed ? 'expand' : 'collapse'\">\n </igx-icon>\n </div>\n</div>\n" }]
|
|
22451
22456
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
22452
22457
|
type: Host
|
|
22453
22458
|
}, {
|
|
@@ -26423,7 +26428,7 @@ class IgxGridSelectionService {
|
|
|
26423
26428
|
this._ranges = new Set();
|
|
26424
26429
|
this.pointerOriginHandler = (event) => {
|
|
26425
26430
|
this.pointerEventInGridBody = false;
|
|
26426
|
-
|
|
26431
|
+
document.body.removeEventListener('pointerup', this.pointerOriginHandler);
|
|
26427
26432
|
const targetTagName = event.target.tagName.toLowerCase();
|
|
26428
26433
|
if (targetTagName !== 'igx-grid-cell' && targetTagName !== 'igx-tree-grid-cell') {
|
|
26429
26434
|
this.pointerUp(this._lastSelectedNode, this.grid.rangeSelected, true);
|
|
@@ -26582,7 +26587,7 @@ class IgxGridSelectionService {
|
|
|
26582
26587
|
this.pointerState.ctrl = ctrl;
|
|
26583
26588
|
this.pointerState.shift = shift;
|
|
26584
26589
|
this.pointerEventInGridBody = true;
|
|
26585
|
-
|
|
26590
|
+
document.body.addEventListener('pointerup', this.pointerOriginHandler);
|
|
26586
26591
|
// No ctrl key pressed - no multiple selection
|
|
26587
26592
|
if (!ctrl) {
|
|
26588
26593
|
this.clear();
|
|
@@ -26705,7 +26710,7 @@ class IgxGridSelectionService {
|
|
|
26705
26710
|
restoreTextSelection() {
|
|
26706
26711
|
const selection = window.getSelection();
|
|
26707
26712
|
if (!selection.rangeCount) {
|
|
26708
|
-
selection.addRange(this._selectionRange ||
|
|
26713
|
+
selection.addRange(this._selectionRange || document.createRange());
|
|
26709
26714
|
}
|
|
26710
26715
|
}
|
|
26711
26716
|
getSelectedRowsData() {
|
|
@@ -28528,7 +28533,7 @@ class IgxAvatarComponent {
|
|
|
28528
28533
|
* @internal
|
|
28529
28534
|
*/
|
|
28530
28535
|
getSrcUrl() {
|
|
28531
|
-
return `url(
|
|
28536
|
+
return `url(${this.src})`;
|
|
28532
28537
|
}
|
|
28533
28538
|
/** @hidden @internal */
|
|
28534
28539
|
ngOnInit() {
|
|
@@ -34168,8 +34173,16 @@ const CarouselAnimationType = /*@__PURE__*/ mkenum({
|
|
|
34168
34173
|
fade: 'fade'
|
|
34169
34174
|
});
|
|
34170
34175
|
const CarouselIndicatorsOrientation = /*@__PURE__*/ mkenum({
|
|
34176
|
+
/**
|
|
34177
|
+
* @deprecated in version 19.1.0. Use `end` instead.
|
|
34178
|
+
*/
|
|
34171
34179
|
bottom: 'bottom',
|
|
34172
|
-
|
|
34180
|
+
/**
|
|
34181
|
+
* @deprecated in version 19.1.0. Use `start` instead.
|
|
34182
|
+
*/
|
|
34183
|
+
top: 'top',
|
|
34184
|
+
start: 'start',
|
|
34185
|
+
end: 'end'
|
|
34173
34186
|
});
|
|
34174
34187
|
|
|
34175
34188
|
var Direction;
|
|
@@ -34179,8 +34192,6 @@ var Direction;
|
|
|
34179
34192
|
Direction[Direction["PREV"] = 2] = "PREV";
|
|
34180
34193
|
})(Direction || (Direction = {}));
|
|
34181
34194
|
/** @hidden */
|
|
34182
|
-
const IGX_CAROUSEL_COMPONENT = /*@__PURE__*/ new InjectionToken('IgxCarouselToken');
|
|
34183
|
-
/** @hidden */
|
|
34184
34195
|
let IgxCarouselComponentBase = class IgxCarouselComponentBase {
|
|
34185
34196
|
constructor(animationService, cdr) {
|
|
34186
34197
|
this.animationService = animationService;
|
|
@@ -34459,15 +34470,15 @@ class IgxSlideComponent {
|
|
|
34459
34470
|
this._destroy$.next(true);
|
|
34460
34471
|
this._destroy$.complete();
|
|
34461
34472
|
}
|
|
34462
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxSlideComponent, deps: [{ token: i0.ElementRef }, { token:
|
|
34473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxSlideComponent, deps: [{ token: i0.ElementRef }, { token: IgxCarouselComponent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34463
34474
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxSlideComponent, isStandalone: true, selector: "igx-slide", inputs: { index: "index", direction: "direction", total: "total", active: ["active", "active", booleanAttribute], previous: ["previous", "previous", booleanAttribute] }, outputs: { activeChange: "activeChange" }, host: { properties: { "attr.tabindex": "this.tabIndex", "attr.id": "this.id", "attr.role": "this.tab", "attr.aria-labelledby": "this.ariaLabelledBy", "class.igx-slide": "this.cssClass", "class.igx-slide--current": "this.active", "class.igx-slide--previous": "this.previous" } }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
|
|
34464
34475
|
}
|
|
34465
34476
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxSlideComponent, decorators: [{
|
|
34466
34477
|
type: Component,
|
|
34467
34478
|
args: [{ selector: 'igx-slide', standalone: true, template: "<ng-content></ng-content>\n" }]
|
|
34468
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type:
|
|
34479
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: IgxCarouselComponent, decorators: [{
|
|
34469
34480
|
type: Inject,
|
|
34470
|
-
args: [
|
|
34481
|
+
args: [IgxCarouselComponent]
|
|
34471
34482
|
}] }], propDecorators: { index: [{
|
|
34472
34483
|
type: Input
|
|
34473
34484
|
}], direction: [{
|
|
@@ -34748,7 +34759,7 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
34748
34759
|
get indicatorsClass() {
|
|
34749
34760
|
return {
|
|
34750
34761
|
['igx-carousel-indicators--focused']: this._hasKeyboardFocusOnIndicators,
|
|
34751
|
-
[`igx-carousel-indicators--${this.
|
|
34762
|
+
[`igx-carousel-indicators--${this.getIndicatorsClass()}`]: true
|
|
34752
34763
|
};
|
|
34753
34764
|
}
|
|
34754
34765
|
/** @hidden */
|
|
@@ -34842,13 +34853,12 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
34842
34853
|
this._interval = +value;
|
|
34843
34854
|
this.restartInterval();
|
|
34844
34855
|
}
|
|
34845
|
-
constructor(cdr, element, iterableDiffers, animationService, platformUtil, dir
|
|
34856
|
+
constructor(cdr, element, iterableDiffers, animationService, platformUtil, dir) {
|
|
34846
34857
|
super(animationService, cdr);
|
|
34847
34858
|
this.element = element;
|
|
34848
34859
|
this.iterableDiffers = iterableDiffers;
|
|
34849
34860
|
this.platformUtil = platformUtil;
|
|
34850
34861
|
this.dir = dir;
|
|
34851
|
-
this.document = document;
|
|
34852
34862
|
/**
|
|
34853
34863
|
* Sets the `id` of the carousel.
|
|
34854
34864
|
* If not set, the `id` of the first carousel component will be `"igx-carousel-0"`.
|
|
@@ -34952,34 +34962,34 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
34952
34962
|
this.gesturesSupport = true;
|
|
34953
34963
|
/**
|
|
34954
34964
|
* Controls the maximum indexes that can be shown.
|
|
34955
|
-
* Default value is `
|
|
34965
|
+
* Default value is `10`.
|
|
34956
34966
|
* ```html
|
|
34957
|
-
* <igx-carousel [maximumIndicatorsCount]="
|
|
34967
|
+
* <igx-carousel [maximumIndicatorsCount]="5"></igx-carousel>
|
|
34958
34968
|
* ```
|
|
34959
34969
|
*
|
|
34960
34970
|
* @memberOf IgxCarouselComponent
|
|
34961
34971
|
*/
|
|
34962
|
-
this.maximumIndicatorsCount =
|
|
34972
|
+
this.maximumIndicatorsCount = 10;
|
|
34963
34973
|
/**
|
|
34964
|
-
* Gets/sets the display mode of carousel indicators. It can be
|
|
34965
|
-
* Default value is `
|
|
34974
|
+
* Gets/sets the display mode of carousel indicators. It can be `start` or `end`.
|
|
34975
|
+
* Default value is `end`.
|
|
34966
34976
|
* ```html
|
|
34967
|
-
* <igx-carousel indicatorsOrientation=
|
|
34977
|
+
* <igx-carousel indicatorsOrientation="start">
|
|
34968
34978
|
* <igx-carousel>
|
|
34969
34979
|
* ```
|
|
34970
34980
|
*
|
|
34971
|
-
* @memberOf
|
|
34981
|
+
* @memberOf IgxCarouselComponent
|
|
34972
34982
|
*/
|
|
34973
|
-
this.indicatorsOrientation = CarouselIndicatorsOrientation.
|
|
34983
|
+
this.indicatorsOrientation = CarouselIndicatorsOrientation.end;
|
|
34974
34984
|
/**
|
|
34975
34985
|
* Gets/sets the animation type of carousel.
|
|
34976
34986
|
* Default value is `slide`.
|
|
34977
34987
|
* ```html
|
|
34978
|
-
* <igx-carousel animationType=
|
|
34988
|
+
* <igx-carousel animationType="none">
|
|
34979
34989
|
* <igx-carousel>
|
|
34980
34990
|
* ```
|
|
34981
34991
|
*
|
|
34982
|
-
* @memberOf
|
|
34992
|
+
* @memberOf IgxCarouselComponent
|
|
34983
34993
|
*/
|
|
34984
34994
|
this.animationType = CarouselAnimationType.slide;
|
|
34985
34995
|
/**
|
|
@@ -35457,7 +35467,7 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
35457
35467
|
return this._indicators.toArray();
|
|
35458
35468
|
}
|
|
35459
35469
|
focusElement() {
|
|
35460
|
-
const focusedElement =
|
|
35470
|
+
const focusedElement = document.activeElement;
|
|
35461
35471
|
if (focusedElement.classList.contains('igx-carousel-indicators__indicator')) {
|
|
35462
35472
|
this.indicatorsElements[this.current].nativeElement.focus();
|
|
35463
35473
|
}
|
|
@@ -35465,6 +35475,16 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
35465
35475
|
this.focusSlideElement();
|
|
35466
35476
|
}
|
|
35467
35477
|
}
|
|
35478
|
+
getIndicatorsClass() {
|
|
35479
|
+
switch (this.indicatorsOrientation) {
|
|
35480
|
+
case CarouselIndicatorsOrientation.top:
|
|
35481
|
+
return CarouselIndicatorsOrientation.start;
|
|
35482
|
+
case CarouselIndicatorsOrientation.bottom:
|
|
35483
|
+
return CarouselIndicatorsOrientation.end;
|
|
35484
|
+
default:
|
|
35485
|
+
return this.indicatorsOrientation;
|
|
35486
|
+
}
|
|
35487
|
+
}
|
|
35468
35488
|
getNextIndex() {
|
|
35469
35489
|
return (this.current + 1) % this.total;
|
|
35470
35490
|
}
|
|
@@ -35607,13 +35627,12 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
35607
35627
|
requestAnimationFrame(() => this.slides.find(s => s.active).nativeElement.focus());
|
|
35608
35628
|
}
|
|
35609
35629
|
}
|
|
35610
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxCarouselComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: IgxAngularAnimationService }, { token: PlatformUtil }, { token: IgxDirectionality }
|
|
35630
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxCarouselComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: IgxAngularAnimationService }, { token: PlatformUtil }, { token: IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35611
35631
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxCarouselComponent, isStandalone: true, selector: "igx-carousel", inputs: { id: "id", loop: ["loop", "loop", booleanAttribute], pause: ["pause", "pause", booleanAttribute], navigation: ["navigation", "navigation", booleanAttribute], indicators: ["indicators", "indicators", booleanAttribute], vertical: ["vertical", "vertical", booleanAttribute], keyboardSupport: ["keyboardSupport", "keyboardSupport", booleanAttribute], gesturesSupport: ["gesturesSupport", "gesturesSupport", booleanAttribute], maximumIndicatorsCount: "maximumIndicatorsCount", indicatorsOrientation: "indicatorsOrientation", animationType: "animationType", resourceStrings: "resourceStrings", interval: "interval" }, outputs: { slideChanged: "slideChanged", slideAdded: "slideAdded", slideRemoved: "slideRemoved", carouselPaused: "carouselPaused", carouselPlaying: "carouselPlaying" }, host: { listeners: { "keydown.arrowright": "onKeydownArrowRight($event)", "keydown.arrowleft": "onKeydownArrowLeft($event)", "tap": "onTap($event)", "keydown.home": "onKeydownHome($event)", "keydown.end": "onKeydownEnd($event)", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "panleft": "onPanLeft($event)", "panright": "onPanRight($event)", "panup": "onPanUp($event)", "pandown": "onPanDown($event)", "panend": "onPanEnd($event)" }, properties: { "attr.id": "this.id", "attr.role": "this.role", "attr.aria-roledescription": "this.roleDescription", "attr.aria-labelledby": "this.labelId", "class.igx-carousel--vertical": "this.isVertical", "class.igx-carousel": "this.cssClass", "style.touch-action": "this.touchAction" } }, providers: [
|
|
35612
35632
|
{
|
|
35613
35633
|
provide: HAMMER_GESTURE_CONFIG,
|
|
35614
35634
|
useClass: CarouselHammerConfig
|
|
35615
|
-
}
|
|
35616
|
-
{ provide: IGX_CAROUSEL_COMPONENT, useExisting: IgxCarouselComponent }
|
|
35635
|
+
}
|
|
35617
35636
|
], queries: [{ propertyName: "indicatorTemplate", first: true, predicate: IgxCarouselIndicatorDirective, descendants: true, read: TemplateRef }, { propertyName: "nextButtonTemplate", first: true, predicate: IgxCarouselNextButtonDirective, descendants: true, read: TemplateRef }, { propertyName: "prevButtonTemplate", first: true, predicate: IgxCarouselPrevButtonDirective, descendants: true, read: TemplateRef }, { propertyName: "slides", predicate: IgxSlideComponent }], viewQueries: [{ propertyName: "defaultIndicator", first: true, predicate: ["defaultIndicator"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultNextButton", first: true, predicate: ["defaultNextButton"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultPrevButton", first: true, predicate: ["defaultPrevButton"], descendants: true, read: TemplateRef, static: true }, { propertyName: "_indicators", predicate: ["indicators"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #defaultIndicator let-slide>\n <div class=\"igx-nav-dot\"\n [class.igx-nav-dot--active]=\"slide.active\">\n </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--prev\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n [disabled]=\"prevButtonDisabled\"\n (click)=\"prev()\"\n (keydown)=\"handleKeydownPrev($event)\">\n <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n</button>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--next\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n [disabled]=\"nextButtonDisabled\"\n (click)=\"next()\"\n (keydown)=\"handleKeydownNext($event)\">\n <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n</button>\n\n<div *ngIf=\"showIndicators\" [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n <div #indicators *ngFor=\"let slide of slides\"\n class=\"igx-carousel-indicators__indicator\"\n (click)=\"select(slide)\"\n [id]=\"'tab-'+ slide.index + '-' + total\"\n [attr.role]=\"'tab'\"\n [attr.tabindex]=\"slide.active ? 0 : -1\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n [attr.aria-controls]=\"'panel-' + slide.index\"\n [attr.aria-selected]=\"slide.active\">\n <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n </div>\n</div>\n\n<div *ngIf=\"showIndicatorsLabel\" [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n</div>\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;outline-style:none}\n"], dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
35618
35637
|
}
|
|
35619
35638
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxCarouselComponent, decorators: [{
|
|
@@ -35622,16 +35641,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
35622
35641
|
{
|
|
35623
35642
|
provide: HAMMER_GESTURE_CONFIG,
|
|
35624
35643
|
useClass: CarouselHammerConfig
|
|
35625
|
-
}
|
|
35626
|
-
{ provide: IGX_CAROUSEL_COMPONENT, useExisting: IgxCarouselComponent }
|
|
35644
|
+
}
|
|
35627
35645
|
], selector: 'igx-carousel', imports: [IgxButtonDirective, IgxIconComponent, NgIf, NgClass, NgFor, NgTemplateOutlet], template: "<ng-template #defaultIndicator let-slide>\n <div class=\"igx-nav-dot\"\n [class.igx-nav-dot--active]=\"slide.active\">\n </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--prev\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n [disabled]=\"prevButtonDisabled\"\n (click)=\"prev()\"\n (keydown)=\"handleKeydownPrev($event)\">\n <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n</button>\n\n<button *ngIf=\"navigation && slides.length\"\n igxButton\n class=\"igx-carousel__arrow--next\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n [disabled]=\"nextButtonDisabled\"\n (click)=\"next()\"\n (keydown)=\"handleKeydownNext($event)\">\n <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n</button>\n\n<div *ngIf=\"showIndicators\" [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n <div #indicators *ngFor=\"let slide of slides\"\n class=\"igx-carousel-indicators__indicator\"\n (click)=\"select(slide)\"\n [id]=\"'tab-'+ slide.index + '-' + total\"\n [attr.role]=\"'tab'\"\n [attr.tabindex]=\"slide.active ? 0 : -1\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n [attr.aria-controls]=\"'panel-' + slide.index\"\n [attr.aria-selected]=\"slide.active\">\n <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n </div>\n</div>\n\n<div *ngIf=\"showIndicatorsLabel\" [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n</div>\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;outline-style:none}\n"] }]
|
|
35628
35646
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{
|
|
35629
35647
|
type: Inject,
|
|
35630
35648
|
args: [IgxAngularAnimationService]
|
|
35631
|
-
}] }, { type: PlatformUtil }, { type: IgxDirectionality },
|
|
35632
|
-
type: Inject,
|
|
35633
|
-
args: [DOCUMENT]
|
|
35634
|
-
}] }], propDecorators: { id: [{
|
|
35649
|
+
}] }, { type: PlatformUtil }, { type: IgxDirectionality }], propDecorators: { id: [{
|
|
35635
35650
|
type: HostBinding,
|
|
35636
35651
|
args: ['attr.id']
|
|
35637
35652
|
}, {
|
|
@@ -42773,8 +42788,8 @@ class IgxGridCell {
|
|
|
42773
42788
|
}
|
|
42774
42789
|
|
|
42775
42790
|
const DEFAULT_DATE_FORMAT = 'mediumDate';
|
|
42776
|
-
const DEFAULT_TIME_FORMAT
|
|
42777
|
-
const DEFAULT_DATE_TIME_FORMAT
|
|
42791
|
+
const DEFAULT_TIME_FORMAT = 'mediumTime';
|
|
42792
|
+
const DEFAULT_DATE_TIME_FORMAT = 'medium';
|
|
42778
42793
|
const DEFAULT_DIGITS_INFO = '1.0-3';
|
|
42779
42794
|
/* blazorElement */
|
|
42780
42795
|
/* contentParent: ColumnGroup */
|
|
@@ -44123,8 +44138,8 @@ class IgxColumnComponent {
|
|
|
44123
44138
|
}
|
|
44124
44139
|
if (!this._columnPipeArgs.format) {
|
|
44125
44140
|
this._columnPipeArgs.format = this.dataType === GridColumnDataType.Time ?
|
|
44126
|
-
DEFAULT_TIME_FORMAT
|
|
44127
|
-
DEFAULT_DATE_TIME_FORMAT
|
|
44141
|
+
DEFAULT_TIME_FORMAT : this.dataType === GridColumnDataType.DateTime ?
|
|
44142
|
+
DEFAULT_DATE_TIME_FORMAT : DEFAULT_DATE_FORMAT;
|
|
44128
44143
|
}
|
|
44129
44144
|
if (!this.summaries) {
|
|
44130
44145
|
switch (this.dataType) {
|
|
@@ -44206,7 +44221,7 @@ class IgxColumnComponent {
|
|
|
44206
44221
|
columnSizes[col.colStart - 1] = {
|
|
44207
44222
|
ref: col,
|
|
44208
44223
|
width: col.width === 'fit-content' ? col.autoSize :
|
|
44209
|
-
col.widthSetByUser || this.grid.columnWidthSetByUser ?
|
|
44224
|
+
col.widthSetByUser || this.grid.columnWidthSetByUser ? parseInt(col.calcWidth, 10) : null,
|
|
44210
44225
|
colSpan: col.gridColumnSpan,
|
|
44211
44226
|
colEnd: col.colStart + col.gridColumnSpan,
|
|
44212
44227
|
widthSetByUser: col.widthSetByUser
|
|
@@ -44235,7 +44250,7 @@ class IgxColumnComponent {
|
|
|
44235
44250
|
columnSizes[col.colStart - 1] = {
|
|
44236
44251
|
ref: col,
|
|
44237
44252
|
width: col.width === 'fit-content' ? col.autoSize :
|
|
44238
|
-
col.widthSetByUser || this.grid.columnWidthSetByUser ?
|
|
44253
|
+
col.widthSetByUser || this.grid.columnWidthSetByUser ? parseInt(col.calcWidth, 10) : null,
|
|
44239
44254
|
colSpan: col.gridColumnSpan,
|
|
44240
44255
|
colEnd: col.colStart + col.gridColumnSpan,
|
|
44241
44256
|
widthSetByUser: col.widthSetByUser
|
|
@@ -44250,7 +44265,7 @@ class IgxColumnComponent {
|
|
|
44250
44265
|
columnSizes[i] = {
|
|
44251
44266
|
ref: col,
|
|
44252
44267
|
width: col.width === 'fit-content' ? col.autoSize :
|
|
44253
|
-
col.widthSetByUser || this.grid.columnWidthSetByUser ?
|
|
44268
|
+
col.widthSetByUser || this.grid.columnWidthSetByUser ? parseInt(col.calcWidth, 10) : null,
|
|
44254
44269
|
colSpan: col.gridColumnSpan,
|
|
44255
44270
|
colEnd: col.colStart + col.gridColumnSpan,
|
|
44256
44271
|
widthSetByUser: col.widthSetByUser
|
|
@@ -44310,7 +44325,7 @@ class IgxColumnComponent {
|
|
|
44310
44325
|
result.push(size.width + 'px');
|
|
44311
44326
|
}
|
|
44312
44327
|
else {
|
|
44313
|
-
result.push(
|
|
44328
|
+
result.push(parseInt(this.grid.getPossibleColumnWidth(), 10) + 'px');
|
|
44314
44329
|
}
|
|
44315
44330
|
}
|
|
44316
44331
|
return result;
|
|
@@ -44715,11 +44730,8 @@ class IgxColumnComponent {
|
|
|
44715
44730
|
const colWidth = this.width;
|
|
44716
44731
|
const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;
|
|
44717
44732
|
const isAutoWidth = colWidth && typeof colWidth === 'string' && colWidth === 'fit-content';
|
|
44718
|
-
if (isPercentageWidth
|
|
44719
|
-
this._calcWidth = this.grid.
|
|
44720
|
-
}
|
|
44721
|
-
else if (isPercentageWidth) {
|
|
44722
|
-
this._calcWidth = parseFloat(colWidth) / 100 * this.grid.calcWidth;
|
|
44733
|
+
if (isPercentageWidth) {
|
|
44734
|
+
this._calcWidth = Math.floor(parseFloat(colWidth) / 100 * this.grid.calcWidth);
|
|
44723
44735
|
}
|
|
44724
44736
|
else if (!colWidth || isAutoWidth && !this.autoSize) {
|
|
44725
44737
|
// no width
|
|
@@ -44728,7 +44740,7 @@ class IgxColumnComponent {
|
|
|
44728
44740
|
else {
|
|
44729
44741
|
this._calcWidth = this.width;
|
|
44730
44742
|
}
|
|
44731
|
-
this.calcPixelWidth =
|
|
44743
|
+
this.calcPixelWidth = parseInt(this._calcWidth, 10);
|
|
44732
44744
|
}
|
|
44733
44745
|
/**
|
|
44734
44746
|
* @hidden
|
|
@@ -45427,7 +45439,7 @@ class IgxColumnGroupComponent extends IgxColumnComponent {
|
|
|
45427
45439
|
if (val.hidden) {
|
|
45428
45440
|
return acc;
|
|
45429
45441
|
}
|
|
45430
|
-
return acc +
|
|
45442
|
+
return acc + parseInt(val.calcWidth, 10);
|
|
45431
45443
|
}, 0)}`;
|
|
45432
45444
|
return width + 'px';
|
|
45433
45445
|
}
|
|
@@ -45533,7 +45545,7 @@ class IgxColumnLayoutComponent extends IgxColumnGroupComponent {
|
|
|
45533
45545
|
* @memberof IgxColumnGroupComponent
|
|
45534
45546
|
*/
|
|
45535
45547
|
get width() {
|
|
45536
|
-
const width = this.getFilledChildColumnSizes(this.children).reduce((acc, val) => acc +
|
|
45548
|
+
const width = this.getFilledChildColumnSizes(this.children).reduce((acc, val) => acc + parseInt(val, 10), 0);
|
|
45537
45549
|
return width;
|
|
45538
45550
|
}
|
|
45539
45551
|
/* blazorSuppress */
|
|
@@ -45548,7 +45560,7 @@ class IgxColumnLayoutComponent extends IgxColumnGroupComponent {
|
|
|
45548
45560
|
let borderWidth = 0;
|
|
45549
45561
|
if (this.headerGroup && this.headerGroup.hasLastPinnedChildColumn) {
|
|
45550
45562
|
const headerStyles = this.grid.document.defaultView.getComputedStyle(this.headerGroup.nativeElement.children[0]);
|
|
45551
|
-
borderWidth =
|
|
45563
|
+
borderWidth = parseInt(headerStyles.borderRightWidth, 10);
|
|
45552
45564
|
}
|
|
45553
45565
|
return super.getCalcWidth() + borderWidth;
|
|
45554
45566
|
}
|
|
@@ -45714,8 +45726,9 @@ const IGX_GRID_VALIDATION_DIRECTIVES = [
|
|
|
45714
45726
|
// ] as const;
|
|
45715
45727
|
|
|
45716
45728
|
const QueryBuilderResourceStringsEN = {
|
|
45717
|
-
igx_query_builder_date_placeholder: '
|
|
45718
|
-
igx_query_builder_time_placeholder: '
|
|
45729
|
+
igx_query_builder_date_placeholder: 'Select date',
|
|
45730
|
+
igx_query_builder_time_placeholder: 'Select time',
|
|
45731
|
+
igx_query_builder_datetime_placeholder: 'Select date & time',
|
|
45719
45732
|
igx_query_builder_filter_operator_and: 'And',
|
|
45720
45733
|
igx_query_builder_filter_operator_or: 'Or',
|
|
45721
45734
|
igx_query_builder_filter_contains: 'Contains',
|
|
@@ -45728,6 +45741,8 @@ const QueryBuilderResourceStringsEN = {
|
|
|
45728
45741
|
igx_query_builder_filter_notEmpty: 'Not Empty',
|
|
45729
45742
|
igx_query_builder_filter_null: 'Null',
|
|
45730
45743
|
igx_query_builder_filter_notNull: 'Not Null',
|
|
45744
|
+
igx_query_builder_filter_in: 'In',
|
|
45745
|
+
igx_query_builder_filter_notIn: 'Not In',
|
|
45731
45746
|
igx_query_builder_filter_before: 'Before',
|
|
45732
45747
|
igx_query_builder_filter_after: 'After',
|
|
45733
45748
|
igx_query_builder_filter_at: 'At',
|
|
@@ -45750,14 +45765,19 @@ const QueryBuilderResourceStringsEN = {
|
|
|
45750
45765
|
igx_query_builder_filter_false: 'False',
|
|
45751
45766
|
igx_query_builder_filter_all: 'All',
|
|
45752
45767
|
igx_query_builder_title: 'Query Builder',
|
|
45768
|
+
igx_query_builder_from_label: 'From',
|
|
45769
|
+
igx_query_builder_select_label: 'Select',
|
|
45770
|
+
igx_query_builder_where_label: 'Where',
|
|
45753
45771
|
igx_query_builder_and_group: '"And" Group',
|
|
45754
45772
|
igx_query_builder_or_group: '"Or" Group',
|
|
45755
45773
|
igx_query_builder_end_group: 'End Group',
|
|
45756
45774
|
igx_query_builder_and_label: 'and',
|
|
45757
45775
|
igx_query_builder_or_label: 'or',
|
|
45758
|
-
|
|
45759
|
-
|
|
45760
|
-
|
|
45776
|
+
igx_query_builder_switch_group: 'Switch to {0}',
|
|
45777
|
+
igx_query_builder_add_condition: 'Add condition',
|
|
45778
|
+
igx_query_builder_add_group: 'Add group',
|
|
45779
|
+
igx_query_builder_add_condition_root: 'Condition',
|
|
45780
|
+
igx_query_builder_add_group_root: 'Group',
|
|
45761
45781
|
igx_query_builder_ungroup: 'Ungroup',
|
|
45762
45782
|
igx_query_builder_delete: 'Delete',
|
|
45763
45783
|
igx_query_builder_delete_filters: 'Delete filters',
|
|
@@ -45765,8 +45785,49 @@ const QueryBuilderResourceStringsEN = {
|
|
|
45765
45785
|
igx_query_builder_column_placeholder: 'Select column',
|
|
45766
45786
|
igx_query_builder_condition_placeholder: 'Select filter',
|
|
45767
45787
|
igx_query_builder_value_placeholder: 'Value',
|
|
45788
|
+
igx_query_builder_all_fields: 'All fields',
|
|
45789
|
+
igx_query_builder_details: 'Details',
|
|
45790
|
+
igx_query_builder_search: 'Search',
|
|
45791
|
+
igx_query_builder_select_all: 'Select All',
|
|
45792
|
+
igx_query_builder_select_entity: 'Select entity',
|
|
45793
|
+
igx_query_builder_select_return_field_single: 'Select return field',
|
|
45794
|
+
igx_query_builder_select_return_fields: 'Select return fields',
|
|
45795
|
+
igx_query_builder_dialog_title: 'Confirmation',
|
|
45796
|
+
igx_query_builder_dialog_message: 'By changing the entity, you will lose your current settings. Are you sure you want to do that?',
|
|
45797
|
+
igx_query_builder_dialog_checkbox_text: 'Do not show this dialog again',
|
|
45798
|
+
igx_query_builder_dialog_cancel: 'Cancel',
|
|
45799
|
+
igx_query_builder_dialog_confirm: 'Confirm',
|
|
45768
45800
|
};
|
|
45769
45801
|
|
|
45802
|
+
class IgxQueryBuilderHeaderComponent {
|
|
45803
|
+
constructor() {
|
|
45804
|
+
this._resourceStrings = getCurrentResourceStrings(QueryBuilderResourceStringsEN);
|
|
45805
|
+
}
|
|
45806
|
+
/**
|
|
45807
|
+
* Sets the resource strings.
|
|
45808
|
+
* By default it uses EN resources.
|
|
45809
|
+
*/
|
|
45810
|
+
set resourceStrings(value) {
|
|
45811
|
+
this._resourceStrings = Object.assign({}, this._resourceStrings, value);
|
|
45812
|
+
}
|
|
45813
|
+
/**
|
|
45814
|
+
* Returns the resource strings.
|
|
45815
|
+
*/
|
|
45816
|
+
get resourceStrings() {
|
|
45817
|
+
return this._resourceStrings;
|
|
45818
|
+
}
|
|
45819
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45820
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxQueryBuilderHeaderComponent, isStandalone: true, selector: "igx-query-builder-header", inputs: { title: "title", resourceStrings: "resourceStrings" }, ngImport: i0, template: "<div class=\"igx-query-builder__header\">\n <div class=\"igx-query-builder__title\">\n {{ title || this.resourceStrings.igx_query_builder_title }}\n <ng-content></ng-content>\n </div>\n</div>\n" }); }
|
|
45821
|
+
}
|
|
45822
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderHeaderComponent, decorators: [{
|
|
45823
|
+
type: Component,
|
|
45824
|
+
args: [{ selector: 'igx-query-builder-header', imports: [NgIf], template: "<div class=\"igx-query-builder__header\">\n <div class=\"igx-query-builder__title\">\n {{ title || this.resourceStrings.igx_query_builder_title }}\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
45825
|
+
}], propDecorators: { title: [{
|
|
45826
|
+
type: Input
|
|
45827
|
+
}], resourceStrings: [{
|
|
45828
|
+
type: Input
|
|
45829
|
+
}] } });
|
|
45830
|
+
|
|
45770
45831
|
class IgxSelectItemComponent extends IgxDropDownItemComponent {
|
|
45771
45832
|
/**
|
|
45772
45833
|
* Gets/Sets the item's text to be displayed in the select component's input when the item is selected.
|
|
@@ -46581,14 +46642,14 @@ class IgxSelectComponent extends IgxDropDownComponent {
|
|
|
46581
46642
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxSelectComponent, isStandalone: true, selector: "igx-select", inputs: { placeholder: "placeholder", disabled: ["disabled", "disabled", booleanAttribute], overlaySettings: "overlaySettings", value: "value", type: "type" }, outputs: { opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, host: { properties: { "style.maxHeight": "this.maxHeight" } }, providers: [
|
|
46582
46643
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSelectComponent, multi: true },
|
|
46583
46644
|
{ provide: IGX_DROPDOWN_BASE, useExisting: IgxSelectComponent }
|
|
46584
|
-
], queries: [{ propertyName: "label", first: true, predicate: i0.forwardRef(() => IgxLabelDirective), descendants: true, static: true }, { propertyName: "toggleIconTemplate", first: true, predicate: IgxSelectToggleIconDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTemplate", first: true, predicate: IgxSelectHeaderDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: IgxSelectFooterDirective, descendants: true, read: TemplateRef }, { propertyName: "hintElement", first: true, predicate: IgxHintDirective, descendants: true, read: ElementRef }, { propertyName: "children", predicate: i0.forwardRef(() => IgxSelectItemComponent), descendants: true }, { propertyName: "prefixes", predicate: IgxPrefixDirective, descendants: true }, { propertyName: "suffixes", predicate: IgxSuffixDirective, descendants: true }], viewQueries: [{ propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: IgxInputGroupComponent, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup class=\"input-group\" (click)=\"inputGroupClick($event)\" [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,[igxPrefix]\"></ng-content>\n </ng-container>\n <input #input class=\"input\" type=\"text\" igxInput [igxSelectItemNavigation]=\"this\"\n [disabled]=\"disabled\"\n readonly=\"true\"\n [attr.placeholder]=\"this.placeholder\"\n [value]=\"this.selectionValue\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"this.label?.id\"\n [attr.aria-expanded]=\"!this.collapsed\"\n [attr.aria-owns]=\"this.listId\"\n [attr.aria-activedescendant]=\"!this.collapsed ? this.focusedItem?.id : null\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <igx-suffix class=\"igx-select__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\" family=\"default\" [name]=\"toggleIcon\"
|
|
46645
|
+
], queries: [{ propertyName: "label", first: true, predicate: i0.forwardRef(() => IgxLabelDirective), descendants: true, static: true }, { propertyName: "toggleIconTemplate", first: true, predicate: IgxSelectToggleIconDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTemplate", first: true, predicate: IgxSelectHeaderDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: IgxSelectFooterDirective, descendants: true, read: TemplateRef }, { propertyName: "hintElement", first: true, predicate: IgxHintDirective, descendants: true, read: ElementRef }, { propertyName: "children", predicate: i0.forwardRef(() => IgxSelectItemComponent), descendants: true }, { propertyName: "prefixes", predicate: IgxPrefixDirective, descendants: true }, { propertyName: "suffixes", predicate: IgxSuffixDirective, descendants: true }], viewQueries: [{ propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: IgxInputGroupComponent, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup class=\"input-group\" (click)=\"inputGroupClick($event)\" [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,[igxPrefix]\"></ng-content>\n </ng-container>\n <input #input class=\"input\" type=\"text\" igxInput [igxSelectItemNavigation]=\"this\"\n [disabled]=\"disabled\"\n readonly=\"true\"\n [attr.placeholder]=\"this.placeholder\"\n [value]=\"this.selectionValue\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"this.label?.id\"\n [attr.aria-expanded]=\"!this.collapsed\"\n [attr.aria-owns]=\"this.listId\"\n [attr.aria-activedescendant]=\"!this.collapsed ? this.focusedItem?.id : null\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <igx-suffix class=\"igx-select__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\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\" >\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n<div igxToggle class=\"igx-drop-down__list\" (mousedown)=\"mousedownHandler($event);\"\n (appended)=\"onToggleContentAppended($event)\"\n (opening)=\"handleOpening($event)\"\n (opened)=\"handleOpened()\"\n (closing)=\"handleClosing($event)\"\n (closed)=\"handleClosed()\">\n\n <div *ngIf=\"headerTemplate\" class=\"igx-drop-down__select-header\">\n <ng-content *ngTemplateOutlet=\"headerTemplate\"></ng-content>\n </div>\n\n <!-- #7436 LMB scrolling closes items container - unselectable attribute is IE specific -->\n <div #scrollContainer class=\"igx-drop-down__list-scroll\" unselectable=\"on\" [style.maxHeight]=\"maxHeight\"\n [attr.id]=\"this.listId\" role=\"listbox\" [attr.aria-labelledby]=\"this.label?.id\">\n <ng-content select=\"igx-select-item, igx-select-item-group\"></ng-content>\n </div>\n\n <div *ngIf=\"footerTemplate\" class=\"igx-drop-down__select-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ 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: "directive", type: IgxSelectItemNavigationDirective, selector: "[igxSelectItemNavigation]", inputs: ["igxSelectItemNavigation"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }] }); }
|
|
46585
46646
|
}
|
|
46586
46647
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxSelectComponent, decorators: [{
|
|
46587
46648
|
type: Component,
|
|
46588
46649
|
args: [{ selector: 'igx-select', providers: [
|
|
46589
46650
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSelectComponent, multi: true },
|
|
46590
46651
|
{ provide: IGX_DROPDOWN_BASE, useExisting: IgxSelectComponent }
|
|
46591
|
-
], imports: [IgxInputGroupComponent, IgxInputDirective, IgxSelectItemNavigationDirective, IgxSuffixDirective, NgIf, NgTemplateOutlet, IgxIconComponent, IgxToggleDirective], template: "<igx-input-group #inputGroup class=\"input-group\" (click)=\"inputGroupClick($event)\" [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,[igxPrefix]\"></ng-content>\n </ng-container>\n <input #input class=\"input\" type=\"text\" igxInput [igxSelectItemNavigation]=\"this\"\n [disabled]=\"disabled\"\n readonly=\"true\"\n [attr.placeholder]=\"this.placeholder\"\n [value]=\"this.selectionValue\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"this.label?.id\"\n [attr.aria-expanded]=\"!this.collapsed\"\n [attr.aria-owns]=\"this.listId\"\n [attr.aria-activedescendant]=\"!this.collapsed ? this.focusedItem?.id : null\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <igx-suffix class=\"igx-select__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\" family=\"default\" [name]=\"toggleIcon\"
|
|
46652
|
+
], imports: [IgxInputGroupComponent, IgxInputDirective, IgxSelectItemNavigationDirective, IgxSuffixDirective, NgIf, NgTemplateOutlet, IgxIconComponent, IgxToggleDirective], template: "<igx-input-group #inputGroup class=\"input-group\" (click)=\"inputGroupClick($event)\" [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,[igxPrefix]\"></ng-content>\n </ng-container>\n <input #input class=\"input\" type=\"text\" igxInput [igxSelectItemNavigation]=\"this\"\n [disabled]=\"disabled\"\n readonly=\"true\"\n [attr.placeholder]=\"this.placeholder\"\n [value]=\"this.selectionValue\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"this.label?.id\"\n [attr.aria-expanded]=\"!this.collapsed\"\n [attr.aria-owns]=\"this.listId\"\n [attr.aria-activedescendant]=\"!this.collapsed ? this.focusedItem?.id : null\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <igx-suffix class=\"igx-select__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\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\" >\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n</igx-input-group>\n<div igxToggle class=\"igx-drop-down__list\" (mousedown)=\"mousedownHandler($event);\"\n (appended)=\"onToggleContentAppended($event)\"\n (opening)=\"handleOpening($event)\"\n (opened)=\"handleOpened()\"\n (closing)=\"handleClosing($event)\"\n (closed)=\"handleClosed()\">\n\n <div *ngIf=\"headerTemplate\" class=\"igx-drop-down__select-header\">\n <ng-content *ngTemplateOutlet=\"headerTemplate\"></ng-content>\n </div>\n\n <!-- #7436 LMB scrolling closes items container - unselectable attribute is IE specific -->\n <div #scrollContainer class=\"igx-drop-down__list-scroll\" unselectable=\"on\" [style.maxHeight]=\"maxHeight\"\n [attr.id]=\"this.listId\" role=\"listbox\" [attr.aria-labelledby]=\"this.label?.id\">\n <ng-content select=\"igx-select-item, igx-select-item-group\"></ng-content>\n </div>\n\n <div *ngIf=\"footerTemplate\" class=\"igx-drop-down__select-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
46592
46653
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
46593
46654
|
type: Inject,
|
|
46594
46655
|
args: [DOCUMENT]
|
|
@@ -48323,53 +48384,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
48323
48384
|
args: ['keydown', ['$event']]
|
|
48324
48385
|
}] } });
|
|
48325
48386
|
|
|
48326
|
-
class IgxQueryBuilderHeaderComponent {
|
|
48327
|
-
constructor() {
|
|
48328
|
-
this._resourceStrings = getCurrentResourceStrings(QueryBuilderResourceStringsEN);
|
|
48329
|
-
/**
|
|
48330
|
-
* Show/hide the legend.
|
|
48331
|
-
*
|
|
48332
|
-
* @example
|
|
48333
|
-
* ```html
|
|
48334
|
-
* <igx-query-builder-header [showLegend]="false"></igx-query-builder-header>
|
|
48335
|
-
* ```
|
|
48336
|
-
*/
|
|
48337
|
-
this.showLegend = true;
|
|
48338
|
-
}
|
|
48339
|
-
/**
|
|
48340
|
-
* Sets the resource strings.
|
|
48341
|
-
* By default it uses EN resources.
|
|
48342
|
-
*/
|
|
48343
|
-
set resourceStrings(value) {
|
|
48344
|
-
this._resourceStrings = Object.assign({}, this._resourceStrings, value);
|
|
48345
|
-
}
|
|
48346
|
-
/**
|
|
48347
|
-
* Returns the resource strings.
|
|
48348
|
-
*/
|
|
48349
|
-
get resourceStrings() {
|
|
48350
|
-
return this._resourceStrings;
|
|
48351
|
-
}
|
|
48352
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48353
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxQueryBuilderHeaderComponent, isStandalone: true, selector: "igx-query-builder-header", inputs: { title: "title", showLegend: ["showLegend", "showLegend", booleanAttribute], resourceStrings: "resourceStrings" }, ngImport: i0, template: "<div class=\"igx-query-builder__header\">\n <div class=\"ig-typography__h6\" style=\"pointer-events: none;\">\n {{ title || this.resourceStrings.igx_query_builder_title }}\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showLegend\" class=\"igx-builder-legend\" >\n <div class=\"igx-builder-legend__item--and\">\n <span>{{this.resourceStrings.igx_query_builder_and_label}}</span>\n </div>\n <div class=\"igx-builder-legend__item--or\">\n <span>{{this.resourceStrings.igx_query_builder_or_label}}</span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
48354
|
-
}
|
|
48355
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderHeaderComponent, decorators: [{
|
|
48356
|
-
type: Component,
|
|
48357
|
-
args: [{ selector: 'igx-query-builder-header', imports: [NgIf], template: "<div class=\"igx-query-builder__header\">\n <div class=\"ig-typography__h6\" style=\"pointer-events: none;\">\n {{ title || this.resourceStrings.igx_query_builder_title }}\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showLegend\" class=\"igx-builder-legend\" >\n <div class=\"igx-builder-legend__item--and\">\n <span>{{this.resourceStrings.igx_query_builder_and_label}}</span>\n </div>\n <div class=\"igx-builder-legend__item--or\">\n <span>{{this.resourceStrings.igx_query_builder_or_label}}</span>\n </div>\n </div>\n</div>\n" }]
|
|
48358
|
-
}], propDecorators: { title: [{
|
|
48359
|
-
type: Input
|
|
48360
|
-
}], showLegend: [{
|
|
48361
|
-
type: Input,
|
|
48362
|
-
args: [{ transform: booleanAttribute }]
|
|
48363
|
-
}], resourceStrings: [{
|
|
48364
|
-
type: Input
|
|
48365
|
-
}] } });
|
|
48366
|
-
|
|
48367
48387
|
const DEFAULT_PIPE_DATE_FORMAT = 'mediumDate';
|
|
48368
48388
|
const DEFAULT_PIPE_TIME_FORMAT = 'mediumTime';
|
|
48369
48389
|
const DEFAULT_PIPE_DATE_TIME_FORMAT = 'medium';
|
|
48370
48390
|
const DEFAULT_PIPE_DIGITS_INFO = '1.0-3';
|
|
48371
|
-
const
|
|
48372
|
-
const DEFAULT_TIME_FORMAT = 'hh:mm:ss a';
|
|
48391
|
+
const DEFAULT_CHIP_FOCUS_DELAY = 50;
|
|
48373
48392
|
class IgxFieldFormatterPipe {
|
|
48374
48393
|
transform(value, formatter, rowData, fieldData) {
|
|
48375
48394
|
return formatter(value, rowData, fieldData);
|
|
@@ -48417,22 +48436,33 @@ class ExpressionOperandItem extends ExpressionItem {
|
|
|
48417
48436
|
this.expression = expression;
|
|
48418
48437
|
}
|
|
48419
48438
|
}
|
|
48420
|
-
/**
|
|
48421
|
-
|
|
48422
|
-
|
|
48423
|
-
|
|
48424
|
-
|
|
48425
|
-
|
|
48426
|
-
|
|
48427
|
-
|
|
48428
|
-
|
|
48429
|
-
|
|
48430
|
-
|
|
48431
|
-
|
|
48439
|
+
/** @hidden */
|
|
48440
|
+
class IgxQueryBuilderTreeComponent {
|
|
48441
|
+
/**
|
|
48442
|
+
* @hidden @internal
|
|
48443
|
+
*/
|
|
48444
|
+
get getClass() {
|
|
48445
|
+
return `igx-query-builder-tree--level-${this.level}`;
|
|
48446
|
+
}
|
|
48447
|
+
/**
|
|
48448
|
+
* Returns the parent expression operand.
|
|
48449
|
+
*/
|
|
48450
|
+
get parentExpression() {
|
|
48451
|
+
return this._parentExpression;
|
|
48452
|
+
}
|
|
48453
|
+
/**
|
|
48454
|
+
* Sets the parent expression operand.
|
|
48455
|
+
*/
|
|
48456
|
+
set parentExpression(value) {
|
|
48457
|
+
this._parentExpression = value;
|
|
48458
|
+
}
|
|
48432
48459
|
/**
|
|
48433
48460
|
* Returns the fields.
|
|
48434
48461
|
*/
|
|
48435
48462
|
get fields() {
|
|
48463
|
+
if (!this._fields && this.isAdvancedFiltering()) {
|
|
48464
|
+
this._fields = this.entities[0].fields;
|
|
48465
|
+
}
|
|
48436
48466
|
return this._fields;
|
|
48437
48467
|
}
|
|
48438
48468
|
/**
|
|
@@ -48440,8 +48470,10 @@ class IgxQueryBuilderComponent {
|
|
|
48440
48470
|
*/
|
|
48441
48471
|
set fields(fields) {
|
|
48442
48472
|
this._fields = fields;
|
|
48473
|
+
if (!this._fields && this.isAdvancedFiltering()) {
|
|
48474
|
+
this._fields = this.entities[0].fields;
|
|
48475
|
+
}
|
|
48443
48476
|
if (this._fields) {
|
|
48444
|
-
this.registerSVGIcons();
|
|
48445
48477
|
this._fields.forEach(field => {
|
|
48446
48478
|
this.setFilters(field);
|
|
48447
48479
|
this.setFormat(field);
|
|
@@ -48459,7 +48491,13 @@ class IgxQueryBuilderComponent {
|
|
|
48459
48491
|
*/
|
|
48460
48492
|
set expressionTree(expressionTree) {
|
|
48461
48493
|
this._expressionTree = expressionTree;
|
|
48462
|
-
|
|
48494
|
+
if (!expressionTree) {
|
|
48495
|
+
this._selectedEntity = null;
|
|
48496
|
+
this._selectedReturnFields = [];
|
|
48497
|
+
}
|
|
48498
|
+
if (!this._preventInit) {
|
|
48499
|
+
this.init();
|
|
48500
|
+
}
|
|
48463
48501
|
}
|
|
48464
48502
|
/**
|
|
48465
48503
|
* Gets the `locale` of the query builder.
|
|
@@ -48478,7 +48516,7 @@ class IgxQueryBuilderComponent {
|
|
|
48478
48516
|
try {
|
|
48479
48517
|
getLocaleFirstDayOfWeek(this._locale);
|
|
48480
48518
|
}
|
|
48481
|
-
catch
|
|
48519
|
+
catch {
|
|
48482
48520
|
this._locale = this._localeId;
|
|
48483
48521
|
}
|
|
48484
48522
|
}
|
|
@@ -48508,19 +48546,6 @@ class IgxQueryBuilderComponent {
|
|
|
48508
48546
|
get editingInputsContainer() {
|
|
48509
48547
|
return this._editingInputsContainer;
|
|
48510
48548
|
}
|
|
48511
|
-
set addModeContainer(value) {
|
|
48512
|
-
if ((value && !this._addModeContainer) ||
|
|
48513
|
-
(value && this._addModeContainer && this._addModeContainer.nativeElement !== value.nativeElement)) {
|
|
48514
|
-
requestAnimationFrame(() => {
|
|
48515
|
-
this.scrollElementIntoView(value.nativeElement);
|
|
48516
|
-
});
|
|
48517
|
-
}
|
|
48518
|
-
this._addModeContainer = value;
|
|
48519
|
-
}
|
|
48520
|
-
/** @hidden */
|
|
48521
|
-
get addModeContainer() {
|
|
48522
|
-
return this._addModeContainer;
|
|
48523
|
-
}
|
|
48524
48549
|
set currentGroupButtonsContainer(value) {
|
|
48525
48550
|
if ((value && !this._currentGroupButtonsContainer) ||
|
|
48526
48551
|
(value && this._currentGroupButtonsContainer && this._currentGroupButtonsContainer.nativeElement !== value.nativeElement)) {
|
|
@@ -48534,39 +48559,88 @@ class IgxQueryBuilderComponent {
|
|
|
48534
48559
|
get currentGroupButtonsContainer() {
|
|
48535
48560
|
return this._currentGroupButtonsContainer;
|
|
48536
48561
|
}
|
|
48537
|
-
|
|
48562
|
+
/**
|
|
48563
|
+
* Disables the select entity dropdown at the root level after the initial selection.
|
|
48564
|
+
*/
|
|
48565
|
+
get disableEntityChange() {
|
|
48566
|
+
return !this.parentExpression && this.selectedEntity ? this.queryBuilder.disableEntityChange : false;
|
|
48567
|
+
}
|
|
48568
|
+
get level() {
|
|
48569
|
+
let parent = this.elRef.nativeElement.parentElement;
|
|
48570
|
+
let _level = 0;
|
|
48571
|
+
while (parent) {
|
|
48572
|
+
if (parent.localName === 'igx-query-builder-tree') {
|
|
48573
|
+
_level++;
|
|
48574
|
+
}
|
|
48575
|
+
parent = parent.parentElement;
|
|
48576
|
+
}
|
|
48577
|
+
return _level;
|
|
48578
|
+
}
|
|
48579
|
+
/** @hidden */
|
|
48580
|
+
isAdvancedFiltering() {
|
|
48581
|
+
return this.entities?.length === 1 && !this.entities[0]?.name;
|
|
48582
|
+
}
|
|
48583
|
+
/** @hidden */
|
|
48584
|
+
isSearchValueInputDisabled() {
|
|
48585
|
+
return !this.selectedField ||
|
|
48586
|
+
!this.selectedCondition ||
|
|
48587
|
+
(this.selectedField &&
|
|
48588
|
+
(this.selectedField.filters.condition(this.selectedCondition).isUnary ||
|
|
48589
|
+
this.selectedField.filters.condition(this.selectedCondition).isNestedQuery));
|
|
48590
|
+
}
|
|
48591
|
+
constructor(cdr, platform, el, elRef, _localeId) {
|
|
48538
48592
|
this.cdr = cdr;
|
|
48539
|
-
this.iconService = iconService;
|
|
48540
48593
|
this.platform = platform;
|
|
48541
48594
|
this.el = el;
|
|
48595
|
+
this.elRef = elRef;
|
|
48542
48596
|
this._localeId = _localeId;
|
|
48597
|
+
/**
|
|
48598
|
+
* Sets/gets the search value template.
|
|
48599
|
+
*/
|
|
48600
|
+
this.searchValueTemplate = null;
|
|
48601
|
+
/**
|
|
48602
|
+
* Event fired as the expression tree is changed.
|
|
48603
|
+
*/
|
|
48604
|
+
this.expressionTreeChange = new EventEmitter();
|
|
48605
|
+
/**
|
|
48606
|
+
* Event fired if a nested query builder tree is being edited.
|
|
48607
|
+
*/
|
|
48608
|
+
this.inEditModeChange = new EventEmitter();
|
|
48543
48609
|
/**
|
|
48544
48610
|
* @hidden @internal
|
|
48545
48611
|
*/
|
|
48546
|
-
this.
|
|
48612
|
+
this.selectedExpressions = [];
|
|
48547
48613
|
/**
|
|
48548
48614
|
* @hidden @internal
|
|
48549
48615
|
*/
|
|
48550
|
-
this.
|
|
48616
|
+
this.searchValue = { value: null };
|
|
48551
48617
|
/**
|
|
48552
|
-
*
|
|
48553
|
-
*
|
|
48554
|
-
* ```html
|
|
48555
|
-
* <igx-query-builder (expressionTreeChange)='onExpressionTreeChange()'></igx-query-builder>
|
|
48556
|
-
* ```
|
|
48618
|
+
* @hidden @internal
|
|
48557
48619
|
*/
|
|
48558
|
-
this.
|
|
48620
|
+
this.initialOperator = 0;
|
|
48559
48621
|
/**
|
|
48560
48622
|
* @hidden @internal
|
|
48561
48623
|
*/
|
|
48562
|
-
this.
|
|
48624
|
+
this.returnFieldSelectOverlaySettings = {
|
|
48625
|
+
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
48626
|
+
modal: false,
|
|
48627
|
+
closeOnOutsideClick: true
|
|
48628
|
+
};
|
|
48629
|
+
/**
|
|
48630
|
+
* @hidden @internal
|
|
48631
|
+
*/
|
|
48632
|
+
this.entitySelectOverlaySettings = {
|
|
48633
|
+
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
48634
|
+
modal: false,
|
|
48635
|
+
closeOnOutsideClick: true
|
|
48636
|
+
};
|
|
48563
48637
|
/**
|
|
48564
48638
|
* @hidden @internal
|
|
48565
48639
|
*/
|
|
48566
48640
|
this.fieldSelectOverlaySettings = {
|
|
48567
48641
|
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
48568
48642
|
modal: false,
|
|
48569
|
-
closeOnOutsideClick:
|
|
48643
|
+
closeOnOutsideClick: true
|
|
48570
48644
|
};
|
|
48571
48645
|
/**
|
|
48572
48646
|
* @hidden @internal
|
|
@@ -48574,12 +48648,28 @@ class IgxQueryBuilderComponent {
|
|
|
48574
48648
|
this.conditionSelectOverlaySettings = {
|
|
48575
48649
|
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
48576
48650
|
modal: false,
|
|
48577
|
-
closeOnOutsideClick:
|
|
48651
|
+
closeOnOutsideClick: true
|
|
48652
|
+
};
|
|
48653
|
+
/**
|
|
48654
|
+
* @hidden @internal
|
|
48655
|
+
*/
|
|
48656
|
+
this.addExpressionDropDownOverlaySettings = {
|
|
48657
|
+
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
48658
|
+
modal: false,
|
|
48659
|
+
closeOnOutsideClick: true
|
|
48660
|
+
};
|
|
48661
|
+
/**
|
|
48662
|
+
* @hidden @internal
|
|
48663
|
+
*/
|
|
48664
|
+
this.groupContextMenuDropDownOverlaySettings = {
|
|
48665
|
+
scrollStrategy: new AbsoluteScrollStrategy(),
|
|
48666
|
+
modal: false,
|
|
48667
|
+
closeOnOutsideClick: true
|
|
48578
48668
|
};
|
|
48579
48669
|
this.destroy$ = new Subject();
|
|
48580
|
-
this.
|
|
48581
|
-
this.
|
|
48582
|
-
this.
|
|
48670
|
+
this._focusDelay = DEFAULT_CHIP_FOCUS_DELAY;
|
|
48671
|
+
this._preventInit = false;
|
|
48672
|
+
this._expandedExpressions = [];
|
|
48583
48673
|
this._resourceStrings = getCurrentResourceStrings(QueryBuilderResourceStringsEN);
|
|
48584
48674
|
this._positionSettings = {
|
|
48585
48675
|
horizontalStartPoint: HorizontalAlignment.Right,
|
|
@@ -48591,6 +48681,9 @@ class IgxQueryBuilderComponent {
|
|
|
48591
48681
|
positionStrategy: new ConnectedPositioningStrategy(this._positionSettings),
|
|
48592
48682
|
scrollStrategy: new CloseScrollStrategy()
|
|
48593
48683
|
};
|
|
48684
|
+
this.keyDragOffsetIndex = 0;
|
|
48685
|
+
this.keyDragFirstMove = true;
|
|
48686
|
+
this.dropGhostClass = 'igx-filter-tree__expression-item-drop-ghost';
|
|
48594
48687
|
this.locale = this.locale || this._localeId;
|
|
48595
48688
|
}
|
|
48596
48689
|
/**
|
|
@@ -48598,8 +48691,14 @@ class IgxQueryBuilderComponent {
|
|
|
48598
48691
|
*/
|
|
48599
48692
|
ngAfterViewInit() {
|
|
48600
48693
|
this._overlaySettings.outlet = this.overlayOutlet;
|
|
48694
|
+
this.entitySelectOverlaySettings.outlet = this.overlayOutlet;
|
|
48601
48695
|
this.fieldSelectOverlaySettings.outlet = this.overlayOutlet;
|
|
48602
48696
|
this.conditionSelectOverlaySettings.outlet = this.overlayOutlet;
|
|
48697
|
+
this.returnFieldSelectOverlaySettings.outlet = this.overlayOutlet;
|
|
48698
|
+
this.addExpressionDropDownOverlaySettings.outlet = this.overlayOutlet;
|
|
48699
|
+
this.groupContextMenuDropDownOverlaySettings.outlet = this.overlayOutlet;
|
|
48700
|
+
// Trigger additional change detection cycle
|
|
48701
|
+
this.cdr.detectChanges();
|
|
48603
48702
|
}
|
|
48604
48703
|
/**
|
|
48605
48704
|
* @hidden @internal
|
|
@@ -48608,6 +48707,99 @@ class IgxQueryBuilderComponent {
|
|
|
48608
48707
|
this.destroy$.next(true);
|
|
48609
48708
|
this.destroy$.complete();
|
|
48610
48709
|
}
|
|
48710
|
+
/**
|
|
48711
|
+
* @hidden @internal
|
|
48712
|
+
*/
|
|
48713
|
+
set selectedEntity(value) {
|
|
48714
|
+
this._selectedEntity = this.entities?.find(el => el.name === value);
|
|
48715
|
+
}
|
|
48716
|
+
/**
|
|
48717
|
+
* @hidden @internal
|
|
48718
|
+
*/
|
|
48719
|
+
get selectedEntity() {
|
|
48720
|
+
return this._selectedEntity;
|
|
48721
|
+
}
|
|
48722
|
+
/**
|
|
48723
|
+
* @hidden @internal
|
|
48724
|
+
*/
|
|
48725
|
+
onEntitySelectChanging(event) {
|
|
48726
|
+
event.cancel = true;
|
|
48727
|
+
this._entityNewValue = event.newSelection.value;
|
|
48728
|
+
if (event.oldSelection.value && this.queryBuilder.showEntityChangeDialog) {
|
|
48729
|
+
this.entityChangeDialog.open();
|
|
48730
|
+
}
|
|
48731
|
+
else {
|
|
48732
|
+
this.onEntityChangeConfirm();
|
|
48733
|
+
}
|
|
48734
|
+
}
|
|
48735
|
+
/**
|
|
48736
|
+
* @hidden
|
|
48737
|
+
*/
|
|
48738
|
+
onShowEntityChangeDialogChange(eventArgs) {
|
|
48739
|
+
this.queryBuilder.showEntityChangeDialog = !eventArgs.checked;
|
|
48740
|
+
}
|
|
48741
|
+
/**
|
|
48742
|
+
* @hidden
|
|
48743
|
+
*/
|
|
48744
|
+
onEntityChangeCancel() {
|
|
48745
|
+
this.entityChangeDialog.close();
|
|
48746
|
+
this.entitySelect.close();
|
|
48747
|
+
this._entityNewValue = null;
|
|
48748
|
+
}
|
|
48749
|
+
/**
|
|
48750
|
+
* @hidden
|
|
48751
|
+
*/
|
|
48752
|
+
onEntityChangeConfirm() {
|
|
48753
|
+
if (this._parentExpression) {
|
|
48754
|
+
this._expressionTree = this.createExpressionTreeFromGroupItem(this.createExpressionGroupItem(this._expressionTree));
|
|
48755
|
+
}
|
|
48756
|
+
this._selectedEntity = this._entityNewValue;
|
|
48757
|
+
if (!this._selectedEntity.fields) {
|
|
48758
|
+
this._selectedEntity.fields = [];
|
|
48759
|
+
}
|
|
48760
|
+
this.fields = this._entityNewValue ? this._entityNewValue.fields : [];
|
|
48761
|
+
this._selectedReturnFields = this.parentExpression ? [] : this._entityNewValue.fields?.map(f => f.field);
|
|
48762
|
+
if (this._expressionTree) {
|
|
48763
|
+
this._expressionTree.entity = this._entityNewValue.name;
|
|
48764
|
+
this._expressionTree.returnFields = [];
|
|
48765
|
+
this._expressionTree.filteringOperands = [];
|
|
48766
|
+
this._editedExpression = null;
|
|
48767
|
+
if (!this.parentExpression) {
|
|
48768
|
+
this.expressionTreeChange.emit(this._expressionTree);
|
|
48769
|
+
}
|
|
48770
|
+
this.rootGroup = null;
|
|
48771
|
+
this.currentGroup = this.rootGroup;
|
|
48772
|
+
}
|
|
48773
|
+
this._selectedField = null;
|
|
48774
|
+
this.selectedCondition = null;
|
|
48775
|
+
this.searchValue.value = null;
|
|
48776
|
+
this.entityChangeDialog.close();
|
|
48777
|
+
this.entitySelect.close();
|
|
48778
|
+
this._entityNewValue = null;
|
|
48779
|
+
this.innerQueryNewExpressionTree = null;
|
|
48780
|
+
this.initExpressionTree(this._selectedEntity.name, this.selectedReturnFields);
|
|
48781
|
+
}
|
|
48782
|
+
/**
|
|
48783
|
+
* @hidden @internal
|
|
48784
|
+
*/
|
|
48785
|
+
set selectedReturnFields(value) {
|
|
48786
|
+
if (this._selectedReturnFields !== value) {
|
|
48787
|
+
this._selectedReturnFields = value;
|
|
48788
|
+
if (this._expressionTree && !this.parentExpression) {
|
|
48789
|
+
this._expressionTree.returnFields = value;
|
|
48790
|
+
this.expressionTreeChange.emit(this._expressionTree);
|
|
48791
|
+
}
|
|
48792
|
+
}
|
|
48793
|
+
}
|
|
48794
|
+
/**
|
|
48795
|
+
* @hidden @internal
|
|
48796
|
+
*/
|
|
48797
|
+
get selectedReturnFields() {
|
|
48798
|
+
if (typeof this._selectedReturnFields == 'string') {
|
|
48799
|
+
return [this._selectedReturnFields];
|
|
48800
|
+
}
|
|
48801
|
+
return this._selectedReturnFields;
|
|
48802
|
+
}
|
|
48611
48803
|
/**
|
|
48612
48804
|
* @hidden @internal
|
|
48613
48805
|
*/
|
|
@@ -48617,7 +48809,7 @@ class IgxQueryBuilderComponent {
|
|
|
48617
48809
|
this._selectedField = value;
|
|
48618
48810
|
if (oldValue && this._selectedField && this._selectedField.dataType !== oldValue.dataType) {
|
|
48619
48811
|
this.selectedCondition = null;
|
|
48620
|
-
this.searchValue = null;
|
|
48812
|
+
this.searchValue.value = null;
|
|
48621
48813
|
this.cdr.detectChanges();
|
|
48622
48814
|
}
|
|
48623
48815
|
}
|
|
@@ -48642,7 +48834,7 @@ class IgxQueryBuilderComponent {
|
|
|
48642
48834
|
* used by the grid
|
|
48643
48835
|
*/
|
|
48644
48836
|
get isContextMenuVisible() {
|
|
48645
|
-
return !this.
|
|
48837
|
+
return !this.groupContextMenuDropDown.collapsed;
|
|
48646
48838
|
}
|
|
48647
48839
|
/**
|
|
48648
48840
|
* @hidden @internal
|
|
@@ -48653,59 +48845,111 @@ class IgxQueryBuilderComponent {
|
|
|
48653
48845
|
/**
|
|
48654
48846
|
* @hidden @internal
|
|
48655
48847
|
*/
|
|
48656
|
-
addCondition(parent, afterExpression) {
|
|
48848
|
+
addCondition(parent, afterExpression, isUIInteraction) {
|
|
48657
48849
|
this.cancelOperandAdd();
|
|
48658
48850
|
const operandItem = new ExpressionOperandItem({
|
|
48659
48851
|
fieldName: null,
|
|
48660
48852
|
condition: null,
|
|
48853
|
+
conditionName: null,
|
|
48661
48854
|
ignoreCase: true,
|
|
48662
48855
|
searchVal: null
|
|
48663
48856
|
}, parent);
|
|
48664
|
-
|
|
48665
|
-
|
|
48666
|
-
|
|
48857
|
+
const groupItem = new ExpressionGroupItem(this.getOperator(null) ?? FilteringLogic.And, parent);
|
|
48858
|
+
this.contextualGroup = groupItem;
|
|
48859
|
+
this.initialOperator = null;
|
|
48860
|
+
this._lastFocusedChipIndex = this._lastFocusedChipIndex == undefined ? -1 : this._lastFocusedChipIndex;
|
|
48861
|
+
if (parent) {
|
|
48862
|
+
if (afterExpression) {
|
|
48863
|
+
const index = parent.children.indexOf(afterExpression);
|
|
48864
|
+
parent.children.splice(index + 1, 0, operandItem);
|
|
48865
|
+
}
|
|
48866
|
+
else {
|
|
48867
|
+
parent.children.push(operandItem);
|
|
48868
|
+
}
|
|
48869
|
+
this._lastFocusedChipIndex++;
|
|
48667
48870
|
}
|
|
48668
48871
|
else {
|
|
48669
|
-
|
|
48872
|
+
this.rootGroup = groupItem;
|
|
48873
|
+
operandItem.parent = groupItem;
|
|
48874
|
+
this.rootGroup.children.push(operandItem);
|
|
48875
|
+
this._lastFocusedChipIndex = 0;
|
|
48876
|
+
}
|
|
48877
|
+
this._focusDelay = 250;
|
|
48878
|
+
if (isUIInteraction && !afterExpression) {
|
|
48879
|
+
this._lastFocusedChipIndex = this.expressionsChips.length;
|
|
48880
|
+
this._focusDelay = DEFAULT_CHIP_FOCUS_DELAY;
|
|
48670
48881
|
}
|
|
48671
48882
|
this.enterExpressionEdit(operandItem);
|
|
48672
48883
|
}
|
|
48673
48884
|
/**
|
|
48674
48885
|
* @hidden @internal
|
|
48675
48886
|
*/
|
|
48676
|
-
|
|
48677
|
-
|
|
48887
|
+
addReverseGroup(parent, afterExpression) {
|
|
48888
|
+
parent = parent ?? this.rootGroup;
|
|
48889
|
+
if (parent.operator === FilteringLogic.And) {
|
|
48890
|
+
this.addGroup(FilteringLogic.Or, parent, afterExpression);
|
|
48891
|
+
}
|
|
48892
|
+
else {
|
|
48893
|
+
this.addGroup(FilteringLogic.And, parent, afterExpression);
|
|
48894
|
+
}
|
|
48678
48895
|
}
|
|
48679
48896
|
/**
|
|
48680
48897
|
* @hidden @internal
|
|
48681
48898
|
*/
|
|
48682
|
-
|
|
48683
|
-
this.
|
|
48899
|
+
endGroup(groupItem) {
|
|
48900
|
+
this.currentGroup = groupItem.parent;
|
|
48684
48901
|
}
|
|
48685
48902
|
/**
|
|
48686
48903
|
* @hidden @internal
|
|
48687
48904
|
*/
|
|
48688
|
-
|
|
48689
|
-
this.
|
|
48905
|
+
commitExpression() {
|
|
48906
|
+
this.commitOperandEdit();
|
|
48907
|
+
this.focusEditedExpressionChip();
|
|
48908
|
+
}
|
|
48909
|
+
/**
|
|
48910
|
+
* @hidden @internal
|
|
48911
|
+
*/
|
|
48912
|
+
discardExpression(expressionItem) {
|
|
48913
|
+
this.cancelOperandEdit();
|
|
48914
|
+
if (expressionItem && expressionItem.expression.fieldName) {
|
|
48915
|
+
this.focusEditedExpressionChip();
|
|
48916
|
+
}
|
|
48690
48917
|
}
|
|
48691
48918
|
/**
|
|
48692
48919
|
* @hidden @internal
|
|
48693
48920
|
*/
|
|
48694
48921
|
commitOperandEdit() {
|
|
48922
|
+
const actualSearchValue = this.searchValue.value;
|
|
48695
48923
|
if (this._editedExpression) {
|
|
48696
48924
|
this._editedExpression.expression.fieldName = this.selectedField.field;
|
|
48697
48925
|
this._editedExpression.expression.condition = this.selectedField.filters.condition(this.selectedCondition);
|
|
48698
|
-
this._editedExpression.expression.
|
|
48926
|
+
this._editedExpression.expression.conditionName = this.selectedCondition;
|
|
48927
|
+
this._editedExpression.expression.searchVal = DataUtil.parseValue(this.selectedField.dataType, actualSearchValue) || actualSearchValue;
|
|
48699
48928
|
this._editedExpression.fieldLabel = this.selectedField.label
|
|
48700
48929
|
? this.selectedField.label
|
|
48701
48930
|
: this.selectedField.header
|
|
48702
48931
|
? this.selectedField.header
|
|
48703
48932
|
: this.selectedField.field;
|
|
48933
|
+
const innerQuery = this.innerQueries.filter(q => q.isInEditMode())[0];
|
|
48934
|
+
if (innerQuery && this.selectedField?.filters?.condition(this.selectedCondition)?.isNestedQuery) {
|
|
48935
|
+
innerQuery.exitEditAddMode();
|
|
48936
|
+
this._editedExpression.expression.searchTree = this.getExpressionTreeCopy(innerQuery.expressionTree);
|
|
48937
|
+
this._editedExpression.expression.searchTree.returnFields = innerQuery.selectedReturnFields;
|
|
48938
|
+
}
|
|
48939
|
+
else {
|
|
48940
|
+
this._editedExpression.expression.searchTree = null;
|
|
48941
|
+
}
|
|
48942
|
+
this.innerQueryNewExpressionTree = null;
|
|
48943
|
+
if (this.selectedField.filters.condition(this.selectedCondition)?.isUnary || this.selectedField.filters.condition(this.selectedCondition)?.isNestedQuery) {
|
|
48944
|
+
this._editedExpression.expression.searchVal = null;
|
|
48945
|
+
}
|
|
48704
48946
|
this._editedExpression.inEditMode = false;
|
|
48705
48947
|
this._editedExpression = null;
|
|
48706
48948
|
}
|
|
48707
|
-
this._expressionTree = this.createExpressionTreeFromGroupItem(this.rootGroup);
|
|
48708
|
-
this.
|
|
48949
|
+
this._expressionTree = this.createExpressionTreeFromGroupItem(this.rootGroup, this.selectedEntity?.name, this.selectedReturnFields);
|
|
48950
|
+
if (!this.parentExpression) {
|
|
48951
|
+
this.expressionTreeChange.emit(this._expressionTree);
|
|
48952
|
+
}
|
|
48709
48953
|
}
|
|
48710
48954
|
/**
|
|
48711
48955
|
* @hidden @internal
|
|
@@ -48720,6 +48964,16 @@ class IgxQueryBuilderComponent {
|
|
|
48720
48964
|
* @hidden @internal
|
|
48721
48965
|
*/
|
|
48722
48966
|
cancelOperandEdit() {
|
|
48967
|
+
if (this.innerQueries) {
|
|
48968
|
+
const innerQuery = this.innerQueries.filter(q => q.isInEditMode())[0];
|
|
48969
|
+
if (innerQuery) {
|
|
48970
|
+
if (innerQuery._editedExpression) {
|
|
48971
|
+
innerQuery.cancelOperandEdit();
|
|
48972
|
+
}
|
|
48973
|
+
innerQuery.expressionTree = this.getExpressionTreeCopy(this._editedExpression.expression.searchTree);
|
|
48974
|
+
this.innerQueryNewExpressionTree = null;
|
|
48975
|
+
}
|
|
48976
|
+
}
|
|
48723
48977
|
if (this._editedExpression) {
|
|
48724
48978
|
this._editedExpression.inEditMode = false;
|
|
48725
48979
|
if (!this._editedExpression.expression.fieldName) {
|
|
@@ -48727,13 +48981,67 @@ class IgxQueryBuilderComponent {
|
|
|
48727
48981
|
}
|
|
48728
48982
|
this._editedExpression = null;
|
|
48729
48983
|
}
|
|
48984
|
+
if (!this.expressionTree && this.contextualGroup) {
|
|
48985
|
+
this.initialOperator = this.contextualGroup.operator;
|
|
48986
|
+
}
|
|
48730
48987
|
}
|
|
48731
48988
|
/**
|
|
48732
48989
|
* @hidden @internal
|
|
48733
48990
|
*/
|
|
48734
48991
|
operandCanBeCommitted() {
|
|
48992
|
+
const innerQuery = this.innerQueries.filter(q => q.isInEditMode())[0];
|
|
48735
48993
|
return this.selectedField && this.selectedCondition &&
|
|
48736
|
-
(
|
|
48994
|
+
((((!Array.isArray(this.searchValue.value) && !!this.searchValue.value) || (Array.isArray(this.searchValue.value) && this.searchValue.value.length !== 0)) &&
|
|
48995
|
+
!(this.selectedField?.filters?.condition(this.selectedCondition)?.isNestedQuery)) ||
|
|
48996
|
+
(this.selectedField?.filters?.condition(this.selectedCondition)?.isNestedQuery && innerQuery && !!innerQuery.expressionTree && innerQuery.selectedReturnFields?.length > 0) ||
|
|
48997
|
+
this.selectedField.filters.condition(this.selectedCondition)?.isUnary);
|
|
48998
|
+
}
|
|
48999
|
+
/**
|
|
49000
|
+
* @hidden @internal
|
|
49001
|
+
*/
|
|
49002
|
+
canCommitCurrentState() {
|
|
49003
|
+
const innerQuery = this.innerQueries.filter(q => q.isInEditMode())[0];
|
|
49004
|
+
if (innerQuery) {
|
|
49005
|
+
return this.selectedReturnFields?.length > 0 && innerQuery.canCommitCurrentState();
|
|
49006
|
+
}
|
|
49007
|
+
else {
|
|
49008
|
+
return this.selectedReturnFields?.length > 0 &&
|
|
49009
|
+
((!this._editedExpression) || // no edited expr
|
|
49010
|
+
(this._editedExpression && !this.selectedField) || // empty edited expr
|
|
49011
|
+
(this._editedExpression && this.operandCanBeCommitted() === true) // valid edited expr
|
|
49012
|
+
);
|
|
49013
|
+
}
|
|
49014
|
+
}
|
|
49015
|
+
/**
|
|
49016
|
+
* @hidden @internal
|
|
49017
|
+
*/
|
|
49018
|
+
commitCurrentState() {
|
|
49019
|
+
const innerQuery = this.innerQueries.filter(q => q.isInEditMode())[0];
|
|
49020
|
+
if (innerQuery) {
|
|
49021
|
+
innerQuery.commitCurrentState();
|
|
49022
|
+
}
|
|
49023
|
+
if (this._editedExpression) {
|
|
49024
|
+
if (this.selectedField) {
|
|
49025
|
+
this.commitOperandEdit();
|
|
49026
|
+
}
|
|
49027
|
+
else {
|
|
49028
|
+
this.deleteItem(this._editedExpression);
|
|
49029
|
+
this._editedExpression = null;
|
|
49030
|
+
}
|
|
49031
|
+
}
|
|
49032
|
+
}
|
|
49033
|
+
/**
|
|
49034
|
+
* @hidden @internal
|
|
49035
|
+
*/
|
|
49036
|
+
exitEditAddMode(shouldPreventInit = false) {
|
|
49037
|
+
if (!this._editedExpression) {
|
|
49038
|
+
return;
|
|
49039
|
+
}
|
|
49040
|
+
this.exitOperandEdit();
|
|
49041
|
+
this.cancelOperandAdd();
|
|
49042
|
+
if (shouldPreventInit) {
|
|
49043
|
+
this._preventInit = true;
|
|
49044
|
+
}
|
|
48737
49045
|
}
|
|
48738
49046
|
/**
|
|
48739
49047
|
* @hidden @internal
|
|
@@ -48757,138 +49065,673 @@ class IgxQueryBuilderComponent {
|
|
|
48757
49065
|
isExpressionGroup(expression) {
|
|
48758
49066
|
return expression instanceof ExpressionGroupItem;
|
|
48759
49067
|
}
|
|
49068
|
+
/**
|
|
49069
|
+
* @hidden @internal
|
|
49070
|
+
*/
|
|
49071
|
+
onExpressionFocus(expressionItem) {
|
|
49072
|
+
if (this.prevFocusedExpression) {
|
|
49073
|
+
this.prevFocusedExpression.focused = false;
|
|
49074
|
+
}
|
|
49075
|
+
expressionItem.focused = true;
|
|
49076
|
+
this.prevFocusedExpression = expressionItem;
|
|
49077
|
+
}
|
|
49078
|
+
/**
|
|
49079
|
+
* @hidden @internal
|
|
49080
|
+
*/
|
|
49081
|
+
onExpressionBlur(event, expressionItem) {
|
|
49082
|
+
if (this._prevFocusedContainer && this._prevFocusedContainer !== event.target.closest('.igx-filter-tree__expression-item')) {
|
|
49083
|
+
expressionItem.focused = false;
|
|
49084
|
+
}
|
|
49085
|
+
this._prevFocusedContainer = event.target.closest('.igx-filter-tree__expression-item');
|
|
49086
|
+
}
|
|
48760
49087
|
/**
|
|
48761
49088
|
* @hidden @internal
|
|
48762
49089
|
*/
|
|
48763
49090
|
onChipRemove(expressionItem) {
|
|
49091
|
+
this.exitEditAddMode();
|
|
48764
49092
|
this.deleteItem(expressionItem);
|
|
48765
49093
|
}
|
|
49094
|
+
//Get the dragged ghost as a HTMLElement
|
|
49095
|
+
get dragGhostElement() {
|
|
49096
|
+
return document.querySelector('.igx-chip__ghost[ghostclass="igx-chip__ghost"]');
|
|
49097
|
+
}
|
|
49098
|
+
//Get the drop ghost as a HTMLElement
|
|
49099
|
+
get dropGhostElement() {
|
|
49100
|
+
return document.querySelector(`.${this.dropGhostClass}`);
|
|
49101
|
+
}
|
|
49102
|
+
get mainExpressionTree() {
|
|
49103
|
+
return this.el.nativeElement.querySelector('.igx-filter-tree');
|
|
49104
|
+
}
|
|
49105
|
+
//Chip can be dragged if it's tree is in edit mode and there is no inner query that's been edited
|
|
49106
|
+
canBeDragged() {
|
|
49107
|
+
return this.isInEditMode && (!this.innerQueries || this.innerQueries.length == 0 || !this.innerQueries?.some(q => q.isInEditMode()));
|
|
49108
|
+
}
|
|
49109
|
+
//When we pick up a chip
|
|
49110
|
+
onMoveStart(sourceDragElement, sourceExpressionItem, isKeyboardDrag) {
|
|
49111
|
+
//console.log('Picked up:', event, sourceDragElement);
|
|
49112
|
+
this.resetDragAndDrop(true);
|
|
49113
|
+
this.isKeyboardDrag = isKeyboardDrag;
|
|
49114
|
+
this.sourceExpressionItem = sourceExpressionItem;
|
|
49115
|
+
this.sourceElement = sourceDragElement;
|
|
49116
|
+
this.listenToKeyboard();
|
|
49117
|
+
if (!this.isKeyboardDrag) {
|
|
49118
|
+
this.sourceElement.style.display = 'none';
|
|
49119
|
+
}
|
|
49120
|
+
}
|
|
49121
|
+
//When we let go a chip outside a proper drop zone
|
|
49122
|
+
onMoveEnd() {
|
|
49123
|
+
// console.log('Let go:');
|
|
49124
|
+
if (!this.sourceElement || !this.sourceExpressionItem)
|
|
49125
|
+
return;
|
|
49126
|
+
if (this.dropGhostChipNode) {
|
|
49127
|
+
//If there is a ghost chip presented to the user, execute drop
|
|
49128
|
+
this.onChipDropped();
|
|
49129
|
+
}
|
|
49130
|
+
else {
|
|
49131
|
+
this.resetDragAndDrop(true);
|
|
49132
|
+
}
|
|
49133
|
+
this.ghostChipMousemoveSubscription$?.unsubscribe();
|
|
49134
|
+
this.keyboardSubscription$?.unsubscribe();
|
|
49135
|
+
}
|
|
49136
|
+
//On entering a drop area of another chip
|
|
49137
|
+
onDivEnter(targetDragElement, targetExpressionItem) {
|
|
49138
|
+
this.onChipEnter(targetDragElement, targetExpressionItem, true);
|
|
49139
|
+
}
|
|
49140
|
+
//TODO remove fromDiv: boolean -> targetDragElement is always the div
|
|
49141
|
+
onChipEnter(targetDragElement, targetExpressionItem, fromDiv) {
|
|
49142
|
+
// console.log('Entering:', targetDragElement, targetExpressionItem, 'from div:', fromDiv);
|
|
49143
|
+
if (!this.sourceElement || !this.sourceExpressionItem)
|
|
49144
|
+
return;
|
|
49145
|
+
//If entering the one that's been picked up
|
|
49146
|
+
if (targetDragElement == this.sourceElement)
|
|
49147
|
+
return;
|
|
49148
|
+
//Simulate leaving the last entered chip in case of no Leave event triggered due to the artificial drop zone of a north positioned ghost chip
|
|
49149
|
+
if (this.targetElement) {
|
|
49150
|
+
this.resetDragAndDrop(false);
|
|
49151
|
+
}
|
|
49152
|
+
this.targetElement = targetDragElement;
|
|
49153
|
+
this.targetExpressionItem = targetExpressionItem;
|
|
49154
|
+
//Determine the middle point of the chip. (fromDiv - get the div's chip)
|
|
49155
|
+
const appendUnder = fromDiv ? this.ghostInLowerPart(targetDragElement.children[0]) : this.ghostInLowerPart(targetDragElement);
|
|
49156
|
+
this.renderDropGhostChip(targetDragElement, appendUnder);
|
|
49157
|
+
}
|
|
49158
|
+
//On moving the dragged chip in a drop area
|
|
49159
|
+
onDivOver(targetDragElement, targetExpressionItem) {
|
|
49160
|
+
if (this.targetExpressionItem === targetExpressionItem) {
|
|
49161
|
+
this.onChipOver(targetDragElement, true);
|
|
49162
|
+
}
|
|
49163
|
+
else {
|
|
49164
|
+
this.onChipEnter(targetDragElement, targetExpressionItem, true);
|
|
49165
|
+
}
|
|
49166
|
+
}
|
|
49167
|
+
//TODO remove fromDiv: boolean -> targetDragElement is always the div
|
|
49168
|
+
onChipOver(targetDragElement, fromDiv) {
|
|
49169
|
+
//console.log('Over:', targetDragElement, 'type: ', typeof event);
|
|
49170
|
+
if (!this.sourceElement || !this.sourceExpressionItem)
|
|
49171
|
+
return;
|
|
49172
|
+
//Determine the middle point of the chip. (fromDiv - get the div's chip)
|
|
49173
|
+
const appendUnder = fromDiv ? this.ghostInLowerPart(targetDragElement.children[0]) : this.ghostInLowerPart(targetDragElement);
|
|
49174
|
+
this.renderDropGhostChip(targetDragElement, appendUnder);
|
|
49175
|
+
}
|
|
49176
|
+
onChipLeave() {
|
|
49177
|
+
if (!this.sourceElement || !this.sourceExpressionItem || !this.targetElement)
|
|
49178
|
+
return;
|
|
49179
|
+
//console.log('Leaving:', targetDragElement.textContent.trim());
|
|
49180
|
+
//if the drag ghost is on the drop ghost row don't trigger leave
|
|
49181
|
+
if (this.dragGhostIsOnDropGhostRow(this.dragGhostElement, this.dropGhostChipNode?.firstChild)) {
|
|
49182
|
+
return;
|
|
49183
|
+
}
|
|
49184
|
+
if (this.targetElement) {
|
|
49185
|
+
this.resetDragAndDrop(false);
|
|
49186
|
+
}
|
|
49187
|
+
}
|
|
49188
|
+
//On dropped in a drop area of another chip
|
|
49189
|
+
onDivDropped(targetExpressionItem) {
|
|
49190
|
+
if (targetExpressionItem != this.sourceExpressionItem) {
|
|
49191
|
+
this.onChipDropped();
|
|
49192
|
+
}
|
|
49193
|
+
}
|
|
49194
|
+
onChipDropped() {
|
|
49195
|
+
if (!this.sourceElement || !this.sourceExpressionItem || !this.targetElement)
|
|
49196
|
+
return;
|
|
49197
|
+
//console.log('Move: [', this.sourceElement.children[0].textContent.trim(), (this.dropUnder ? '] under: [' : '] over:'), this.targetExpressionItem)
|
|
49198
|
+
this.moveDraggedChipToNewLocation(this.targetExpressionItem);
|
|
49199
|
+
this.resetDragAndDrop(true);
|
|
49200
|
+
this.exitEditAddMode();
|
|
49201
|
+
}
|
|
49202
|
+
onGroupRootOver(targetDragElement, targetExpressionItem) {
|
|
49203
|
+
//console.log('Entering:', targetDragElement, targetExpressionItem);
|
|
49204
|
+
if (!this.sourceElement || !this.sourceExpressionItem)
|
|
49205
|
+
return;
|
|
49206
|
+
let newTargetElement, newTargetExpressionItem;
|
|
49207
|
+
if (this.ghostInLowerPart(targetDragElement) || !targetExpressionItem.parent) {
|
|
49208
|
+
//if ghost in lower part of the AND/OR (or it's the main group) => drop before the group starts
|
|
49209
|
+
newTargetElement = targetDragElement.nextElementSibling.firstElementChild;
|
|
49210
|
+
newTargetElement = (newTargetElement.className.indexOf(this.dropGhostClass) !== -1) ? newTargetElement.nextElementSibling : newTargetElement;
|
|
49211
|
+
newTargetExpressionItem = targetExpressionItem.children[0];
|
|
49212
|
+
}
|
|
49213
|
+
else {
|
|
49214
|
+
//if ghost in upper part or it's the root group => drop as first child of that group
|
|
49215
|
+
newTargetElement = targetDragElement.parentElement.parentElement;
|
|
49216
|
+
newTargetExpressionItem = targetExpressionItem;
|
|
49217
|
+
}
|
|
49218
|
+
if (newTargetElement && (this.targetElement !== newTargetElement || this.targetExpressionItem !== newTargetExpressionItem)) {
|
|
49219
|
+
this.resetDragAndDrop(false);
|
|
49220
|
+
this.targetElement = newTargetElement;
|
|
49221
|
+
this.targetExpressionItem = newTargetExpressionItem;
|
|
49222
|
+
this.renderDropGhostChip(this.targetElement, false);
|
|
49223
|
+
}
|
|
49224
|
+
}
|
|
49225
|
+
onAddConditionEnter(addConditionElement, rootGroup) {
|
|
49226
|
+
//console.log('onAddConditionEnter', addConditionElement);
|
|
49227
|
+
if (!this.sourceElement || !this.sourceExpressionItem)
|
|
49228
|
+
return;
|
|
49229
|
+
const lastElement = addConditionElement.parentElement.previousElementSibling.lastElementChild;
|
|
49230
|
+
if (lastElement == this.dropGhostChipNode)
|
|
49231
|
+
return;
|
|
49232
|
+
//simulate entering in the lower part of the last chip/group
|
|
49233
|
+
this.onChipEnter(lastElement, rootGroup.children[rootGroup.children.length - 1], false);
|
|
49234
|
+
}
|
|
49235
|
+
onAddConditionLeave() {
|
|
49236
|
+
this.onChipLeave();
|
|
49237
|
+
}
|
|
49238
|
+
//Checks if the dragged ghost is horizontally on the same line with the drop ghost
|
|
49239
|
+
dragGhostIsOnDropGhostRow(dragGhost, dropGhost) {
|
|
49240
|
+
const dragGhostBounds = dragGhost.getBoundingClientRect();
|
|
49241
|
+
const dropGhostBounds = dropGhost.getBoundingClientRect();
|
|
49242
|
+
if (!dragGhostBounds || !dropGhostBounds)
|
|
49243
|
+
return false;
|
|
49244
|
+
const ghostHeight = dragGhostBounds.bottom - dragGhostBounds.top;
|
|
49245
|
+
return !(dragGhostBounds.bottom < dropGhostBounds.top - ghostHeight || dragGhostBounds.top > dropGhostBounds.bottom + ghostHeight);
|
|
49246
|
+
}
|
|
49247
|
+
//Checks if the dragged ghost is north or south of a target element's center
|
|
49248
|
+
ghostInLowerPart(ofElement) {
|
|
49249
|
+
//if (event == null) return true;
|
|
49250
|
+
const ghostBounds = this.dragGhostElement.getBoundingClientRect();
|
|
49251
|
+
const targetBounds = ofElement.getBoundingClientRect();
|
|
49252
|
+
return ((ghostBounds.top + ghostBounds.bottom) / 2) >= ((targetBounds.top + targetBounds.bottom) / 2);
|
|
49253
|
+
}
|
|
49254
|
+
//Create the drop ghost node based on the base chip that's been dragged
|
|
49255
|
+
//TODO refactor this using angular and css?
|
|
49256
|
+
createDropGhost(keyboardMode) {
|
|
49257
|
+
const dragCopy = this.sourceElement.cloneNode(true);
|
|
49258
|
+
dragCopy.classList.add(this.dropGhostClass);
|
|
49259
|
+
dragCopy.style.display = '';
|
|
49260
|
+
dragCopy.firstChild.style.visibility = 'visible';
|
|
49261
|
+
dragCopy.removeChild(dragCopy.childNodes[3]);
|
|
49262
|
+
if (!keyboardMode) {
|
|
49263
|
+
var span = document.createElement('span');
|
|
49264
|
+
//TODO Localize string
|
|
49265
|
+
span.innerHTML = "Drop here to insert";
|
|
49266
|
+
dragCopy.firstChild.firstChild.removeChild(dragCopy.firstChild.firstChild.childNodes[1]);
|
|
49267
|
+
dragCopy.firstChild.firstChild.removeChild(dragCopy.firstChild.firstChild.childNodes[1]);
|
|
49268
|
+
dragCopy.firstChild.firstChild.firstChild.replaceChildren(span);
|
|
49269
|
+
dragCopy.firstChild.firstChild.classList.add('igx-filter-tree__expression-item-ghost');
|
|
49270
|
+
}
|
|
49271
|
+
return dragCopy;
|
|
49272
|
+
}
|
|
49273
|
+
//Make a copy of the drag chip and place it in the DOM north or south of the drop chip
|
|
49274
|
+
renderDropGhostChip(appendToElement, appendUnder, keyboardMode) {
|
|
49275
|
+
const dragCopy = this.createDropGhost(keyboardMode);
|
|
49276
|
+
//Append the ghost
|
|
49277
|
+
if ((!appendUnder && this.dropUnder !== false) || //mouse mode
|
|
49278
|
+
(keyboardMode && !appendUnder)) {
|
|
49279
|
+
//over
|
|
49280
|
+
this.dropGhostChipNode?.remove();
|
|
49281
|
+
this.dropGhostChipNode = dragCopy;
|
|
49282
|
+
this.dropUnder = false;
|
|
49283
|
+
appendToElement.parentNode.insertBefore(this.dropGhostChipNode, appendToElement);
|
|
49284
|
+
}
|
|
49285
|
+
else if ((appendUnder && this.dropUnder !== true) || //mouse mode
|
|
49286
|
+
(keyboardMode && appendUnder)) {
|
|
49287
|
+
//under
|
|
49288
|
+
this.dropGhostChipNode?.remove();
|
|
49289
|
+
this.dropGhostChipNode = dragCopy;
|
|
49290
|
+
this.dropUnder = true;
|
|
49291
|
+
appendToElement.parentNode.insertBefore(this.dropGhostChipNode, appendToElement.nextElementSibling);
|
|
49292
|
+
}
|
|
49293
|
+
//Put focus on the drag icon of the ghost while performing keyboard drag
|
|
49294
|
+
if (this.isKeyboardDrag) {
|
|
49295
|
+
this.dropGhostChipNode.querySelector('.igx-drag-indicator').focus();
|
|
49296
|
+
}
|
|
49297
|
+
//Attach a mousemove event listener (if not already in place) to the dragged ghost (if present)
|
|
49298
|
+
if (this.dragGhostElement && (!this.ghostChipMousemoveSubscription$ || this.ghostChipMousemoveSubscription$?.closed === true)) {
|
|
49299
|
+
const mouseMoves = fromEvent(this.dragGhostElement, 'mousemove');
|
|
49300
|
+
this.ghostChipMousemoveSubscription$ = mouseMoves.pipe(sampleTime(100)).subscribe(() => {
|
|
49301
|
+
this.onChipLeave();
|
|
49302
|
+
});
|
|
49303
|
+
}
|
|
49304
|
+
this.setDragCursor('grab');
|
|
49305
|
+
}
|
|
49306
|
+
//Set the cursor when dragging a ghost
|
|
49307
|
+
setDragCursor(cursor) {
|
|
49308
|
+
if (this.dragGhostElement) {
|
|
49309
|
+
this.dragGhostElement.style.cursor = cursor;
|
|
49310
|
+
}
|
|
49311
|
+
}
|
|
49312
|
+
//Execute the drop
|
|
49313
|
+
moveDraggedChipToNewLocation(appendToExpressionItem, fromAddConditionBtn) {
|
|
49314
|
+
//Copy dragged chip
|
|
49315
|
+
const dragCopy = { ...this.sourceExpressionItem };
|
|
49316
|
+
dragCopy.parent = appendToExpressionItem.parent;
|
|
49317
|
+
//Paste on new place
|
|
49318
|
+
const index = appendToExpressionItem.parent.children.indexOf(appendToExpressionItem);
|
|
49319
|
+
appendToExpressionItem.parent.children.splice(index + (fromAddConditionBtn || this.dropUnder ? 1 : 0), 0, dragCopy);
|
|
49320
|
+
//Delete from old place
|
|
49321
|
+
this.deleteItem(this.sourceExpressionItem);
|
|
49322
|
+
}
|
|
49323
|
+
//Reset Drag&Drop vars. Optionally the drag source vars too
|
|
49324
|
+
resetDragAndDrop(clearDragged) {
|
|
49325
|
+
this.targetExpressionItem = null;
|
|
49326
|
+
this.targetElement = null;
|
|
49327
|
+
this.dropUnder = null;
|
|
49328
|
+
this.dropGhostChipNode?.remove();
|
|
49329
|
+
this.dropGhostChipNode = null;
|
|
49330
|
+
this.keyDragOffsetIndex = 0;
|
|
49331
|
+
this.keyDragFirstMove = true;
|
|
49332
|
+
this.setDragCursor('no-drop');
|
|
49333
|
+
if ((clearDragged || this.isKeyboardDrag) && this.sourceElement) {
|
|
49334
|
+
this.sourceElement.style.display = '';
|
|
49335
|
+
}
|
|
49336
|
+
if (clearDragged) {
|
|
49337
|
+
this.sourceExpressionItem = null;
|
|
49338
|
+
this.sourceElement = null;
|
|
49339
|
+
this.dropZonesList = null;
|
|
49340
|
+
this.expressionsList = null;
|
|
49341
|
+
}
|
|
49342
|
+
}
|
|
49343
|
+
listenToKeyboard() {
|
|
49344
|
+
this.keyboardSubscription$?.unsubscribe();
|
|
49345
|
+
this.keyboardSubscription$ = fromEvent(this.mainExpressionTree, 'keydown')
|
|
49346
|
+
.pipe(filter$1(key => ['ArrowUp', 'ArrowDown', 'Enter', 'Space', 'Escape', 'Tab'].includes(key.code)))
|
|
49347
|
+
.pipe(tap$1(e => {
|
|
49348
|
+
//Inhibit Tabs if keyboard drag is underway
|
|
49349
|
+
if (e.key !== 'Tab' || this.dropGhostElement)
|
|
49350
|
+
e.preventDefault();
|
|
49351
|
+
}))
|
|
49352
|
+
.pipe(filter$1(event => !event.repeat))
|
|
49353
|
+
.subscribe(key => {
|
|
49354
|
+
if (key.code == 'Escape') {
|
|
49355
|
+
//TODO cancel mouse drag
|
|
49356
|
+
this.resetDragAndDrop(false);
|
|
49357
|
+
//Regain focus on the drag icon after keyboard drag cancel
|
|
49358
|
+
if (this.isKeyboardDrag) {
|
|
49359
|
+
this.sourceElement.firstElementChild.firstElementChild.firstElementChild.firstElementChild.focus();
|
|
49360
|
+
}
|
|
49361
|
+
}
|
|
49362
|
+
else if (key.code == 'ArrowUp' || key.code == 'ArrowDown') {
|
|
49363
|
+
this.arrowDrag(key);
|
|
49364
|
+
}
|
|
49365
|
+
else if (key.code == 'Enter' || key.code == 'Space') {
|
|
49366
|
+
//this.platform.isActivationKey(eventArgs) Maybe use this rather that Enter/Space?
|
|
49367
|
+
this.onChipDropped();
|
|
49368
|
+
this.keyboardSubscription$.unsubscribe();
|
|
49369
|
+
}
|
|
49370
|
+
});
|
|
49371
|
+
}
|
|
49372
|
+
//Perform up/down movement of drop ghost along the expression tree
|
|
49373
|
+
arrowDrag(key) {
|
|
49374
|
+
if (!this.sourceElement || !this.sourceExpressionItem)
|
|
49375
|
+
return;
|
|
49376
|
+
if (this.keyDragFirstMove) {
|
|
49377
|
+
this.expressionsList = this.getListedExpressions(this.rootGroup);
|
|
49378
|
+
this.dropZonesList = this.getListedDropZones();
|
|
49379
|
+
this.sourceElement.style.display = 'none';
|
|
49380
|
+
}
|
|
49381
|
+
//const index = this.expressionsList.indexOf(this.sourceExpressionItem);
|
|
49382
|
+
const index = this.dropZonesList.indexOf(this.sourceElement);
|
|
49383
|
+
if (index === -1)
|
|
49384
|
+
console.error("Dragged expression not found");
|
|
49385
|
+
let newKeyIndexOffset = 0;
|
|
49386
|
+
if (key.code == 'ArrowUp') {
|
|
49387
|
+
//decrease index offset capped at top of tree
|
|
49388
|
+
newKeyIndexOffset = this.keyDragOffsetIndex - 1 >= index * -2 - 1 ? this.keyDragOffsetIndex - 1 : this.keyDragOffsetIndex;
|
|
49389
|
+
}
|
|
49390
|
+
else if (key.code == 'ArrowDown') {
|
|
49391
|
+
//increase index offset capped at bottom of tree
|
|
49392
|
+
newKeyIndexOffset = this.keyDragOffsetIndex + 1 <= (this.dropZonesList.length - 2 - index) * 2 + 2 ? this.keyDragOffsetIndex + 1 : this.keyDragOffsetIndex;
|
|
49393
|
+
}
|
|
49394
|
+
else {
|
|
49395
|
+
console.error('wrong key');
|
|
49396
|
+
return;
|
|
49397
|
+
}
|
|
49398
|
+
//if up/down limits not reached
|
|
49399
|
+
if (newKeyIndexOffset != this.keyDragOffsetIndex) {
|
|
49400
|
+
this.keyDragOffsetIndex = newKeyIndexOffset;
|
|
49401
|
+
const indexOffset = ~~(this.keyDragOffsetIndex / 2);
|
|
49402
|
+
if (index + indexOffset <= this.expressionsList.length - 1) {
|
|
49403
|
+
let under = this.keyDragOffsetIndex < 0 ? this.keyDragOffsetIndex % 2 == 0 ? true : false : this.keyDragOffsetIndex % 2 == 0 ? false : true;
|
|
49404
|
+
if (this.dropZonesList[index + indexOffset].className.indexOf('igx-filter-tree__expression-context-menu') === -1) {
|
|
49405
|
+
this.targetElement = this.dropZonesList[index + indexOffset];
|
|
49406
|
+
this.targetExpressionItem = this.expressionsList[index + indexOffset];
|
|
49407
|
+
}
|
|
49408
|
+
else {
|
|
49409
|
+
//if the current drop zone is a group root (AND/OR)
|
|
49410
|
+
if (index + indexOffset === 0) {
|
|
49411
|
+
//If the root group's AND/OR
|
|
49412
|
+
this.targetElement = this.dropZonesList[0];
|
|
49413
|
+
this.targetExpressionItem = this.rootGroup.children[0];
|
|
49414
|
+
under = true;
|
|
49415
|
+
}
|
|
49416
|
+
else if (under) {
|
|
49417
|
+
//If under AND/OR
|
|
49418
|
+
this.targetElement = this.dropZonesList[index + indexOffset];
|
|
49419
|
+
this.targetExpressionItem = this.expressionsList[index + indexOffset + 1];
|
|
49420
|
+
}
|
|
49421
|
+
else {
|
|
49422
|
+
//if over AND/OR
|
|
49423
|
+
this.targetElement = this.dropZonesList[index + indexOffset].parentElement.parentElement;
|
|
49424
|
+
this.targetExpressionItem = this.expressionsList[index + indexOffset];
|
|
49425
|
+
}
|
|
49426
|
+
//If should drop under AND/OR => drop over first chip in that AND/OR's group
|
|
49427
|
+
if (under) {
|
|
49428
|
+
this.targetElement = this.targetElement.nextElementSibling.firstElementChild;
|
|
49429
|
+
if (this.targetElement === this.dropGhostChipNode)
|
|
49430
|
+
this.targetElement = this.targetElement.nextElementSibling;
|
|
49431
|
+
under = false;
|
|
49432
|
+
}
|
|
49433
|
+
}
|
|
49434
|
+
const before = this.getPreviousChip(this.dropGhostElement);
|
|
49435
|
+
const after = this.getNextChip(this.dropGhostElement);
|
|
49436
|
+
this.renderDropGhostChip(this.targetElement, under, true);
|
|
49437
|
+
//If it's the first arrow hit OR drop ghost is not displayed OR hasn't actually moved, move one more step in the same direction
|
|
49438
|
+
if (this.keyDragFirstMove ||
|
|
49439
|
+
!this.dropGhostElement ||
|
|
49440
|
+
(this.getPreviousChip(this.dropGhostElement) === before && this.getNextChip(this.dropGhostElement) === after)) {
|
|
49441
|
+
this.keyDragFirstMove = false;
|
|
49442
|
+
this.arrowDrag(key);
|
|
49443
|
+
}
|
|
49444
|
+
}
|
|
49445
|
+
else {
|
|
49446
|
+
//Dropping on '+ Condition button' => drop as last condition in the root group
|
|
49447
|
+
let lastElement = this.dropZonesList[this.dropZonesList.length - 1].parentElement.previousElementSibling;
|
|
49448
|
+
if (lastElement.className.indexOf("igx-filter-tree__expression-section") !== -1)
|
|
49449
|
+
lastElement = lastElement.lastElementChild;
|
|
49450
|
+
if (lastElement.className.indexOf("igx-filter-tree__subquery") !== -1)
|
|
49451
|
+
lastElement = lastElement.previousElementSibling;
|
|
49452
|
+
if (lastElement === this.dropGhostChipNode)
|
|
49453
|
+
lastElement = lastElement.previousElementSibling;
|
|
49454
|
+
const getParentExpression = (expression) => {
|
|
49455
|
+
return expression.parent ? getParentExpression(expression.parent) : expression;
|
|
49456
|
+
};
|
|
49457
|
+
const rootGroup = getParentExpression(this.expressionsList[this.expressionsList.length - 1]);
|
|
49458
|
+
this.targetElement = lastElement;
|
|
49459
|
+
this.targetExpressionItem = rootGroup.children[rootGroup.children.length - 1];
|
|
49460
|
+
this.renderDropGhostChip(lastElement, true, true);
|
|
49461
|
+
}
|
|
49462
|
+
}
|
|
49463
|
+
return;
|
|
49464
|
+
}
|
|
49465
|
+
//Get previous chip area taking into account a possible hidden sub-tree or collapsed base chip
|
|
49466
|
+
getPreviousChip(chipSubject) {
|
|
49467
|
+
let prevElement = chipSubject;
|
|
49468
|
+
do {
|
|
49469
|
+
prevElement = prevElement?.previousElementSibling;
|
|
49470
|
+
} while (prevElement && getComputedStyle(prevElement).display === 'none');
|
|
49471
|
+
return prevElement;
|
|
49472
|
+
}
|
|
49473
|
+
//Get next chip area taking into account a possible hidden sub-tree or collapsed base chip
|
|
49474
|
+
getNextChip(chipSubject) {
|
|
49475
|
+
let nextElement = chipSubject;
|
|
49476
|
+
do {
|
|
49477
|
+
nextElement = nextElement?.nextElementSibling;
|
|
49478
|
+
} while (nextElement && getComputedStyle(nextElement).display === 'none');
|
|
49479
|
+
return nextElement;
|
|
49480
|
+
}
|
|
49481
|
+
//Get all expressions from the tree flatten out as a list, including the expression groups
|
|
49482
|
+
getListedExpressions(group) {
|
|
49483
|
+
const expressions = [];
|
|
49484
|
+
expressions.push(group);
|
|
49485
|
+
group.children.forEach(child => {
|
|
49486
|
+
if (child instanceof ExpressionGroupItem) {
|
|
49487
|
+
expressions.push(...this.getListedExpressions(child));
|
|
49488
|
+
}
|
|
49489
|
+
else {
|
|
49490
|
+
expressions.push(child);
|
|
49491
|
+
}
|
|
49492
|
+
});
|
|
49493
|
+
return expressions;
|
|
49494
|
+
}
|
|
49495
|
+
//Gets all chip elements owned by this tree (discard child trees), AND/OR group roots and '+condition' button, flatten out as a list of HTML elements
|
|
49496
|
+
getListedDropZones() {
|
|
49497
|
+
const viableDropAreaSelector = `.igx-filter-tree__expression-item[igxDrop]:not(.${this.dropGhostClass}),` + /*Condition chip*/ //TODO :not(.${this.dropGhostClass}) might be redundant now
|
|
49498
|
+
`.igx-filter-tree__subquery:has([igxDrop]),` + /*Chip in edit*/
|
|
49499
|
+
`.igx-filter-tree__buttons > .igx-button[igxDrop]:first-of-type,` + /*Add Condition Button*/
|
|
49500
|
+
`.igx-filter-tree__expression-context-menu[igxDrop]`; /*AND/OR group root*/
|
|
49501
|
+
const expressionElementList = this.el.nativeElement.querySelectorAll(viableDropAreaSelector);
|
|
49502
|
+
const ownChipElements = [];
|
|
49503
|
+
const isNotFromThisTree = (qb, parent) => {
|
|
49504
|
+
if (parent == qb)
|
|
49505
|
+
return false;
|
|
49506
|
+
else if (parent?.style?.display === "none" || parent.classList.contains('igx-query-builder-tree'))
|
|
49507
|
+
return true;
|
|
49508
|
+
else if (parent.parentElement)
|
|
49509
|
+
return isNotFromThisTree(qb, parent.parentElement);
|
|
49510
|
+
else
|
|
49511
|
+
return false;
|
|
49512
|
+
};
|
|
49513
|
+
expressionElementList.forEach(element => {
|
|
49514
|
+
if (!isNotFromThisTree(this.el.nativeElement, element) && getComputedStyle(element).display !== 'none')
|
|
49515
|
+
ownChipElements.push(element);
|
|
49516
|
+
});
|
|
49517
|
+
return ownChipElements;
|
|
49518
|
+
}
|
|
49519
|
+
onChipDragIndicatorFocus(sourceDragElement, sourceExpressionItem) {
|
|
49520
|
+
sourceDragElement.querySelector('.igx-drag-indicator').setAttribute('aria-hidden', 'false'); //Temp solution for aria-hidden bug #35759
|
|
49521
|
+
this.onMoveStart(sourceDragElement, sourceExpressionItem, true);
|
|
49522
|
+
}
|
|
49523
|
+
onChipDragIndicatorFocusOut() {
|
|
49524
|
+
if (this.sourceElement?.style?.display !== 'none') {
|
|
49525
|
+
this.resetDragAndDrop(true);
|
|
49526
|
+
this.keyboardSubscription$?.unsubscribe();
|
|
49527
|
+
}
|
|
49528
|
+
}
|
|
49529
|
+
//Upon blurring the tree, if Keyboard drag is underway and the next active item is not the drop ghost's drag indicator icon, cancel the drag&drop procedure
|
|
49530
|
+
onDragFocusOut() {
|
|
49531
|
+
if (this.isKeyboardDrag && this.dropGhostElement) {
|
|
49532
|
+
//have to wait a tick because upon blur, the next activeElement is always body, right before the next element gains focus
|
|
49533
|
+
setTimeout(() => {
|
|
49534
|
+
if (document.activeElement.className.indexOf("igx-drag-indicator") === -1) {
|
|
49535
|
+
this.resetDragAndDrop(true);
|
|
49536
|
+
this.keyboardSubscription$?.unsubscribe();
|
|
49537
|
+
}
|
|
49538
|
+
}, 0);
|
|
49539
|
+
}
|
|
49540
|
+
}
|
|
49541
|
+
/* DRAG AND DROP END*/
|
|
48766
49542
|
/**
|
|
48767
49543
|
* @hidden @internal
|
|
48768
49544
|
*/
|
|
48769
|
-
|
|
48770
|
-
this.
|
|
48771
|
-
|
|
48772
|
-
|
|
48773
|
-
|
|
48774
|
-
this.
|
|
48775
|
-
}
|
|
49545
|
+
addExpressionBlur() {
|
|
49546
|
+
if (this.prevFocusedExpression) {
|
|
49547
|
+
this.prevFocusedExpression.focused = false;
|
|
49548
|
+
}
|
|
49549
|
+
if (this.addExpressionItemDropDown && !this.addExpressionItemDropDown.collapsed) {
|
|
49550
|
+
this.addExpressionItemDropDown.close();
|
|
49551
|
+
}
|
|
48776
49552
|
}
|
|
48777
49553
|
/**
|
|
48778
49554
|
* @hidden @internal
|
|
48779
49555
|
*/
|
|
48780
|
-
|
|
48781
|
-
|
|
48782
|
-
this._preventChipClick = true;
|
|
48783
|
-
this.enterExpressionEdit(expressionItem);
|
|
49556
|
+
onChipClick(expressionItem, chip) {
|
|
49557
|
+
this.enterExpressionEdit(expressionItem, chip);
|
|
48784
49558
|
}
|
|
48785
49559
|
/**
|
|
48786
49560
|
* @hidden @internal
|
|
48787
49561
|
*/
|
|
48788
|
-
enterExpressionEdit(expressionItem) {
|
|
48789
|
-
this.
|
|
48790
|
-
this.
|
|
48791
|
-
this.
|
|
49562
|
+
enterExpressionEdit(expressionItem, chip) {
|
|
49563
|
+
this.exitEditAddMode(true);
|
|
49564
|
+
this.cdr.detectChanges();
|
|
49565
|
+
this._lastFocusedChipIndex = chip ? this.expressionsChips.toArray().findIndex(expr => expr === chip) : this._lastFocusedChipIndex;
|
|
49566
|
+
this.enterEditMode(expressionItem);
|
|
49567
|
+
}
|
|
49568
|
+
/**
|
|
49569
|
+
* @hidden @internal
|
|
49570
|
+
*/
|
|
49571
|
+
clickExpressionAdd(targetButton, chip) {
|
|
49572
|
+
this.exitEditAddMode(true);
|
|
49573
|
+
this.cdr.detectChanges();
|
|
49574
|
+
this._lastFocusedChipIndex = this.expressionsChips.toArray().findIndex(expr => expr === chip);
|
|
49575
|
+
this.openExpressionAddDialog(targetButton);
|
|
49576
|
+
}
|
|
49577
|
+
/**
|
|
49578
|
+
* @hidden @internal
|
|
49579
|
+
*/
|
|
49580
|
+
openExpressionAddDialog(targetButton) {
|
|
49581
|
+
this.addExpressionDropDownOverlaySettings.target = targetButton;
|
|
49582
|
+
this.addExpressionDropDownOverlaySettings.positionStrategy = new ConnectedPositioningStrategy({
|
|
49583
|
+
horizontalDirection: HorizontalAlignment.Right,
|
|
49584
|
+
horizontalStartPoint: HorizontalAlignment.Left,
|
|
49585
|
+
verticalStartPoint: VerticalAlignment.Bottom
|
|
49586
|
+
});
|
|
49587
|
+
this.addExpressionItemDropDown.open(this.addExpressionDropDownOverlaySettings);
|
|
49588
|
+
}
|
|
49589
|
+
/**
|
|
49590
|
+
* @hidden @internal
|
|
49591
|
+
*/
|
|
49592
|
+
enterExpressionAdd(event, expressionItem) {
|
|
49593
|
+
if (this._addModeExpression) {
|
|
49594
|
+
this._addModeExpression.inAddMode = false;
|
|
49595
|
+
}
|
|
49596
|
+
if (this.parentExpression) {
|
|
49597
|
+
this.inEditModeChange.emit(this.parentExpression);
|
|
49598
|
+
}
|
|
49599
|
+
const parent = expressionItem.parent ?? this.rootGroup;
|
|
49600
|
+
requestAnimationFrame(() => {
|
|
49601
|
+
if (event.newSelection.value === 'addCondition') {
|
|
49602
|
+
this.addCondition(parent, expressionItem);
|
|
49603
|
+
}
|
|
49604
|
+
else if (event.newSelection.value === 'addGroup') {
|
|
49605
|
+
this.addReverseGroup(parent, expressionItem);
|
|
49606
|
+
}
|
|
49607
|
+
expressionItem.inAddMode = true;
|
|
49608
|
+
this._addModeExpression = expressionItem;
|
|
49609
|
+
});
|
|
49610
|
+
}
|
|
49611
|
+
/**
|
|
49612
|
+
* @hidden @internal
|
|
49613
|
+
*/
|
|
49614
|
+
enterEditMode(expressionItem) {
|
|
48792
49615
|
if (this._editedExpression) {
|
|
48793
49616
|
this._editedExpression.inEditMode = false;
|
|
48794
49617
|
}
|
|
49618
|
+
if (this.parentExpression) {
|
|
49619
|
+
this.inEditModeChange.emit(this.parentExpression);
|
|
49620
|
+
}
|
|
48795
49621
|
expressionItem.hovered = false;
|
|
48796
|
-
this.
|
|
48797
|
-
|
|
48798
|
-
|
|
48799
|
-
|
|
48800
|
-
|
|
49622
|
+
this.fields = this.selectedEntity ? this.selectedEntity.fields : null;
|
|
49623
|
+
this.selectedField =
|
|
49624
|
+
expressionItem.expression.fieldName ?
|
|
49625
|
+
this.fields?.find(field => field.field === expressionItem.expression.fieldName)
|
|
49626
|
+
: null;
|
|
49627
|
+
this.selectedCondition =
|
|
49628
|
+
expressionItem.expression.condition ?
|
|
49629
|
+
expressionItem.expression.condition.name :
|
|
49630
|
+
null;
|
|
49631
|
+
this.searchValue.value = expressionItem.expression.searchVal;
|
|
48801
49632
|
expressionItem.inEditMode = true;
|
|
48802
49633
|
this._editedExpression = expressionItem;
|
|
48803
49634
|
this.cdr.detectChanges();
|
|
48804
|
-
this.
|
|
48805
|
-
this.
|
|
48806
|
-
this.
|
|
48807
|
-
this.
|
|
48808
|
-
|
|
48809
|
-
|
|
49635
|
+
this.entitySelectOverlaySettings.target = this.entitySelect.element;
|
|
49636
|
+
this.entitySelectOverlaySettings.excludeFromOutsideClick = [this.entitySelect.element];
|
|
49637
|
+
this.entitySelectOverlaySettings.positionStrategy = new AutoPositionStrategy();
|
|
49638
|
+
if (this.returnFieldSelect) {
|
|
49639
|
+
this.returnFieldSelectOverlaySettings.target = this.returnFieldSelect.element;
|
|
49640
|
+
this.returnFieldSelectOverlaySettings.excludeFromOutsideClick = [this.returnFieldSelect.element];
|
|
49641
|
+
this.returnFieldSelectOverlaySettings.positionStrategy = new AutoPositionStrategy();
|
|
49642
|
+
}
|
|
49643
|
+
if (this.fieldSelect) {
|
|
49644
|
+
this.fieldSelectOverlaySettings.target = this.fieldSelect.element;
|
|
49645
|
+
this.fieldSelectOverlaySettings.excludeFromOutsideClick = [this.fieldSelect.element];
|
|
49646
|
+
this.fieldSelectOverlaySettings.positionStrategy = new AutoPositionStrategy();
|
|
49647
|
+
}
|
|
49648
|
+
if (this.conditionSelect) {
|
|
49649
|
+
this.conditionSelectOverlaySettings.target = this.conditionSelect.element;
|
|
49650
|
+
this.conditionSelectOverlaySettings.excludeFromOutsideClick = [this.conditionSelect.element];
|
|
49651
|
+
this.conditionSelectOverlaySettings.positionStrategy = new AutoPositionStrategy();
|
|
49652
|
+
}
|
|
48810
49653
|
if (!this.selectedField) {
|
|
48811
49654
|
this.fieldSelect.input.nativeElement.focus();
|
|
48812
49655
|
}
|
|
48813
|
-
else if (this.selectedField.filters.condition(this.selectedCondition)
|
|
49656
|
+
else if (this.selectedField.filters.condition(this.selectedCondition)?.isUnary) {
|
|
48814
49657
|
this.conditionSelect.input.nativeElement.focus();
|
|
48815
49658
|
}
|
|
48816
49659
|
else {
|
|
48817
49660
|
const input = this.searchValueInput?.nativeElement || this.picker?.getEditElement();
|
|
48818
|
-
input
|
|
49661
|
+
input?.focus();
|
|
48819
49662
|
}
|
|
48820
49663
|
}
|
|
48821
49664
|
/**
|
|
48822
49665
|
* @hidden @internal
|
|
48823
49666
|
*/
|
|
48824
|
-
|
|
48825
|
-
|
|
48826
|
-
|
|
48827
|
-
|
|
48828
|
-
this.
|
|
48829
|
-
for (const expr of this.selectedExpressions) {
|
|
48830
|
-
expr.selected = false;
|
|
48831
|
-
}
|
|
48832
|
-
this.selectedExpressions = [];
|
|
48833
|
-
this.toggleContextMenu();
|
|
48834
|
-
}
|
|
48835
|
-
/**
|
|
48836
|
-
* @hidden @internal
|
|
48837
|
-
*/
|
|
48838
|
-
enterExpressionAdd(expressionItem) {
|
|
48839
|
-
this.clearSelection();
|
|
48840
|
-
this.exitOperandEdit();
|
|
48841
|
-
if (this._addModeExpression) {
|
|
48842
|
-
this._addModeExpression.inAddMode = false;
|
|
48843
|
-
}
|
|
48844
|
-
expressionItem.inAddMode = true;
|
|
48845
|
-
this._addModeExpression = expressionItem;
|
|
48846
|
-
if (expressionItem.selected) {
|
|
48847
|
-
this.toggleExpression(expressionItem);
|
|
48848
|
-
}
|
|
48849
|
-
}
|
|
48850
|
-
/**
|
|
48851
|
-
* @hidden @internal
|
|
48852
|
-
*/
|
|
48853
|
-
contextMenuClosed() {
|
|
48854
|
-
this.contextualGroup = null;
|
|
49667
|
+
onConditionSelectChanging(event) {
|
|
49668
|
+
event.cancel = true;
|
|
49669
|
+
this.selectedCondition = event.newSelection.value;
|
|
49670
|
+
this.conditionSelect.close();
|
|
49671
|
+
this.cdr.detectChanges();
|
|
48855
49672
|
}
|
|
48856
49673
|
/**
|
|
48857
49674
|
* @hidden @internal
|
|
48858
49675
|
*/
|
|
48859
49676
|
onKeyDown(eventArgs) {
|
|
48860
49677
|
eventArgs.stopPropagation();
|
|
48861
|
-
const key = eventArgs.key;
|
|
48862
|
-
if (!this.contextMenuToggle.collapsed && (key === this.platform.KEYMAP.ESCAPE)) {
|
|
48863
|
-
this.clearSelection();
|
|
48864
|
-
}
|
|
48865
49678
|
}
|
|
48866
49679
|
/**
|
|
48867
49680
|
* @hidden @internal
|
|
48868
49681
|
*/
|
|
48869
|
-
|
|
48870
|
-
this.
|
|
49682
|
+
onGroupClick(groupContextMenuDropDown, targetButton, groupItem) {
|
|
49683
|
+
this.exitEditAddMode();
|
|
49684
|
+
this.cdr.detectChanges();
|
|
49685
|
+
this.groupContextMenuDropDown = groupContextMenuDropDown;
|
|
49686
|
+
this.groupContextMenuDropDownOverlaySettings.target = targetButton;
|
|
49687
|
+
this.groupContextMenuDropDownOverlaySettings.positionStrategy = new ConnectedPositioningStrategy({
|
|
49688
|
+
horizontalDirection: HorizontalAlignment.Right,
|
|
49689
|
+
horizontalStartPoint: HorizontalAlignment.Left,
|
|
49690
|
+
verticalStartPoint: VerticalAlignment.Bottom
|
|
49691
|
+
});
|
|
49692
|
+
if (groupContextMenuDropDown.collapsed) {
|
|
49693
|
+
this.contextualGroup = groupItem;
|
|
49694
|
+
groupContextMenuDropDown.open(this.groupContextMenuDropDownOverlaySettings);
|
|
49695
|
+
}
|
|
49696
|
+
else {
|
|
49697
|
+
groupContextMenuDropDown.close();
|
|
49698
|
+
}
|
|
48871
49699
|
}
|
|
48872
49700
|
/**
|
|
48873
49701
|
* @hidden @internal
|
|
48874
49702
|
*/
|
|
48875
|
-
|
|
48876
|
-
this.
|
|
49703
|
+
getOperator(expressionItem) {
|
|
49704
|
+
// if (!expressionItem && !this.expressionTree && !this.initialOperator) {
|
|
49705
|
+
// this.initialOperator = 0;
|
|
49706
|
+
// }
|
|
49707
|
+
const operator = expressionItem ?
|
|
49708
|
+
expressionItem.operator :
|
|
49709
|
+
this.expressionTree ?
|
|
49710
|
+
this.expressionTree.operator :
|
|
49711
|
+
this.initialOperator;
|
|
49712
|
+
return operator;
|
|
48877
49713
|
}
|
|
48878
49714
|
/**
|
|
48879
49715
|
* @hidden @internal
|
|
48880
49716
|
*/
|
|
48881
|
-
|
|
48882
|
-
|
|
48883
|
-
|
|
48884
|
-
}
|
|
48885
|
-
this.clearSelection();
|
|
49717
|
+
getSwitchGroupText(expressionItem) {
|
|
49718
|
+
const operator = this.getOperator(expressionItem);
|
|
49719
|
+
const condition = operator === FilteringLogic.Or ? this.resourceStrings.igx_query_builder_and_label : this.resourceStrings.igx_query_builder_or_label;
|
|
49720
|
+
return this.resourceStrings.igx_query_builder_switch_group.replace('{0}', condition.toUpperCase());
|
|
48886
49721
|
}
|
|
48887
49722
|
/**
|
|
48888
49723
|
* @hidden @internal
|
|
48889
49724
|
*/
|
|
48890
|
-
|
|
48891
|
-
|
|
49725
|
+
onGroupContextMenuDropDownSelectionChanging(event) {
|
|
49726
|
+
event.cancel = true;
|
|
49727
|
+
if (event.newSelection.value === 'switchCondition') {
|
|
49728
|
+
const newOperator = (!this.expressionTree ? this.initialOperator : (this.contextualGroup ?? this._expressionTree).operator) === 0 ? 1 : 0;
|
|
49729
|
+
this.selectFilteringLogic(newOperator);
|
|
49730
|
+
}
|
|
49731
|
+
else if (event.newSelection.value === 'ungroup') {
|
|
49732
|
+
this.ungroup();
|
|
49733
|
+
}
|
|
49734
|
+
this.groupContextMenuDropDown.close();
|
|
48892
49735
|
}
|
|
48893
49736
|
/**
|
|
48894
49737
|
* @hidden @internal
|
|
@@ -48903,36 +49746,24 @@ class IgxQueryBuilderComponent {
|
|
|
48903
49746
|
expr.parent = parent;
|
|
48904
49747
|
}
|
|
48905
49748
|
}
|
|
48906
|
-
this.clearSelection();
|
|
48907
49749
|
this.commitOperandEdit();
|
|
48908
49750
|
}
|
|
48909
49751
|
/**
|
|
48910
49752
|
* @hidden @internal
|
|
48911
49753
|
*/
|
|
48912
|
-
|
|
48913
|
-
|
|
48914
|
-
|
|
48915
|
-
|
|
48916
|
-
this.rootGroup = null;
|
|
49754
|
+
selectFilteringLogic(index) {
|
|
49755
|
+
if (!this.expressionTree) {
|
|
49756
|
+
this.initialOperator = index;
|
|
49757
|
+
return;
|
|
48917
49758
|
}
|
|
48918
|
-
|
|
48919
|
-
|
|
48920
|
-
|
|
48921
|
-
selectedGroup = parent;
|
|
48922
|
-
parent = parent.children.length === 0 ? parent.parent : null;
|
|
49759
|
+
if (this.contextualGroup) {
|
|
49760
|
+
this.contextualGroup.operator = index;
|
|
49761
|
+
this.commitOperandEdit();
|
|
48923
49762
|
}
|
|
48924
|
-
if (this.
|
|
48925
|
-
this.
|
|
49763
|
+
else if (this.expressionTree) {
|
|
49764
|
+
this._expressionTree.operator = index;
|
|
48926
49765
|
}
|
|
48927
|
-
this.
|
|
48928
|
-
this.commitOperandEdit();
|
|
48929
|
-
}
|
|
48930
|
-
/**
|
|
48931
|
-
* @hidden @internal
|
|
48932
|
-
*/
|
|
48933
|
-
selectFilteringLogic(event) {
|
|
48934
|
-
this.contextualGroup.operator = event.index;
|
|
48935
|
-
this.commitOperandEdit();
|
|
49766
|
+
this.initialOperator = null;
|
|
48936
49767
|
}
|
|
48937
49768
|
/**
|
|
48938
49769
|
* @hidden @internal
|
|
@@ -48946,20 +49777,11 @@ class IgxQueryBuilderComponent {
|
|
|
48946
49777
|
isDate(value) {
|
|
48947
49778
|
return value instanceof Date;
|
|
48948
49779
|
}
|
|
48949
|
-
/**
|
|
48950
|
-
* @hidden @internal
|
|
48951
|
-
*/
|
|
48952
|
-
onExpressionsScrolled() {
|
|
48953
|
-
if (!this.contextMenuToggle.collapsed) {
|
|
48954
|
-
this.calculateContextMenuTarget();
|
|
48955
|
-
this.contextMenuToggle.reposition();
|
|
48956
|
-
}
|
|
48957
|
-
}
|
|
48958
49780
|
/**
|
|
48959
49781
|
* @hidden @internal
|
|
48960
49782
|
*/
|
|
48961
49783
|
invokeClick(eventArgs) {
|
|
48962
|
-
if (this.platform.isActivationKey(eventArgs)) {
|
|
49784
|
+
if (!this.dropGhostChipNode && this.platform.isActivationKey(eventArgs)) {
|
|
48963
49785
|
eventArgs.preventDefault();
|
|
48964
49786
|
eventArgs.currentTarget.click();
|
|
48965
49787
|
}
|
|
@@ -48984,19 +49806,24 @@ class IgxQueryBuilderComponent {
|
|
|
48984
49806
|
* @hidden @internal
|
|
48985
49807
|
*/
|
|
48986
49808
|
getConditionList() {
|
|
48987
|
-
|
|
49809
|
+
if (!this.selectedField)
|
|
49810
|
+
return [];
|
|
49811
|
+
if (this.entities?.length === 1 && !this.entities[0].name) {
|
|
49812
|
+
return this.selectedField.filters.conditionList();
|
|
49813
|
+
}
|
|
49814
|
+
return this.selectedField.filters.extendedConditionList();
|
|
48988
49815
|
}
|
|
48989
49816
|
/**
|
|
48990
49817
|
* @hidden @internal
|
|
48991
49818
|
*/
|
|
48992
49819
|
getFormatter(field) {
|
|
48993
|
-
return this.fields
|
|
49820
|
+
return this.fields?.find(el => el.field === field)?.formatter;
|
|
48994
49821
|
}
|
|
48995
49822
|
/**
|
|
48996
49823
|
* @hidden @internal
|
|
48997
49824
|
*/
|
|
48998
49825
|
getFormat(field) {
|
|
48999
|
-
return this.fields
|
|
49826
|
+
return this.fields?.find(el => el.field === field).pipeArgs.format;
|
|
49000
49827
|
}
|
|
49001
49828
|
/**
|
|
49002
49829
|
* @hidden @internal
|
|
@@ -49020,22 +49847,76 @@ class IgxQueryBuilderComponent {
|
|
|
49020
49847
|
afterExpression
|
|
49021
49848
|
};
|
|
49022
49849
|
}
|
|
49023
|
-
|
|
49024
|
-
|
|
49025
|
-
|
|
49026
|
-
|
|
49027
|
-
|
|
49028
|
-
|
|
49029
|
-
|
|
49030
|
-
|
|
49031
|
-
|
|
49032
|
-
|
|
49033
|
-
|
|
49034
|
-
|
|
49035
|
-
|
|
49036
|
-
|
|
49850
|
+
formatReturnFields(innerTree) {
|
|
49851
|
+
const returnFields = innerTree.returnFields;
|
|
49852
|
+
let text = returnFields.join(', ');
|
|
49853
|
+
const innerTreeEntity = this.entities?.find(el => el.name === innerTree.entity);
|
|
49854
|
+
if (returnFields.length === innerTreeEntity?.fields.length) {
|
|
49855
|
+
text = this.resourceStrings.igx_query_builder_all_fields;
|
|
49856
|
+
}
|
|
49857
|
+
else {
|
|
49858
|
+
text = returnFields.join(', ');
|
|
49859
|
+
text = text.length > 25 ? text.substring(0, 25) + ' ...' : text;
|
|
49860
|
+
}
|
|
49861
|
+
return text;
|
|
49862
|
+
}
|
|
49863
|
+
isInEditMode() {
|
|
49864
|
+
return !this.parentExpression || (this.parentExpression && this.parentExpression.inEditMode);
|
|
49865
|
+
}
|
|
49866
|
+
onInEditModeChanged(expressionItem) {
|
|
49867
|
+
if (!expressionItem.inEditMode) {
|
|
49868
|
+
this.enterExpressionEdit(expressionItem);
|
|
49869
|
+
}
|
|
49870
|
+
}
|
|
49871
|
+
getExpressionTreeCopy(expressionTree, shouldAssignInnerQueryExprTree) {
|
|
49872
|
+
if (!expressionTree) {
|
|
49873
|
+
return null;
|
|
49874
|
+
}
|
|
49875
|
+
const exprTreeCopy = new FilteringExpressionsTree(expressionTree.operator, expressionTree.fieldName, expressionTree.entity, expressionTree.returnFields);
|
|
49876
|
+
exprTreeCopy.filteringOperands = [];
|
|
49877
|
+
expressionTree.filteringOperands.forEach(o => o instanceof FilteringExpressionsTree ? exprTreeCopy.filteringOperands.push(this.getExpressionTreeCopy(o)) : exprTreeCopy.filteringOperands.push(o));
|
|
49878
|
+
if (!this.innerQueryNewExpressionTree && shouldAssignInnerQueryExprTree) {
|
|
49879
|
+
this.innerQueryNewExpressionTree = exprTreeCopy;
|
|
49880
|
+
}
|
|
49881
|
+
return exprTreeCopy;
|
|
49882
|
+
}
|
|
49883
|
+
onSelectAllClicked(_event) {
|
|
49884
|
+
if ((this._selectedReturnFields.length > 0 && this._selectedReturnFields.length < this._selectedEntity.fields.length) ||
|
|
49885
|
+
this._selectedReturnFields.length == this._selectedEntity.fields.length) {
|
|
49886
|
+
this.returnFieldsCombo.deselectAllItems();
|
|
49887
|
+
}
|
|
49888
|
+
else {
|
|
49889
|
+
this.returnFieldsCombo.selectAllItems();
|
|
49890
|
+
}
|
|
49891
|
+
}
|
|
49892
|
+
onReturnFieldSelectChanging(event) {
|
|
49893
|
+
let newSelection = [];
|
|
49894
|
+
if (event.newSelection instanceof Array) {
|
|
49895
|
+
newSelection = event.newSelection.map(item => item.field);
|
|
49896
|
+
}
|
|
49897
|
+
else {
|
|
49898
|
+
newSelection.push(event.newSelection.value);
|
|
49899
|
+
this._selectedReturnFields = newSelection;
|
|
49900
|
+
}
|
|
49901
|
+
this.initExpressionTree(this.selectedEntity.name, newSelection);
|
|
49902
|
+
}
|
|
49903
|
+
initExpressionTree(selectedEntityName, selectedReturnFields) {
|
|
49904
|
+
if (!this._expressionTree) {
|
|
49905
|
+
this._expressionTree = this.createExpressionTreeFromGroupItem(new ExpressionGroupItem(FilteringLogic.And, this.rootGroup), selectedEntityName, selectedReturnFields);
|
|
49906
|
+
}
|
|
49907
|
+
if (!this.parentExpression) {
|
|
49908
|
+
this.expressionTreeChange.emit(this._expressionTree);
|
|
49037
49909
|
}
|
|
49038
49910
|
}
|
|
49911
|
+
getSearchValueTemplateContext(defaultSearchValueTemplate) {
|
|
49912
|
+
const ctx = {
|
|
49913
|
+
$implicit: this.searchValue,
|
|
49914
|
+
selectedField: this.selectedField,
|
|
49915
|
+
selectedCondition: this.selectedCondition,
|
|
49916
|
+
defaultSearchValueTemplate: defaultSearchValueTemplate
|
|
49917
|
+
};
|
|
49918
|
+
return ctx;
|
|
49919
|
+
}
|
|
49039
49920
|
setFormat(field) {
|
|
49040
49921
|
if (!field.pipeArgs) {
|
|
49041
49922
|
field.pipeArgs = { digitsInfo: DEFAULT_PIPE_DIGITS_INFO };
|
|
@@ -49073,22 +49954,6 @@ class IgxQueryBuilderComponent {
|
|
|
49073
49954
|
}
|
|
49074
49955
|
}
|
|
49075
49956
|
}
|
|
49076
|
-
onToggleExpression(expressionItem) {
|
|
49077
|
-
this.exitOperandEdit();
|
|
49078
|
-
this.toggleExpression(expressionItem);
|
|
49079
|
-
this.toggleContextMenu();
|
|
49080
|
-
}
|
|
49081
|
-
toggleExpression(expressionItem) {
|
|
49082
|
-
expressionItem.selected = !expressionItem.selected;
|
|
49083
|
-
if (expressionItem.selected) {
|
|
49084
|
-
this.selectedExpressions.push(expressionItem);
|
|
49085
|
-
}
|
|
49086
|
-
else {
|
|
49087
|
-
const index = this.selectedExpressions.indexOf(expressionItem);
|
|
49088
|
-
this.selectedExpressions.splice(index, 1);
|
|
49089
|
-
this.deselectParentRecursive(expressionItem);
|
|
49090
|
-
}
|
|
49091
|
-
}
|
|
49092
49957
|
addGroup(operator, parent, afterExpression) {
|
|
49093
49958
|
this.cancelOperandAdd();
|
|
49094
49959
|
const groupItem = new ExpressionGroupItem(operator, parent);
|
|
@@ -49107,39 +49972,59 @@ class IgxQueryBuilderComponent {
|
|
|
49107
49972
|
this.addCondition(groupItem);
|
|
49108
49973
|
this.currentGroup = groupItem;
|
|
49109
49974
|
}
|
|
49110
|
-
createExpressionGroupItem(expressionTree, parent) {
|
|
49111
|
-
|
|
49112
|
-
|
|
49113
|
-
|
|
49114
|
-
|
|
49115
|
-
|
|
49116
|
-
if (expr instanceof FilteringExpressionsTree) {
|
|
49117
|
-
const childGroup = this.createExpressionGroupItem(expr, groupItem);
|
|
49118
|
-
if (childGroup) {
|
|
49119
|
-
groupItem.children.push(childGroup);
|
|
49120
|
-
}
|
|
49975
|
+
createExpressionGroupItem(expressionTree, parent, entityName) {
|
|
49976
|
+
let groupItem;
|
|
49977
|
+
if (expressionTree) {
|
|
49978
|
+
groupItem = new ExpressionGroupItem(expressionTree.operator, parent);
|
|
49979
|
+
if (!expressionTree.filteringOperands) {
|
|
49980
|
+
return groupItem;
|
|
49121
49981
|
}
|
|
49122
|
-
|
|
49123
|
-
|
|
49124
|
-
|
|
49125
|
-
|
|
49126
|
-
|
|
49982
|
+
for (const expr of expressionTree.filteringOperands) {
|
|
49983
|
+
if (expr instanceof FilteringExpressionsTree) {
|
|
49984
|
+
groupItem.children.push(this.createExpressionGroupItem(expr, groupItem, expressionTree.entity));
|
|
49985
|
+
}
|
|
49986
|
+
else {
|
|
49987
|
+
const filteringExpr = expr;
|
|
49988
|
+
const exprCopy = {
|
|
49989
|
+
fieldName: filteringExpr.fieldName,
|
|
49990
|
+
condition: filteringExpr.condition,
|
|
49991
|
+
conditionName: filteringExpr.condition.name,
|
|
49992
|
+
searchVal: filteringExpr.searchVal,
|
|
49993
|
+
searchTree: filteringExpr.searchTree,
|
|
49994
|
+
ignoreCase: filteringExpr.ignoreCase
|
|
49995
|
+
};
|
|
49127
49996
|
const operandItem = new ExpressionOperandItem(exprCopy, groupItem);
|
|
49128
|
-
|
|
49997
|
+
const field = this.fields?.find(el => el.field === filteringExpr.fieldName);
|
|
49998
|
+
operandItem.fieldLabel = field?.label || field?.header || field?.field;
|
|
49999
|
+
if (this._expandedExpressions.filter(e => e.searchTree == operandItem.expression.searchTree).length > 0) {
|
|
50000
|
+
operandItem.expanded = true;
|
|
50001
|
+
}
|
|
49129
50002
|
groupItem.children.push(operandItem);
|
|
49130
50003
|
}
|
|
49131
50004
|
}
|
|
50005
|
+
if (expressionTree.entity) {
|
|
50006
|
+
entityName = expressionTree.entity;
|
|
50007
|
+
}
|
|
50008
|
+
const entity = this.entities?.find(el => el.name === entityName);
|
|
50009
|
+
if (entity) {
|
|
50010
|
+
this.fields = entity.fields;
|
|
50011
|
+
}
|
|
50012
|
+
this._selectedEntity = this.entities?.find(el => el.name === entityName);
|
|
50013
|
+
this._selectedReturnFields =
|
|
50014
|
+
!expressionTree.returnFields || expressionTree.returnFields.includes('*') || expressionTree.returnFields.includes('All') || expressionTree.returnFields.length === 0
|
|
50015
|
+
? this.fields?.map(f => f.field)
|
|
50016
|
+
: this.fields?.filter(f => expressionTree.returnFields.indexOf(f.field) >= 0).map(f => f.field);
|
|
49132
50017
|
}
|
|
49133
|
-
return groupItem
|
|
50018
|
+
return groupItem;
|
|
49134
50019
|
}
|
|
49135
|
-
createExpressionTreeFromGroupItem(groupItem) {
|
|
50020
|
+
createExpressionTreeFromGroupItem(groupItem, entity, returnFields) {
|
|
49136
50021
|
if (!groupItem) {
|
|
49137
50022
|
return null;
|
|
49138
50023
|
}
|
|
49139
|
-
const expressionTree = new FilteringExpressionsTree(groupItem.operator);
|
|
50024
|
+
const expressionTree = new FilteringExpressionsTree(groupItem.operator, undefined, entity, returnFields);
|
|
49140
50025
|
for (const item of groupItem.children) {
|
|
49141
50026
|
if (item instanceof ExpressionGroupItem) {
|
|
49142
|
-
const subTree = this.createExpressionTreeFromGroupItem(item);
|
|
50027
|
+
const subTree = this.createExpressionTreeFromGroupItem(item, entity, returnFields);
|
|
49143
50028
|
expressionTree.filteringOperands.push(subTree);
|
|
49144
50029
|
}
|
|
49145
50030
|
else {
|
|
@@ -49148,50 +50033,12 @@ class IgxQueryBuilderComponent {
|
|
|
49148
50033
|
}
|
|
49149
50034
|
return expressionTree;
|
|
49150
50035
|
}
|
|
49151
|
-
toggleContextMenu() {
|
|
49152
|
-
const contextualGroup = this.findSingleSelectedGroup();
|
|
49153
|
-
if (contextualGroup || this.selectedExpressions.length > 1) {
|
|
49154
|
-
this.contextualGroup = contextualGroup;
|
|
49155
|
-
if (contextualGroup) {
|
|
49156
|
-
this.filteringLogics = [
|
|
49157
|
-
{
|
|
49158
|
-
label: this.resourceStrings.igx_query_builder_filter_operator_and,
|
|
49159
|
-
selected: contextualGroup.operator === FilteringLogic.And
|
|
49160
|
-
},
|
|
49161
|
-
{
|
|
49162
|
-
label: this.resourceStrings.igx_query_builder_filter_operator_or,
|
|
49163
|
-
selected: contextualGroup.operator === FilteringLogic.Or
|
|
49164
|
-
}
|
|
49165
|
-
];
|
|
49166
|
-
}
|
|
49167
|
-
}
|
|
49168
|
-
else if (this.contextMenuToggle) {
|
|
49169
|
-
this.contextMenuToggle.close();
|
|
49170
|
-
}
|
|
49171
|
-
}
|
|
49172
|
-
findSingleSelectedGroup() {
|
|
49173
|
-
for (const group of this._selectedGroups) {
|
|
49174
|
-
const containsAllSelectedExpressions = this.selectedExpressions.every(op => this.isInsideGroup(op, group));
|
|
49175
|
-
if (containsAllSelectedExpressions) {
|
|
49176
|
-
return group;
|
|
49177
|
-
}
|
|
49178
|
-
}
|
|
49179
|
-
return null;
|
|
49180
|
-
}
|
|
49181
|
-
isInsideGroup(item, group) {
|
|
49182
|
-
if (!item) {
|
|
49183
|
-
return false;
|
|
49184
|
-
}
|
|
49185
|
-
if (item.parent === group) {
|
|
49186
|
-
return true;
|
|
49187
|
-
}
|
|
49188
|
-
return this.isInsideGroup(item.parent, group);
|
|
49189
|
-
}
|
|
49190
50036
|
deleteItem(expressionItem) {
|
|
50037
|
+
//console.log('deleteItem', expressionItem)
|
|
49191
50038
|
if (!expressionItem.parent) {
|
|
49192
50039
|
this.rootGroup = null;
|
|
49193
50040
|
this.currentGroup = null;
|
|
49194
|
-
this._expressionTree = null;
|
|
50041
|
+
//this._expressionTree = null;
|
|
49195
50042
|
return;
|
|
49196
50043
|
}
|
|
49197
50044
|
if (expressionItem === this.currentGroup) {
|
|
@@ -49200,82 +50047,16 @@ class IgxQueryBuilderComponent {
|
|
|
49200
50047
|
const children = expressionItem.parent.children;
|
|
49201
50048
|
const index = children.indexOf(expressionItem);
|
|
49202
50049
|
children.splice(index, 1);
|
|
49203
|
-
|
|
50050
|
+
const entity = this.expressionTree ? this.expressionTree.entity : null;
|
|
50051
|
+
const returnFields = this.expressionTree ? this.expressionTree.returnFields : null;
|
|
50052
|
+
this._expressionTree = this.createExpressionTreeFromGroupItem(this.rootGroup, entity, returnFields); // TODO: don't recreate if not necessary
|
|
49204
50053
|
if (!children.length) {
|
|
49205
50054
|
this.deleteItem(expressionItem.parent);
|
|
49206
50055
|
}
|
|
49207
|
-
this.
|
|
49208
|
-
|
|
49209
|
-
createGroup(operator) {
|
|
49210
|
-
const chips = this.chips.toArray();
|
|
49211
|
-
const minIndex = this.selectedExpressions.reduce((i, e) => Math.min(i, chips.findIndex(c => c.data === e)), Number.MAX_VALUE);
|
|
49212
|
-
const firstExpression = chips[minIndex].data;
|
|
49213
|
-
const parent = firstExpression.parent;
|
|
49214
|
-
const groupItem = new ExpressionGroupItem(operator, parent);
|
|
49215
|
-
const index = parent.children.indexOf(firstExpression);
|
|
49216
|
-
parent.children.splice(index, 0, groupItem);
|
|
49217
|
-
for (const expr of this.selectedExpressions) {
|
|
49218
|
-
groupItem.children.push(expr);
|
|
49219
|
-
this.deleteItem(expr);
|
|
49220
|
-
expr.parent = groupItem;
|
|
49221
|
-
}
|
|
49222
|
-
this.clearSelection();
|
|
49223
|
-
}
|
|
49224
|
-
toggleGroup(groupItem) {
|
|
49225
|
-
this.exitOperandEdit();
|
|
49226
|
-
if (groupItem.children && groupItem.children.length) {
|
|
49227
|
-
this.toggleGroupRecursive(groupItem, !groupItem.selected);
|
|
49228
|
-
if (!groupItem.selected) {
|
|
49229
|
-
this.deselectParentRecursive(groupItem);
|
|
49230
|
-
}
|
|
49231
|
-
this.toggleContextMenu();
|
|
49232
|
-
}
|
|
49233
|
-
}
|
|
49234
|
-
toggleGroupRecursive(groupItem, selected) {
|
|
49235
|
-
if (groupItem.selected !== selected) {
|
|
49236
|
-
groupItem.selected = selected;
|
|
49237
|
-
if (groupItem.selected) {
|
|
49238
|
-
this._selectedGroups.push(groupItem);
|
|
49239
|
-
}
|
|
49240
|
-
else {
|
|
49241
|
-
const index = this._selectedGroups.indexOf(groupItem);
|
|
49242
|
-
this._selectedGroups.splice(index, 1);
|
|
49243
|
-
}
|
|
49244
|
-
}
|
|
49245
|
-
for (const expr of groupItem.children) {
|
|
49246
|
-
if (expr instanceof ExpressionGroupItem) {
|
|
49247
|
-
this.toggleGroupRecursive(expr, selected);
|
|
49248
|
-
}
|
|
49249
|
-
else {
|
|
49250
|
-
const operandExpression = expr;
|
|
49251
|
-
if (operandExpression.selected !== selected) {
|
|
49252
|
-
this.toggleExpression(operandExpression);
|
|
49253
|
-
}
|
|
49254
|
-
}
|
|
49255
|
-
}
|
|
49256
|
-
}
|
|
49257
|
-
deselectParentRecursive(expressionItem) {
|
|
49258
|
-
const parent = expressionItem.parent;
|
|
49259
|
-
if (parent) {
|
|
49260
|
-
if (parent.selected) {
|
|
49261
|
-
parent.selected = false;
|
|
49262
|
-
const index = this._selectedGroups.indexOf(parent);
|
|
49263
|
-
this._selectedGroups.splice(index, 1);
|
|
49264
|
-
}
|
|
49265
|
-
this.deselectParentRecursive(parent);
|
|
50056
|
+
if (!this.parentExpression) {
|
|
50057
|
+
this.expressionTreeChange.emit(this._expressionTree);
|
|
49266
50058
|
}
|
|
49267
50059
|
}
|
|
49268
|
-
calculateContextMenuTarget() {
|
|
49269
|
-
const containerRect = this.expressionsContainer.nativeElement.getBoundingClientRect();
|
|
49270
|
-
const chips = this.chips.filter(c => this.selectedExpressions.indexOf(c.data) !== -1);
|
|
49271
|
-
let minTop = chips.reduce((t, c) => Math.min(t, c.nativeElement.getBoundingClientRect().top), Number.MAX_VALUE);
|
|
49272
|
-
minTop = Math.max(containerRect.top, minTop);
|
|
49273
|
-
minTop = Math.min(containerRect.bottom, minTop);
|
|
49274
|
-
let maxRight = chips.reduce((r, c) => Math.max(r, c.nativeElement.getBoundingClientRect().right), 0);
|
|
49275
|
-
maxRight = Math.max(maxRight, containerRect.left);
|
|
49276
|
-
maxRight = Math.min(maxRight, containerRect.right);
|
|
49277
|
-
this._overlaySettings.target = new Point(maxRight, minTop);
|
|
49278
|
-
}
|
|
49279
50060
|
scrollElementIntoView(target) {
|
|
49280
50061
|
const container = this.expressionsContainer.nativeElement;
|
|
49281
50062
|
const targetOffset = target.offsetTop - container.offsetTop;
|
|
@@ -49287,34 +50068,106 @@ class IgxQueryBuilderComponent {
|
|
|
49287
50068
|
container.scrollTop = targetOffset + target.offsetHeight + delta - container.clientHeight;
|
|
49288
50069
|
}
|
|
49289
50070
|
}
|
|
50071
|
+
focusEditedExpressionChip() {
|
|
50072
|
+
if (this._timeoutId) {
|
|
50073
|
+
clearTimeout(this._timeoutId);
|
|
50074
|
+
}
|
|
50075
|
+
this._timeoutId = setTimeout(() => {
|
|
50076
|
+
if (this._lastFocusedChipIndex != -1) {
|
|
50077
|
+
const chipElement = this.expressionsChips.toArray()[this._lastFocusedChipIndex].nativeElement;
|
|
50078
|
+
chipElement.focus();
|
|
50079
|
+
this._lastFocusedChipIndex = -1;
|
|
50080
|
+
this._focusDelay = DEFAULT_CHIP_FOCUS_DELAY;
|
|
50081
|
+
}
|
|
50082
|
+
}, this._focusDelay);
|
|
50083
|
+
}
|
|
49290
50084
|
init() {
|
|
49291
|
-
this.clearSelection();
|
|
49292
50085
|
this.cancelOperandAdd();
|
|
49293
50086
|
this.cancelOperandEdit();
|
|
49294
|
-
|
|
49295
|
-
|
|
49296
|
-
|
|
49297
|
-
|
|
49298
|
-
|
|
49299
|
-
|
|
49300
|
-
|
|
49301
|
-
|
|
50087
|
+
// Ignore values of certain properties for the comparison
|
|
50088
|
+
const propsToIgnore = ['parent', 'hovered', 'ignoreCase', 'inEditMode', 'inAddMode'];
|
|
50089
|
+
const propsReplacer = function replacer(key, value) {
|
|
50090
|
+
if (propsToIgnore.indexOf(key) >= 0) {
|
|
50091
|
+
return undefined;
|
|
50092
|
+
}
|
|
50093
|
+
else {
|
|
50094
|
+
return value;
|
|
50095
|
+
}
|
|
50096
|
+
};
|
|
50097
|
+
// Skip root being recreated if the same
|
|
50098
|
+
const newRootGroup = this.createExpressionGroupItem(this.expressionTree);
|
|
50099
|
+
if (JSON.stringify(this.rootGroup, propsReplacer) !== JSON.stringify(newRootGroup, propsReplacer)) {
|
|
50100
|
+
this.rootGroup = this.createExpressionGroupItem(this.expressionTree);
|
|
50101
|
+
this.currentGroup = this.rootGroup;
|
|
50102
|
+
}
|
|
50103
|
+
if (this.rootGroup?.children?.length == 0) {
|
|
50104
|
+
this.rootGroup = null;
|
|
50105
|
+
this.currentGroup = null;
|
|
50106
|
+
}
|
|
49302
50107
|
}
|
|
49303
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type:
|
|
49304
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", 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 }], ngImport: i0, template: "<ng-template #addIcon>\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n</ng-template>\n\n<ng-template #closeIcon>\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n</ng-template>\n\n<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [resourceStrings]=\"this.resourceStrings\"\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 (click)=\"addAndGroup()\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n (click)=\"addOrGroup()\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\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 [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition\n }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\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 [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=\"default\"\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 <button\n igxIconButton=\"flat\"\n aria-labelledby=\"edit-expression\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\"\n >\n <igx-icon id=\"edit-expression\" [attr.aria-hidden]=\"true\">edit</igx-icon>\n </button>\n\n <button\n igxIconButton=\"flat\"\n aria-labelledby=\"add-expression\"\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 <igx-icon id=\"add-expression\">add</igx-icon>\n </button>\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 [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 [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=\"default\"\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=\"default\"\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 >\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 [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 [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 [displayFormat]=\"selectedField.pipeArgs.format\"\n [inputFormat]=\"selectedField.editorOptions?.dateTimeFormat\"\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 type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n type=\"box\"\n >\n <input\n #input\n #searchValueInput\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 [locale]=\"this.locale\"\n [igxDateTimeEditor]=\"selectedField.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"selectedField.dataType\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n />\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"flat\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\"\n >\n <igx-icon family=\"default\" name=\"confirm\"></igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"cancelOperandEdit()\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\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 (click)=\"cancelOperandAdd()\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\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 [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 >\n <button type=\"button\"\n igxIconButton=\"flat\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\"\n >\n </igx-buttongroup>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"default\" 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 (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon family=\"default\" name=\"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 (click)=\"createAndGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_and_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n (click)=\"createOrGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_or_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\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", "name", "active"] }, { 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", "defaultFormatType", "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"] }] }); }
|
|
50108
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderTreeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: PlatformUtil }, { token: i0.ElementRef }, { token: i0.ElementRef }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: IgxQueryBuilderTreeComponent, isStandalone: true, selector: "igx-query-builder-tree", inputs: { entities: "entities", queryBuilder: "queryBuilder", searchValueTemplate: "searchValueTemplate", parentExpression: "parentExpression", fields: "fields", expressionTree: "expressionTree", locale: "locale", resourceStrings: "resourceStrings" }, outputs: { expressionTreeChange: "expressionTreeChange", inEditModeChange: "inEditModeChange" }, host: { properties: { "class": "this.getClass" }, classAttribute: "igx-query-builder-tree" }, queries: [{ propertyName: "headerContent", first: true, predicate: IgxQueryBuilderHeaderComponent, descendants: true }], viewQueries: [{ propertyName: "entitySelect", first: true, predicate: ["entitySelect"], descendants: true, read: IgxSelectComponent }, { propertyName: "returnFieldsCombo", first: true, predicate: ["returnFieldsCombo"], descendants: true, read: IgxComboComponent }, { propertyName: "returnFieldSelect", first: true, predicate: ["returnFieldSelect"], descendants: true, read: IgxSelectComponent }, { 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: "entityChangeDialog", first: true, predicate: ["entityChangeDialog"], descendants: true, read: IgxDialogComponent }, { propertyName: "addExpressionItemDropDown", first: true, predicate: ["addOptionsDropDown"], descendants: true, read: IgxDropDownComponent }, { propertyName: "groupContextMenuDropDown", first: true, predicate: ["groupContextMenuDropDown"], descendants: true, read: IgxDropDownComponent }, { propertyName: "editingInputsContainer", first: true, predicate: ["editingInputsContainer"], descendants: true, read: ElementRef }, { propertyName: "currentGroupButtonsContainer", first: true, predicate: ["currentGroupButtonsContainer"], descendants: true, read: ElementRef }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true }, { propertyName: "overlayOutlet", first: true, predicate: ["overlayOutlet"], descendants: true, read: IgxOverlayOutletDirective, static: true }, { propertyName: "expressionsChips", predicate: IgxChipComponent, descendants: true, read: IgxChipComponent }, { propertyName: "innerQueries", predicate: IgxQueryBuilderTreeComponent, descendants: true }], ngImport: i0, template: "<ng-template #addIcon>\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n</ng-template>\n\n<ng-template #closeIcon>\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n</ng-template>\n\n<ng-template #selectFromTemplate>\n <div class=\"igx-filter-tree__inputs\" [style.display]=\"(isInEditMode() && !this.isAdvancedFiltering()) ? 'flex' : 'none'\">\n <div class=\"igx-filter-tree__inputs-field\">\n <span class=\"igx-query-builder__label\">From</span>\n <igx-select #entitySelect\n type=\"box\"\n (selectionChanging)=\"onEntitySelectChanging($event)\"\n (opening)=\"exitEditAddMode(true)\"\n [overlaySettings]=\"entitySelectOverlaySettings\"\n [ngModel]=\"selectedEntity\"\n [style.display]=\"isInEditMode() ? 'block' : 'none'\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_select_entity\"\n [disabled]=\"disableEntityChange\"\n >\n <igx-select-item *ngFor=\"let entity of entities\" [value]=\"entity\">\n {{entity.name}}\n </igx-select-item>\n </igx-select>\n </div>\n\n <div class=\"igx-filter-tree__inputs-field\">\n <span class=\"igx-query-builder__label\">Select</span>\n @if(!parentExpression) {\n <igx-combo\n #returnFieldsCombo\n [itemsMaxHeight]=\"250\"\n [data]=\"fields\"\n [displayKey]=\"'field'\"\n [valueKey]=\"'field'\"\n [disabled]=\"!selectedEntity\"\n [(ngModel)]=\"selectedReturnFields\"\n [overlaySettings]=\"returnFieldSelectOverlaySettings\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_select_return_fields\"\n searchPlaceholder=\"{{ this.resourceStrings.igx_query_builder_search }}\"\n [style.display]=\"isInEditMode() ? 'block' : 'none'\"\n (selectionChanging)=\"onReturnFieldSelectChanging($event)\"\n (opening)=\"exitEditAddMode()\"\n >\n <ng-template igxComboHeader>\n <div\n class=\"igx-drop-down__item igx-drop-down__item--query-builder\"\n (click)=\"onSelectAllClicked($event)\"\n [ngClass]=\"{'igx-drop-down__item--selected': this.selectedEntity && this.selectedReturnFields && this.selectedEntity.fields.length === this.selectedReturnFields.length}\"\n >\n <igx-checkbox\n [checked]=\"this.selectedEntity && this.selectedReturnFields && this.selectedEntity.fields.length === this.selectedReturnFields.length\"\n [indeterminate]=\"this.selectedEntity && this.selectedReturnFields && this.selectedReturnFields.length > 0 && this.selectedReturnFields.length < this.selectedEntity.fields?.length\"\n [readonly]=\"true\"\n [disableRipple]=\"true\"\n [tabindex]=\"-1\"\n class=\"igx-combo__checkbox\">\n </igx-checkbox>\n <div class=\"igx-drop-down__inner\">\n {{ this.resourceStrings.igx_query_builder_select_all }}\n </div>\n </div>\n </ng-template>\n </igx-combo>\n }\n @else {\n <igx-select #returnFieldSelect\n type=\"box\"\n (selectionChanging)=\"onReturnFieldSelectChanging($event)\"\n [overlaySettings]=\"returnFieldSelectOverlaySettings\"\n [disabled]=\"!selectedEntity\"\n [ngModel]=\"selectedReturnFields[0]\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_select_return_field_single\"\n [style.display]=\"isInEditMode() ? 'block' : 'none'\"\n (opening)=\"exitEditAddMode()\"\n >\n <igx-select-item *ngFor=\"let field of fields\" [value]=\"field.field\">\n {{ field.field }}\n </igx-select-item>\n </igx-select>\n }\n </div>\n </div>\n</ng-template>\n\n<div\n #expressionsContainer\n class=\"igx-query-builder__main\"\n>\n <ng-container *ngTemplateOutlet=\"selectFromTemplate\"></ng-container>\n\n <ng-template #addExpressionsTemplate let-expressionItem let-afterExpression=\"afterExpression\">\n <button type=\"button\"\n #addConditionButton\n igxButton=\"flat\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression, true)\"\n igxDrop\n (enter)=\"onAddConditionEnter(addConditionButton, expressionItem)\"\n (leave)=\"onChipLeave()\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition_root\n }}</span>\n </button>\n\n @if(this.rootGroup) {\n <button type=\"button\"\n igxButton=\"flat\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addReverseGroup(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{ this.resourceStrings.igx_query_builder_add_group_root }}</span>\n </button>\n }\n </ng-template>\n\n <ng-template #operandTemplate let-expressionItem>\n <div\n #dragRef\n igxDrop\n (enter)=\"onChipEnter(dragRef, expressionItem, true)\"\n (over)=\"onDivOver(dragRef, expressionItem)\"\n (leave)=\"onChipLeave()\"\n (dropped)=\"onDivDropped(expressionItem)\"\n *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n (focusin)=\"onExpressionFocus(expressionItem)\"\n (focusout)=\"onExpressionBlur($event, expressionItem)\"\n >\n <igx-chip\n #expressionChip\n [draggable]=\"canBeDragged()\"\n [hideBaseOnDrag] = \"false\"\n [animateOnRelease] = \"false\"\n (moveStart)=\"canBeDragged() ? onMoveStart(dragRef, expressionItem, false): null\"\n (moveEnd)=\"onMoveEnd()\"\n (dragEnter)=\"onChipEnter(dragRef, expressionItem, false)\"\n (dragOver)=\"onChipOver(dragRef, false)\"\n (dragLeave)=\"onChipLeave()\"\n (dragDrop)=\"onChipDropped()\"\n #target=\"tooltipTarget\"\n [igxTooltipTarget]=\"tooltipRef\"\n [data]=\"expressionItem\"\n [removable]=\"isInEditMode() ? 'true' : 'false'\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem, expressionChip)\"\n (remove)=\"onChipRemove(expressionItem)\"\n\n >\n <igx-icon igxPrefix\n class=\"igx-drag-indicator\"\n tabindex=\"0\"\n (focus)=\"onChipDragIndicatorFocus(dragRef, expressionItem)\"\n (focusout)=\"onChipDragIndicatorFocusOut()\"\n >\n drag_indicator\n </igx-icon>\n <span igxPrefix class=\"igx-filter-tree__expression-column\">\n {{expressionItem.fieldLabel || expressionItem.expression.fieldName}}\n </span>\n <span igxPrefix class=\"igx-filter-tree__expression-condition\">\n {{\n getConditionFriendlyName(\n expressionItem.expression.condition?.name\n )\n }}\n </span>\n <span *ngIf=\"!expressionItem.expression.condition?.isUnary\">\n <ng-container *ngIf=\"expressionItem.expression.searchTree\">\n <strong>{{expressionItem.expression.searchTree.entity}}</strong> / {{formatReturnFields(expressionItem.expression.searchTree)}}\n </ng-container>\n\n <ng-container *ngIf=\"!expressionItem.expression.searchTree\">\n @if(isDate(expressionItem.expression.searchVal)) {\n @if(getFormatter(expressionItem.expression.fieldName)) {\n {{\n expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(\n expressionItem.expression.fieldName\n )\n : undefined\n }}\n } @else {\n {{\n expressionItem.expression.searchVal\n | date\n : getFormat(\n expressionItem.expression.fieldName\n )\n : undefined\n : this.locale\n }}\n }\n } @else {\n @if(getFormatter(expressionItem.expression.fieldName)) {\n {{\n expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(expressionItem.expression.fieldName)\n : (expressionItem.expression.conditionName || expressionItem.expression.condition?.name)\n }}\n } @else {\n {{ expressionItem.expression.searchVal }}\n }\n }\n </ng-container>\n </span>\n </igx-chip>\n <div #tooltipRef=\"tooltip\" igxTooltip>\n @if(expressionItem.expression.searchTree){\n {{expressionItem.expression.searchTree.returnFields.join(', ')}}\n } @else if (expressionItem.expression.condition?.isUnary) {\n {{getConditionFriendlyName(expressionItem.expression.condition?.name)}}\n } @else {\n @if(getFormatter(expressionItem.expression.fieldName)) {\n {{\n expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(expressionItem.expression.fieldName)\n : (expressionItem.expression.conditionName || expressionItem.expression.condition?.name)\n }}\n } @else {\n {{ expressionItem.expression.searchVal }}\n }\n }\n </div>\n\n @if((expressionItem.focused || expressionItem.hovered) && !expressionItem.inAddMode) {\n <div igxDragIgnore class=\"igx-filter-tree__expression-actions\">\n <button #addExpressionButton igxDragIgnore igxIconButton=\"outlined\" [igxDropDownItemNavigation]=\"addOptionsDropDown\"\n aria-labelledby=\"add-expression\" (keydown)=\"invokeClick($event)\"\n (click)=\"clickExpressionAdd(addExpressionButton, expressionChip)\"\n (blur)=\"addExpressionBlur()\">\n <igx-icon id=\"add-expression\">add</igx-icon>\n </button>\n <igx-drop-down #addOptionsDropDown\n (selectionChanging)=\"enterExpressionAdd($event, expressionItem)\">\n <igx-drop-down-item [value]=\"'addCondition'\">\n <span>{{this.resourceStrings.igx_query_builder_add_condition}}</span>\n </igx-drop-down-item>\n <igx-drop-down-item [value]=\"'addGroup'\">\n <span>{{this.resourceStrings.igx_query_builder_add_group}}</span>\n </igx-drop-down-item>\n </igx-drop-down>\n </div>\n }\n </div>\n\n <div #editingInputsContainer class=\"igx-filter-tree__subquery\" >\n <div\n igxDrop\n (enter)=\"onChipEnter(editingInputsContainer, expressionItem, true)\"\n (over)=\"onDivOver(editingInputsContainer, expressionItem)\"\n (leave)=\"onChipLeave()\"\n (dropped)=\"onDivDropped(expressionItem)\"\n *ngIf=\"expressionItem.inEditMode\"\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select\n #fieldSelect\n type=\"box\"\n [overlaySettings]=\"fieldSelectOverlaySettings\"\n [(ngModel)]=\"selectedField\"\n [disabled]=\"!fields\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_column_placeholder\"\n >\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 [overlaySettings]=\"conditionSelectOverlaySettings\"\n [(ngModel)]=\"selectedCondition\"\n (selectionChanging)=\"onConditionSelectChanging($event)\"\n [disabled]=\"!selectedField\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_condition_placeholder\"\n >\n <igx-prefix\n *ngIf=\"\n selectedField &&\n conditionSelect.value &&\n selectedField.filters.condition(conditionSelect.value)\n \"\n >\n <igx-icon\n family=\"default\"\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=\"default\"\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 <ng-container\n *ngTemplateOutlet=\"\n searchValueTemplate ? searchValueTemplate : defaultSearchValueTemplate;\n context: getSearchValueTemplateContext(defaultSearchValueTemplate)\n \"\n >\n </ng-container>\n\n <ng-template #defaultSearchValueTemplate>\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 >\n\n <input\n #searchValueInput\n igxInput\n [disabled]=\"isSearchValueInputDisabled()\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_value_placeholder\"\n [type]=\"\n selectedField && selectedField.dataType === 'number'\n ? 'number'\n : 'text'\n \"\n [(ngModel)]=\"searchValue.value\"\n />\n </igx-input-group>\n\n <igx-date-picker\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'date'\"\n [(value)]=\"searchValue.value\"\n (keydown)=\"openPicker($event)\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"isSearchValueInputDisabled()\"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [weekStart]=\"selectedField.pipeArgs.weekStart\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_date_placeholder\"\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.value\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"isSearchValueInputDisabled()\"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [inputFormat]=\"selectedField.editorOptions?.dateTimeFormat\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_time_placeholder\"\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 type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n >\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_datetime_placeholder\"\n [(ngModel)]=\"searchValue.value\"\n [disabled]=\"isSearchValueInputDisabled()\"\n [locale]=\"this.locale\"\n [igxDateTimeEditor]=\"selectedField.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"selectedField.dataType\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n />\n </igx-input-group>\n </ng-template>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"outlined\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitExpression()\"\n >\n <igx-icon family=\"default\" name=\"confirm\"></igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"outlined\"\n (click)=\"discardExpression(expressionItem)\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"\n (!expressionItem.inEditMode && expressionItem.expression.searchTree && expressionItem.expression.searchTree.filteringOperands?.length > 0) ||\n (expressionItem.inEditMode && selectedField?.filters?.condition(selectedCondition)?.isNestedQuery)\">\n <igx-query-builder-tree\n [style.display]=\"expressionItem.inEditMode || expressionItem.expanded ? 'block' : 'none'\"\n [entities]=\"entities\"\n [queryBuilder]=\"this.queryBuilder\"\n [parentExpression]=\"expressionItem\"\n [expressionTree]=\"expressionItem.inEditMode ? (innerQueryNewExpressionTree ?? getExpressionTreeCopy(expressionItem.expression.searchTree, true)) : expressionItem.expression.searchTree\"\n (inEditModeChange)=\"onInEditModeChanged($event)\"\n [searchValueTemplate]=\"searchValueTemplate\">\n </igx-query-builder-tree>\n </ng-container>\n </div>\n </ng-template>\n\n <ng-template #expressionGroupTemplate let-expressionItem>\n <div class=\"igx-filter-tree\"\n (focusout)=\"parentExpression? null : onDragFocusOut()\">\n <div\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': getOperator(expressionItem) === 0,\n 'igx-filter-tree__line--or': getOperator(expressionItem) === 1\n }\"\n ></div>\n\n <div class=\"igx-filter-tree__expressions\">\n <div class=\"igx-filter-tree__expression-context-menu\"\n #groupRef\n igxDrop\n (enter)=\"onGroupRootOver(groupRef, expressionItem)\"\n (over)=\"onGroupRootOver(groupRef, expressionItem)\"\n (leave)=\"onChipLeave()\"\n >\n <button #changeGroupButton\n [ngClass]=\"{\n 'igx-filter-tree__button--and': getOperator(expressionItem) === 0,\n 'igx-filter-tree__button--or': getOperator(expressionItem) === 1\n }\"\n [igxDropDownItemNavigation]=\"groupContextMenuDropDown\"\n igxDragIgnore\n igxButton=\"flat\"\n aria-labelledby=\"change-group\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(groupContextMenuDropDown, changeGroupButton, expressionItem)\"\n >\n <span\n igxDrop\n (enter)=\"onGroupRootOver(groupRef, expressionItem)\"\n (over)=\"onGroupRootOver(groupRef, expressionItem)\"\n (leave)=\"onChipLeave()\"\n >\n {{getOperator(expressionItem) === 0 ? this.resourceStrings.igx_query_builder_and_label : this.resourceStrings.igx_query_builder_or_label}}\n </span>\n <igx-icon family=\"default\" name=\"arrow_drop_down\" role=\"button\"></igx-icon>\n </button>\n <igx-drop-down #groupContextMenuDropDown\n (selectionChanging)=\"onGroupContextMenuDropDownSelectionChanging($event)\"\n [width]=\"'fit-content'\">\n <igx-drop-down-item [value]=\"'switchCondition'\"\n >\n {{getSwitchGroupText(expressionItem)}}\n </igx-drop-down-item>\n <igx-drop-down-item [value]=\"'ungroup'\"\n [disabled]=\"this.rootGroup === this.contextualGroup\"\n >\n {{this.resourceStrings.igx_query_builder_ungroup}}\n </igx-drop-down-item>\n </igx-drop-down>\n </div>\n <div class=\"igx-filter-tree__expression-section\">\n <ng-container *ngFor=\"let expr of expressionItem?.children\">\n <ng-container\n *ngTemplateOutlet=\"\n isExpressionGroup(expr)\n ? expressionGroupTemplate\n : operandTemplate;\n context: context(expr)\n \"\n >\n </ng-container>\n </ng-container>\n </div>\n <div\n *ngIf=\"expressionItem === rootGroup && !hasEditedExpression\"\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 </div>\n </div>\n </div>\n </ng-template>\n\n <div class=\"igx-filter-tree__section\" *ngIf=\"rootGroup || (!rootGroup && (selectedEntity || (entities?.length === 1 && !entities[0]?.name)))\">\n @if(!this.isAdvancedFiltering()) {\n <span class=\"igx-query-builder__label\">Where</span>\n }\n <ng-container\n *ngTemplateOutlet=\"\n expressionGroupTemplate;\n context: context(rootGroup)\n \"\n ></ng-container>\n </div>\n</div>\n\n<div\n #overlayOutlet\n igxOverlayOutlet\n class=\"igx-query-builder__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n\n<igx-dialog\n #entityChangeDialog\n title=\"{{ this.resourceStrings.igx_query_builder_dialog_title }}\"\n leftButtonLabel=\"{{ this.resourceStrings.igx_query_builder_dialog_cancel }}\"\n rightButtonLabel=\"{{ this.resourceStrings.igx_query_builder_dialog_confirm }}\"\n (leftButtonSelect)=\"onEntityChangeCancel()\"\n (rightButtonSelect)=\"onEntityChangeConfirm()\">\n <section class=\"igx-query-builder-dialog\">\n <p>{{ this.resourceStrings.igx_query_builder_dialog_message }}</p>\n <igx-checkbox\n (change)=\"onShowEntityChangeDialogChange($event)\"\n [disableRipple]=\"true\"\n [tabindex]=\"-1\">\n {{ this.resourceStrings.igx_query_builder_dialog_checkbox_text }}\n </igx-checkbox>\n </section>\n</igx-dialog>\n", dependencies: [{ kind: "component", type: IgxQueryBuilderTreeComponent, selector: "igx-query-builder-tree", inputs: ["entities", "queryBuilder", "searchValueTemplate", "parentExpression", "fields", "expressionTree", "locale", "resourceStrings"], outputs: ["expressionTreeChange", "inEditModeChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { 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: "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", "defaultFormatType", "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: 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"] }, { kind: "component", type: IgxComboComponent, selector: "igx-combo", inputs: ["autoFocusSearch", "disableFiltering", "searchPlaceholder"], outputs: ["selectionChanging"] }, { kind: "directive", type: IgxComboHeaderDirective, selector: "[igxComboHeader]" }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "component", type: IgxDialogComponent, selector: "igx-dialog", inputs: ["id", "isModal", "closeOnEscape", "focusTrap", "title", "message", "leftButtonLabel", "leftButtonType", "leftButtonRipple", "rightButtonLabel", "rightButtonType", "rightButtonRipple", "closeOnOutsideSelect", "positionSettings", "isOpen", "role", "titleId"], outputs: ["opening", "opened", "closing", "closed", "leftButtonSelect", "rightButtonSelect", "isOpenChange"] }, { kind: "directive", type: IgxTooltipTargetDirective, selector: "[igxTooltipTarget]", inputs: ["showDelay", "hideDelay", "tooltipDisabled", "igxTooltipTarget", "tooltip"], outputs: ["tooltipShow", "tooltipHide"], exportAs: ["tooltipTarget"] }, { kind: "directive", type: IgxTooltipDirective, selector: "[igxTooltip]", inputs: ["context", "id"], exportAs: ["tooltip"] }, { kind: "directive", type: IgxDragIgnoreDirective, selector: "[igxDragIgnore]" }, { kind: "directive", type: IgxDropDirective, selector: "[igxDrop]", inputs: ["igxDrop", "dropChannel", "dropStrategy"], outputs: ["enter", "over", "leave", "dropped"], exportAs: ["drop"] }, { kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }] }); }
|
|
49305
50110
|
}
|
|
49306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type:
|
|
50111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderTreeComponent, decorators: [{
|
|
49307
50112
|
type: Component,
|
|
49308
|
-
args: [{ selector: 'igx-query-builder', 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: "<ng-template #addIcon>\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n</ng-template>\n\n<ng-template #closeIcon>\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n</ng-template>\n\n<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [resourceStrings]=\"this.resourceStrings\"\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 (click)=\"addAndGroup()\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n (click)=\"addOrGroup()\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\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 [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition\n }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{ this.resourceStrings.igx_query_builder_and_group }}</span>\n </button>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\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 [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=\"default\"\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 <button\n igxIconButton=\"flat\"\n aria-labelledby=\"edit-expression\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\"\n >\n <igx-icon id=\"edit-expression\" [attr.aria-hidden]=\"true\">edit</igx-icon>\n </button>\n\n <button\n igxIconButton=\"flat\"\n aria-labelledby=\"add-expression\"\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 <igx-icon id=\"add-expression\">add</igx-icon>\n </button>\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 [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 [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=\"default\"\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=\"default\"\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 >\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 [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 [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 [displayFormat]=\"selectedField.pipeArgs.format\"\n [inputFormat]=\"selectedField.editorOptions?.dateTimeFormat\"\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 type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n type=\"box\"\n >\n <input\n #input\n #searchValueInput\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 [locale]=\"this.locale\"\n [igxDateTimeEditor]=\"selectedField.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"selectedField.dataType\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n />\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"flat\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\"\n >\n <igx-icon family=\"default\" name=\"confirm\"></igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"cancelOperandEdit()\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\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 (click)=\"cancelOperandAdd()\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\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 [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 >\n <button type=\"button\"\n igxIconButton=\"flat\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\"\n >\n </igx-buttongroup>\n\n <button type=\"button\"\n igxButton=\"outlined\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"default\" 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 (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon family=\"default\" name=\"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 (click)=\"createAndGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_and_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\n (click)=\"createOrGroup()\"\n >\n {{ this.resourceStrings.igx_query_builder_create_or_group }}\n </button>\n <button type=\"button\"\n igxButton=\"outlined\"\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" }]
|
|
49309
|
-
|
|
50113
|
+
args: [{ selector: 'igx-query-builder-tree', host: { 'class': 'igx-query-builder-tree' }, standalone: true, imports: [
|
|
50114
|
+
NgIf,
|
|
50115
|
+
IgxQueryBuilderHeaderComponent,
|
|
50116
|
+
IgxButtonDirective,
|
|
50117
|
+
IgxIconComponent,
|
|
50118
|
+
IgxChipComponent,
|
|
50119
|
+
IgxPrefixDirective,
|
|
50120
|
+
IgxSuffixDirective,
|
|
50121
|
+
IgxSelectComponent,
|
|
50122
|
+
FormsModule,
|
|
50123
|
+
NgFor,
|
|
50124
|
+
IgxSelectItemComponent,
|
|
50125
|
+
IgxInputGroupComponent,
|
|
50126
|
+
IgxInputDirective,
|
|
50127
|
+
IgxDatePickerComponent,
|
|
50128
|
+
IgxPickerToggleComponent,
|
|
50129
|
+
IgxPickerClearComponent,
|
|
50130
|
+
IgxTimePickerComponent,
|
|
50131
|
+
IgxDateTimeEditorDirective,
|
|
50132
|
+
NgTemplateOutlet,
|
|
50133
|
+
NgClass,
|
|
50134
|
+
IgxToggleDirective,
|
|
50135
|
+
IgxButtonGroupComponent,
|
|
50136
|
+
IgxOverlayOutletDirective,
|
|
50137
|
+
DatePipe,
|
|
50138
|
+
IgxFieldFormatterPipe,
|
|
50139
|
+
IgxIconButtonDirective,
|
|
50140
|
+
IgxToggleActionDirective,
|
|
50141
|
+
IgxComboComponent,
|
|
50142
|
+
IgxLabelDirective,
|
|
50143
|
+
IgxComboHeaderDirective,
|
|
50144
|
+
IgxCheckboxComponent,
|
|
50145
|
+
IgxDialogComponent,
|
|
50146
|
+
IgxTooltipTargetDirective,
|
|
50147
|
+
IgxTooltipDirective,
|
|
50148
|
+
IgxChipsAreaComponent,
|
|
50149
|
+
IgxDragDirective,
|
|
50150
|
+
IgxDragIgnoreDirective,
|
|
50151
|
+
IgxDragHandleDirective,
|
|
50152
|
+
IgxDropDirective,
|
|
50153
|
+
IgxDropDownComponent,
|
|
50154
|
+
IgxDropDownItemComponent,
|
|
50155
|
+
IgxDropDownItemNavigationDirective
|
|
50156
|
+
], template: "<ng-template #addIcon>\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n</ng-template>\n\n<ng-template #closeIcon>\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n</ng-template>\n\n<ng-template #selectFromTemplate>\n <div class=\"igx-filter-tree__inputs\" [style.display]=\"(isInEditMode() && !this.isAdvancedFiltering()) ? 'flex' : 'none'\">\n <div class=\"igx-filter-tree__inputs-field\">\n <span class=\"igx-query-builder__label\">From</span>\n <igx-select #entitySelect\n type=\"box\"\n (selectionChanging)=\"onEntitySelectChanging($event)\"\n (opening)=\"exitEditAddMode(true)\"\n [overlaySettings]=\"entitySelectOverlaySettings\"\n [ngModel]=\"selectedEntity\"\n [style.display]=\"isInEditMode() ? 'block' : 'none'\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_select_entity\"\n [disabled]=\"disableEntityChange\"\n >\n <igx-select-item *ngFor=\"let entity of entities\" [value]=\"entity\">\n {{entity.name}}\n </igx-select-item>\n </igx-select>\n </div>\n\n <div class=\"igx-filter-tree__inputs-field\">\n <span class=\"igx-query-builder__label\">Select</span>\n @if(!parentExpression) {\n <igx-combo\n #returnFieldsCombo\n [itemsMaxHeight]=\"250\"\n [data]=\"fields\"\n [displayKey]=\"'field'\"\n [valueKey]=\"'field'\"\n [disabled]=\"!selectedEntity\"\n [(ngModel)]=\"selectedReturnFields\"\n [overlaySettings]=\"returnFieldSelectOverlaySettings\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_select_return_fields\"\n searchPlaceholder=\"{{ this.resourceStrings.igx_query_builder_search }}\"\n [style.display]=\"isInEditMode() ? 'block' : 'none'\"\n (selectionChanging)=\"onReturnFieldSelectChanging($event)\"\n (opening)=\"exitEditAddMode()\"\n >\n <ng-template igxComboHeader>\n <div\n class=\"igx-drop-down__item igx-drop-down__item--query-builder\"\n (click)=\"onSelectAllClicked($event)\"\n [ngClass]=\"{'igx-drop-down__item--selected': this.selectedEntity && this.selectedReturnFields && this.selectedEntity.fields.length === this.selectedReturnFields.length}\"\n >\n <igx-checkbox\n [checked]=\"this.selectedEntity && this.selectedReturnFields && this.selectedEntity.fields.length === this.selectedReturnFields.length\"\n [indeterminate]=\"this.selectedEntity && this.selectedReturnFields && this.selectedReturnFields.length > 0 && this.selectedReturnFields.length < this.selectedEntity.fields?.length\"\n [readonly]=\"true\"\n [disableRipple]=\"true\"\n [tabindex]=\"-1\"\n class=\"igx-combo__checkbox\">\n </igx-checkbox>\n <div class=\"igx-drop-down__inner\">\n {{ this.resourceStrings.igx_query_builder_select_all }}\n </div>\n </div>\n </ng-template>\n </igx-combo>\n }\n @else {\n <igx-select #returnFieldSelect\n type=\"box\"\n (selectionChanging)=\"onReturnFieldSelectChanging($event)\"\n [overlaySettings]=\"returnFieldSelectOverlaySettings\"\n [disabled]=\"!selectedEntity\"\n [ngModel]=\"selectedReturnFields[0]\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_select_return_field_single\"\n [style.display]=\"isInEditMode() ? 'block' : 'none'\"\n (opening)=\"exitEditAddMode()\"\n >\n <igx-select-item *ngFor=\"let field of fields\" [value]=\"field.field\">\n {{ field.field }}\n </igx-select-item>\n </igx-select>\n }\n </div>\n </div>\n</ng-template>\n\n<div\n #expressionsContainer\n class=\"igx-query-builder__main\"\n>\n <ng-container *ngTemplateOutlet=\"selectFromTemplate\"></ng-container>\n\n <ng-template #addExpressionsTemplate let-expressionItem let-afterExpression=\"afterExpression\">\n <button type=\"button\"\n #addConditionButton\n igxButton=\"flat\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression, true)\"\n igxDrop\n (enter)=\"onAddConditionEnter(addConditionButton, expressionItem)\"\n (leave)=\"onChipLeave()\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{\n this.resourceStrings.igx_query_builder_add_condition_root\n }}</span>\n </button>\n\n @if(this.rootGroup) {\n <button type=\"button\"\n igxButton=\"flat\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addReverseGroup(expressionItem, afterExpression)\"\n >\n <ng-container *ngTemplateOutlet=\"addIcon\"></ng-container>\n <span>{{ this.resourceStrings.igx_query_builder_add_group_root }}</span>\n </button>\n }\n </ng-template>\n\n <ng-template #operandTemplate let-expressionItem>\n <div\n #dragRef\n igxDrop\n (enter)=\"onChipEnter(dragRef, expressionItem, true)\"\n (over)=\"onDivOver(dragRef, expressionItem)\"\n (leave)=\"onChipLeave()\"\n (dropped)=\"onDivDropped(expressionItem)\"\n *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n (focusin)=\"onExpressionFocus(expressionItem)\"\n (focusout)=\"onExpressionBlur($event, expressionItem)\"\n >\n <igx-chip\n #expressionChip\n [draggable]=\"canBeDragged()\"\n [hideBaseOnDrag] = \"false\"\n [animateOnRelease] = \"false\"\n (moveStart)=\"canBeDragged() ? onMoveStart(dragRef, expressionItem, false): null\"\n (moveEnd)=\"onMoveEnd()\"\n (dragEnter)=\"onChipEnter(dragRef, expressionItem, false)\"\n (dragOver)=\"onChipOver(dragRef, false)\"\n (dragLeave)=\"onChipLeave()\"\n (dragDrop)=\"onChipDropped()\"\n #target=\"tooltipTarget\"\n [igxTooltipTarget]=\"tooltipRef\"\n [data]=\"expressionItem\"\n [removable]=\"isInEditMode() ? 'true' : 'false'\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem, expressionChip)\"\n (remove)=\"onChipRemove(expressionItem)\"\n\n >\n <igx-icon igxPrefix\n class=\"igx-drag-indicator\"\n tabindex=\"0\"\n (focus)=\"onChipDragIndicatorFocus(dragRef, expressionItem)\"\n (focusout)=\"onChipDragIndicatorFocusOut()\"\n >\n drag_indicator\n </igx-icon>\n <span igxPrefix class=\"igx-filter-tree__expression-column\">\n {{expressionItem.fieldLabel || expressionItem.expression.fieldName}}\n </span>\n <span igxPrefix class=\"igx-filter-tree__expression-condition\">\n {{\n getConditionFriendlyName(\n expressionItem.expression.condition?.name\n )\n }}\n </span>\n <span *ngIf=\"!expressionItem.expression.condition?.isUnary\">\n <ng-container *ngIf=\"expressionItem.expression.searchTree\">\n <strong>{{expressionItem.expression.searchTree.entity}}</strong> / {{formatReturnFields(expressionItem.expression.searchTree)}}\n </ng-container>\n\n <ng-container *ngIf=\"!expressionItem.expression.searchTree\">\n @if(isDate(expressionItem.expression.searchVal)) {\n @if(getFormatter(expressionItem.expression.fieldName)) {\n {{\n expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(\n expressionItem.expression.fieldName\n )\n : undefined\n }}\n } @else {\n {{\n expressionItem.expression.searchVal\n | date\n : getFormat(\n expressionItem.expression.fieldName\n )\n : undefined\n : this.locale\n }}\n }\n } @else {\n @if(getFormatter(expressionItem.expression.fieldName)) {\n {{\n expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(expressionItem.expression.fieldName)\n : (expressionItem.expression.conditionName || expressionItem.expression.condition?.name)\n }}\n } @else {\n {{ expressionItem.expression.searchVal }}\n }\n }\n </ng-container>\n </span>\n </igx-chip>\n <div #tooltipRef=\"tooltip\" igxTooltip>\n @if(expressionItem.expression.searchTree){\n {{expressionItem.expression.searchTree.returnFields.join(', ')}}\n } @else if (expressionItem.expression.condition?.isUnary) {\n {{getConditionFriendlyName(expressionItem.expression.condition?.name)}}\n } @else {\n @if(getFormatter(expressionItem.expression.fieldName)) {\n {{\n expressionItem.expression.searchVal\n | fieldFormatter\n : getFormatter(expressionItem.expression.fieldName)\n : (expressionItem.expression.conditionName || expressionItem.expression.condition?.name)\n }}\n } @else {\n {{ expressionItem.expression.searchVal }}\n }\n }\n </div>\n\n @if((expressionItem.focused || expressionItem.hovered) && !expressionItem.inAddMode) {\n <div igxDragIgnore class=\"igx-filter-tree__expression-actions\">\n <button #addExpressionButton igxDragIgnore igxIconButton=\"outlined\" [igxDropDownItemNavigation]=\"addOptionsDropDown\"\n aria-labelledby=\"add-expression\" (keydown)=\"invokeClick($event)\"\n (click)=\"clickExpressionAdd(addExpressionButton, expressionChip)\"\n (blur)=\"addExpressionBlur()\">\n <igx-icon id=\"add-expression\">add</igx-icon>\n </button>\n <igx-drop-down #addOptionsDropDown\n (selectionChanging)=\"enterExpressionAdd($event, expressionItem)\">\n <igx-drop-down-item [value]=\"'addCondition'\">\n <span>{{this.resourceStrings.igx_query_builder_add_condition}}</span>\n </igx-drop-down-item>\n <igx-drop-down-item [value]=\"'addGroup'\">\n <span>{{this.resourceStrings.igx_query_builder_add_group}}</span>\n </igx-drop-down-item>\n </igx-drop-down>\n </div>\n }\n </div>\n\n <div #editingInputsContainer class=\"igx-filter-tree__subquery\" >\n <div\n igxDrop\n (enter)=\"onChipEnter(editingInputsContainer, expressionItem, true)\"\n (over)=\"onDivOver(editingInputsContainer, expressionItem)\"\n (leave)=\"onChipLeave()\"\n (dropped)=\"onDivDropped(expressionItem)\"\n *ngIf=\"expressionItem.inEditMode\"\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select\n #fieldSelect\n type=\"box\"\n [overlaySettings]=\"fieldSelectOverlaySettings\"\n [(ngModel)]=\"selectedField\"\n [disabled]=\"!fields\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_column_placeholder\"\n >\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 [overlaySettings]=\"conditionSelectOverlaySettings\"\n [(ngModel)]=\"selectedCondition\"\n (selectionChanging)=\"onConditionSelectChanging($event)\"\n [disabled]=\"!selectedField\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_condition_placeholder\"\n >\n <igx-prefix\n *ngIf=\"\n selectedField &&\n conditionSelect.value &&\n selectedField.filters.condition(conditionSelect.value)\n \"\n >\n <igx-icon\n family=\"default\"\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=\"default\"\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 <ng-container\n *ngTemplateOutlet=\"\n searchValueTemplate ? searchValueTemplate : defaultSearchValueTemplate;\n context: getSearchValueTemplateContext(defaultSearchValueTemplate)\n \"\n >\n </ng-container>\n\n <ng-template #defaultSearchValueTemplate>\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 >\n\n <input\n #searchValueInput\n igxInput\n [disabled]=\"isSearchValueInputDisabled()\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_value_placeholder\"\n [type]=\"\n selectedField && selectedField.dataType === 'number'\n ? 'number'\n : 'text'\n \"\n [(ngModel)]=\"searchValue.value\"\n />\n </igx-input-group>\n\n <igx-date-picker\n #picker\n *ngIf=\"selectedField && selectedField.dataType === 'date'\"\n [(value)]=\"searchValue.value\"\n (keydown)=\"openPicker($event)\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"isSearchValueInputDisabled()\"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [weekStart]=\"selectedField.pipeArgs.weekStart\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_date_placeholder\"\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.value\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"isSearchValueInputDisabled()\"\n [locale]=\"this.locale\"\n [outlet]=\"pickerOutlet\"\n [formatter]=\"selectedField.formatter\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n [inputFormat]=\"selectedField.editorOptions?.dateTimeFormat\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_time_placeholder\"\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 type=\"box\"\n *ngIf=\"selectedField && selectedField.dataType === 'dateTime'\"\n >\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"this.resourceStrings.igx_query_builder_datetime_placeholder\"\n [(ngModel)]=\"searchValue.value\"\n [disabled]=\"isSearchValueInputDisabled()\"\n [locale]=\"this.locale\"\n [igxDateTimeEditor]=\"selectedField.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"selectedField.dataType\"\n [displayFormat]=\"selectedField.pipeArgs.format\"\n />\n </igx-input-group>\n </ng-template>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button type=\"button\"\n igxIconButton=\"outlined\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitExpression()\"\n >\n <igx-icon family=\"default\" name=\"confirm\"></igx-icon>\n </button>\n <button type=\"button\"\n igxIconButton=\"outlined\"\n (click)=\"discardExpression(expressionItem)\"\n >\n <ng-container *ngTemplateOutlet=\"closeIcon\"></ng-container>\n </button>\n </div>\n </div>\n\n <ng-container *ngIf=\"\n (!expressionItem.inEditMode && expressionItem.expression.searchTree && expressionItem.expression.searchTree.filteringOperands?.length > 0) ||\n (expressionItem.inEditMode && selectedField?.filters?.condition(selectedCondition)?.isNestedQuery)\">\n <igx-query-builder-tree\n [style.display]=\"expressionItem.inEditMode || expressionItem.expanded ? 'block' : 'none'\"\n [entities]=\"entities\"\n [queryBuilder]=\"this.queryBuilder\"\n [parentExpression]=\"expressionItem\"\n [expressionTree]=\"expressionItem.inEditMode ? (innerQueryNewExpressionTree ?? getExpressionTreeCopy(expressionItem.expression.searchTree, true)) : expressionItem.expression.searchTree\"\n (inEditModeChange)=\"onInEditModeChanged($event)\"\n [searchValueTemplate]=\"searchValueTemplate\">\n </igx-query-builder-tree>\n </ng-container>\n </div>\n </ng-template>\n\n <ng-template #expressionGroupTemplate let-expressionItem>\n <div class=\"igx-filter-tree\"\n (focusout)=\"parentExpression? null : onDragFocusOut()\">\n <div\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': getOperator(expressionItem) === 0,\n 'igx-filter-tree__line--or': getOperator(expressionItem) === 1\n }\"\n ></div>\n\n <div class=\"igx-filter-tree__expressions\">\n <div class=\"igx-filter-tree__expression-context-menu\"\n #groupRef\n igxDrop\n (enter)=\"onGroupRootOver(groupRef, expressionItem)\"\n (over)=\"onGroupRootOver(groupRef, expressionItem)\"\n (leave)=\"onChipLeave()\"\n >\n <button #changeGroupButton\n [ngClass]=\"{\n 'igx-filter-tree__button--and': getOperator(expressionItem) === 0,\n 'igx-filter-tree__button--or': getOperator(expressionItem) === 1\n }\"\n [igxDropDownItemNavigation]=\"groupContextMenuDropDown\"\n igxDragIgnore\n igxButton=\"flat\"\n aria-labelledby=\"change-group\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(groupContextMenuDropDown, changeGroupButton, expressionItem)\"\n >\n <span\n igxDrop\n (enter)=\"onGroupRootOver(groupRef, expressionItem)\"\n (over)=\"onGroupRootOver(groupRef, expressionItem)\"\n (leave)=\"onChipLeave()\"\n >\n {{getOperator(expressionItem) === 0 ? this.resourceStrings.igx_query_builder_and_label : this.resourceStrings.igx_query_builder_or_label}}\n </span>\n <igx-icon family=\"default\" name=\"arrow_drop_down\" role=\"button\"></igx-icon>\n </button>\n <igx-drop-down #groupContextMenuDropDown\n (selectionChanging)=\"onGroupContextMenuDropDownSelectionChanging($event)\"\n [width]=\"'fit-content'\">\n <igx-drop-down-item [value]=\"'switchCondition'\"\n >\n {{getSwitchGroupText(expressionItem)}}\n </igx-drop-down-item>\n <igx-drop-down-item [value]=\"'ungroup'\"\n [disabled]=\"this.rootGroup === this.contextualGroup\"\n >\n {{this.resourceStrings.igx_query_builder_ungroup}}\n </igx-drop-down-item>\n </igx-drop-down>\n </div>\n <div class=\"igx-filter-tree__expression-section\">\n <ng-container *ngFor=\"let expr of expressionItem?.children\">\n <ng-container\n *ngTemplateOutlet=\"\n isExpressionGroup(expr)\n ? expressionGroupTemplate\n : operandTemplate;\n context: context(expr)\n \"\n >\n </ng-container>\n </ng-container>\n </div>\n <div\n *ngIf=\"expressionItem === rootGroup && !hasEditedExpression\"\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 </div>\n </div>\n </div>\n </ng-template>\n\n <div class=\"igx-filter-tree__section\" *ngIf=\"rootGroup || (!rootGroup && (selectedEntity || (entities?.length === 1 && !entities[0]?.name)))\">\n @if(!this.isAdvancedFiltering()) {\n <span class=\"igx-query-builder__label\">Where</span>\n }\n <ng-container\n *ngTemplateOutlet=\"\n expressionGroupTemplate;\n context: context(rootGroup)\n \"\n ></ng-container>\n </div>\n</div>\n\n<div\n #overlayOutlet\n igxOverlayOutlet\n class=\"igx-query-builder__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n\n<igx-dialog\n #entityChangeDialog\n title=\"{{ this.resourceStrings.igx_query_builder_dialog_title }}\"\n leftButtonLabel=\"{{ this.resourceStrings.igx_query_builder_dialog_cancel }}\"\n rightButtonLabel=\"{{ this.resourceStrings.igx_query_builder_dialog_confirm }}\"\n (leftButtonSelect)=\"onEntityChangeCancel()\"\n (rightButtonSelect)=\"onEntityChangeConfirm()\">\n <section class=\"igx-query-builder-dialog\">\n <p>{{ this.resourceStrings.igx_query_builder_dialog_message }}</p>\n <igx-checkbox\n (change)=\"onShowEntityChangeDialogChange($event)\"\n [disableRipple]=\"true\"\n [tabindex]=\"-1\">\n {{ this.resourceStrings.igx_query_builder_dialog_checkbox_text }}\n </igx-checkbox>\n </section>\n</igx-dialog>\n" }]
|
|
50157
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: PlatformUtil }, { type: i0.ElementRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
49310
50158
|
type: Inject,
|
|
49311
50159
|
args: [LOCALE_ID]
|
|
49312
|
-
}] }], propDecorators: {
|
|
50160
|
+
}] }], propDecorators: { getClass: [{
|
|
49313
50161
|
type: HostBinding,
|
|
49314
|
-
args: ['class
|
|
49315
|
-
}],
|
|
49316
|
-
type:
|
|
49317
|
-
|
|
50162
|
+
args: ['class']
|
|
50163
|
+
}], entities: [{
|
|
50164
|
+
type: Input
|
|
50165
|
+
}], queryBuilder: [{
|
|
50166
|
+
type: Input
|
|
50167
|
+
}], searchValueTemplate: [{
|
|
50168
|
+
type: Input
|
|
50169
|
+
}], parentExpression: [{
|
|
50170
|
+
type: Input
|
|
49318
50171
|
}], fields: [{
|
|
49319
50172
|
type: Input
|
|
49320
50173
|
}], expressionTree: [{
|
|
@@ -49325,6 +50178,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
49325
50178
|
type: Input
|
|
49326
50179
|
}], expressionTreeChange: [{
|
|
49327
50180
|
type: Output
|
|
50181
|
+
}], inEditModeChange: [{
|
|
50182
|
+
type: Output
|
|
50183
|
+
}], entitySelect: [{
|
|
50184
|
+
type: ViewChild,
|
|
50185
|
+
args: ['entitySelect', { read: IgxSelectComponent }]
|
|
50186
|
+
}], returnFieldsCombo: [{
|
|
50187
|
+
type: ViewChild,
|
|
50188
|
+
args: ['returnFieldsCombo', { read: IgxComboComponent }]
|
|
50189
|
+
}], returnFieldSelect: [{
|
|
50190
|
+
type: ViewChild,
|
|
50191
|
+
args: ['returnFieldSelect', { read: IgxSelectComponent }]
|
|
49328
50192
|
}], fieldSelect: [{
|
|
49329
50193
|
type: ViewChild,
|
|
49330
50194
|
args: ['fieldSelect', { read: IgxSelectComponent }]
|
|
@@ -49343,30 +50207,320 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
49343
50207
|
}], addConditionButton: [{
|
|
49344
50208
|
type: ViewChild,
|
|
49345
50209
|
args: ['addConditionButton', { read: ElementRef }]
|
|
50210
|
+
}], entityChangeDialog: [{
|
|
50211
|
+
type: ViewChild,
|
|
50212
|
+
args: ['entityChangeDialog', { read: IgxDialogComponent }]
|
|
50213
|
+
}], addExpressionItemDropDown: [{
|
|
50214
|
+
type: ViewChild,
|
|
50215
|
+
args: ['addOptionsDropDown', { read: IgxDropDownComponent }]
|
|
50216
|
+
}], groupContextMenuDropDown: [{
|
|
50217
|
+
type: ViewChild,
|
|
50218
|
+
args: ['groupContextMenuDropDown', { read: IgxDropDownComponent }]
|
|
50219
|
+
}], expressionsChips: [{
|
|
50220
|
+
type: ViewChildren,
|
|
50221
|
+
args: [IgxChipComponent, { read: IgxChipComponent }]
|
|
49346
50222
|
}], headerContent: [{
|
|
49347
50223
|
type: ContentChild,
|
|
49348
50224
|
args: [IgxQueryBuilderHeaderComponent]
|
|
49349
50225
|
}], editingInputsContainer: [{
|
|
49350
50226
|
type: ViewChild,
|
|
49351
50227
|
args: ['editingInputsContainer', { read: ElementRef }]
|
|
49352
|
-
}], addModeContainer: [{
|
|
49353
|
-
type: ViewChild,
|
|
49354
|
-
args: ['addModeContainer', { read: ElementRef }]
|
|
49355
50228
|
}], currentGroupButtonsContainer: [{
|
|
49356
50229
|
type: ViewChild,
|
|
49357
50230
|
args: ['currentGroupButtonsContainer', { read: ElementRef }]
|
|
49358
|
-
}], contextMenuToggle: [{
|
|
49359
|
-
type: ViewChild,
|
|
49360
|
-
args: [IgxToggleDirective]
|
|
49361
|
-
}], chips: [{
|
|
49362
|
-
type: ViewChildren,
|
|
49363
|
-
args: [IgxChipComponent]
|
|
49364
50231
|
}], expressionsContainer: [{
|
|
49365
50232
|
type: ViewChild,
|
|
49366
50233
|
args: ['expressionsContainer']
|
|
49367
50234
|
}], overlayOutlet: [{
|
|
49368
50235
|
type: ViewChild,
|
|
49369
50236
|
args: ['overlayOutlet', { read: IgxOverlayOutletDirective, static: true }]
|
|
50237
|
+
}], innerQueries: [{
|
|
50238
|
+
type: ViewChildren,
|
|
50239
|
+
args: [IgxQueryBuilderTreeComponent]
|
|
50240
|
+
}] } });
|
|
50241
|
+
|
|
50242
|
+
/**
|
|
50243
|
+
* Defines the custom template that will be used for the search value input of condition in edit mode
|
|
50244
|
+
*
|
|
50245
|
+
* @igxModule IgxQueryBuilderModule
|
|
50246
|
+
* @igxKeywords query builder, query builder search value
|
|
50247
|
+
* @igxGroup Data entry and display
|
|
50248
|
+
*
|
|
50249
|
+
* @example
|
|
50250
|
+
* <igx-query-builder>
|
|
50251
|
+
* <ng-template igxQueryBuilderSearchValue let-expression="expression">
|
|
50252
|
+
* <input type="text" required [(ngModel)]="expression.searchVal"/>
|
|
50253
|
+
* </ng-template>
|
|
50254
|
+
* </igx-query-builder>
|
|
50255
|
+
*/
|
|
50256
|
+
class IgxQueryBuilderSearchValueTemplateDirective {
|
|
50257
|
+
constructor(template) {
|
|
50258
|
+
this.template = template;
|
|
50259
|
+
}
|
|
50260
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderSearchValueTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
50261
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: IgxQueryBuilderSearchValueTemplateDirective, isStandalone: true, selector: "[igxQueryBuilderSearchValue]", ngImport: i0 }); }
|
|
50262
|
+
}
|
|
50263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderSearchValueTemplateDirective, decorators: [{
|
|
50264
|
+
type: Directive,
|
|
50265
|
+
args: [{
|
|
50266
|
+
selector: '[igxQueryBuilderSearchValue]',
|
|
50267
|
+
standalone: true
|
|
50268
|
+
}]
|
|
50269
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
50270
|
+
|
|
50271
|
+
/**
|
|
50272
|
+
* A component used for operating with complex filters by creating or editing conditions
|
|
50273
|
+
* and grouping them using AND/OR logic.
|
|
50274
|
+
* It is used internally in the Advanced Filtering of the Grid.
|
|
50275
|
+
*
|
|
50276
|
+
* @example
|
|
50277
|
+
* ```html
|
|
50278
|
+
* <igx-query-builder [entities]="this.entities">
|
|
50279
|
+
* </igx-query-builder>
|
|
50280
|
+
* ```
|
|
50281
|
+
*/
|
|
50282
|
+
class IgxQueryBuilderComponent {
|
|
50283
|
+
/**
|
|
50284
|
+
* Returns the fields.
|
|
50285
|
+
* @hidden
|
|
50286
|
+
* @deprecated in version 19.1.0. Use the `entities` property instead.
|
|
50287
|
+
*/
|
|
50288
|
+
get fields() {
|
|
50289
|
+
return this._fields;
|
|
50290
|
+
}
|
|
50291
|
+
/**
|
|
50292
|
+
* Sets the fields.
|
|
50293
|
+
* @hidden
|
|
50294
|
+
* @deprecated in version 19.1.0. Use the `entities` property instead.
|
|
50295
|
+
*/
|
|
50296
|
+
set fields(fields) {
|
|
50297
|
+
if (fields) {
|
|
50298
|
+
this._fields = fields;
|
|
50299
|
+
this.entities = [
|
|
50300
|
+
{
|
|
50301
|
+
name: null,
|
|
50302
|
+
fields: fields
|
|
50303
|
+
}
|
|
50304
|
+
];
|
|
50305
|
+
}
|
|
50306
|
+
}
|
|
50307
|
+
/**
|
|
50308
|
+
* Returns the expression tree.
|
|
50309
|
+
*/
|
|
50310
|
+
get expressionTree() {
|
|
50311
|
+
return this._expressionTree;
|
|
50312
|
+
}
|
|
50313
|
+
/**
|
|
50314
|
+
* Sets the expression tree.
|
|
50315
|
+
*/
|
|
50316
|
+
set expressionTree(expressionTree) {
|
|
50317
|
+
if (JSON.stringify(expressionTree) !== JSON.stringify(this._expressionTree)) {
|
|
50318
|
+
this._expressionTree = expressionTree;
|
|
50319
|
+
}
|
|
50320
|
+
}
|
|
50321
|
+
/**
|
|
50322
|
+
* Sets the resource strings.
|
|
50323
|
+
* By default it uses EN resources.
|
|
50324
|
+
*/
|
|
50325
|
+
set resourceStrings(value) {
|
|
50326
|
+
this._resourceStrings = Object.assign({}, this._resourceStrings, value);
|
|
50327
|
+
}
|
|
50328
|
+
/**
|
|
50329
|
+
* Returns the resource strings.
|
|
50330
|
+
*/
|
|
50331
|
+
get resourceStrings() {
|
|
50332
|
+
return this._resourceStrings;
|
|
50333
|
+
}
|
|
50334
|
+
constructor(iconService) {
|
|
50335
|
+
this.iconService = iconService;
|
|
50336
|
+
/**
|
|
50337
|
+
* @hidden @internal
|
|
50338
|
+
*/
|
|
50339
|
+
this.cssClass = 'igx-query-builder';
|
|
50340
|
+
/**
|
|
50341
|
+
* @hidden @internal
|
|
50342
|
+
*/
|
|
50343
|
+
this.display = 'block';
|
|
50344
|
+
/**
|
|
50345
|
+
* Gets/sets whether the confirmation dialog should be shown when changing entity.
|
|
50346
|
+
* Default value is `true`.
|
|
50347
|
+
*/
|
|
50348
|
+
this.showEntityChangeDialog = true;
|
|
50349
|
+
/**
|
|
50350
|
+
* Disables subsequent entity changes at the root level after the initial selection.
|
|
50351
|
+
*/
|
|
50352
|
+
this.disableEntityChange = false;
|
|
50353
|
+
/**
|
|
50354
|
+
* Event fired as the expression tree is changed.
|
|
50355
|
+
*
|
|
50356
|
+
* ```html
|
|
50357
|
+
* <igx-query-builder (expressionTreeChange)='onExpressionTreeChange()'></igx-query-builder>
|
|
50358
|
+
* ```
|
|
50359
|
+
*/
|
|
50360
|
+
this.expressionTreeChange = new EventEmitter();
|
|
50361
|
+
this.destroy$ = new Subject();
|
|
50362
|
+
this._resourceStrings = getCurrentResourceStrings(QueryBuilderResourceStringsEN);
|
|
50363
|
+
this._shouldEmitTreeChange = true;
|
|
50364
|
+
this.registerSVGIcons();
|
|
50365
|
+
}
|
|
50366
|
+
/**
|
|
50367
|
+
* Returns whether the expression tree can be committed in the current state.
|
|
50368
|
+
*/
|
|
50369
|
+
canCommit() {
|
|
50370
|
+
return this.queryTree?.canCommitCurrentState() === true;
|
|
50371
|
+
}
|
|
50372
|
+
/**
|
|
50373
|
+
* Commits the expression tree in the current state if it is valid. If not throws an exception.
|
|
50374
|
+
*/
|
|
50375
|
+
commit() {
|
|
50376
|
+
if (this.canCommit()) {
|
|
50377
|
+
this._shouldEmitTreeChange = false;
|
|
50378
|
+
this.queryTree.commitCurrentState();
|
|
50379
|
+
this._shouldEmitTreeChange = true;
|
|
50380
|
+
}
|
|
50381
|
+
else {
|
|
50382
|
+
throw new Error('Expression tree can\'t be committed in the current state. Use `canCommit` method to check if the current state is valid.');
|
|
50383
|
+
}
|
|
50384
|
+
}
|
|
50385
|
+
/**
|
|
50386
|
+
* Discards all unsaved changes to the expression tree.
|
|
50387
|
+
*/
|
|
50388
|
+
discard() {
|
|
50389
|
+
this.queryTree.cancelOperandEdit();
|
|
50390
|
+
}
|
|
50391
|
+
/**
|
|
50392
|
+
* @hidden @internal
|
|
50393
|
+
*/
|
|
50394
|
+
ngOnDestroy() {
|
|
50395
|
+
this.destroy$.next(true);
|
|
50396
|
+
this.destroy$.complete();
|
|
50397
|
+
}
|
|
50398
|
+
/**
|
|
50399
|
+
* @hidden @internal
|
|
50400
|
+
*
|
|
50401
|
+
* used by the grid
|
|
50402
|
+
*/
|
|
50403
|
+
setPickerOutlet(outlet) {
|
|
50404
|
+
this.queryTree.setPickerOutlet(outlet);
|
|
50405
|
+
}
|
|
50406
|
+
/**
|
|
50407
|
+
* @hidden @internal
|
|
50408
|
+
*
|
|
50409
|
+
* used by the grid
|
|
50410
|
+
*/
|
|
50411
|
+
get isContextMenuVisible() {
|
|
50412
|
+
return this.queryTree.isContextMenuVisible;
|
|
50413
|
+
}
|
|
50414
|
+
/**
|
|
50415
|
+
* @hidden @internal
|
|
50416
|
+
*
|
|
50417
|
+
* used by the grid
|
|
50418
|
+
*/
|
|
50419
|
+
exitOperandEdit() {
|
|
50420
|
+
this.queryTree.exitOperandEdit();
|
|
50421
|
+
}
|
|
50422
|
+
/**
|
|
50423
|
+
* @hidden @internal
|
|
50424
|
+
*
|
|
50425
|
+
* used by the grid
|
|
50426
|
+
*/
|
|
50427
|
+
setAddButtonFocus() {
|
|
50428
|
+
this.queryTree.setAddButtonFocus();
|
|
50429
|
+
}
|
|
50430
|
+
onExpressionTreeChange(tree) {
|
|
50431
|
+
this._expressionTree = tree;
|
|
50432
|
+
if (this._shouldEmitTreeChange) {
|
|
50433
|
+
this.expressionTreeChange.emit();
|
|
50434
|
+
}
|
|
50435
|
+
}
|
|
50436
|
+
registerSVGIcons() {
|
|
50437
|
+
const editorIcons = editor;
|
|
50438
|
+
editorIcons.forEach((icon) => {
|
|
50439
|
+
this.iconService.addSvgIconFromText(icon.name, icon.value, 'imx-icons');
|
|
50440
|
+
this.iconService.addIconRef(icon.name, 'default', {
|
|
50441
|
+
name: icon.name,
|
|
50442
|
+
family: 'imx-icons'
|
|
50443
|
+
});
|
|
50444
|
+
});
|
|
50445
|
+
const inIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M560-280H120v-400h720v120h-80v-40H200v240h360v80Zm-360-80v-240 240Zm560 200v-120H640v-80h120v-120h80v120h120v80H840v120h-80Z"/></svg>';
|
|
50446
|
+
this.iconService.addSvgIconFromText('in', inIcon, 'imx-icons');
|
|
50447
|
+
this.iconService.addIconRef('in', 'default', {
|
|
50448
|
+
name: 'in',
|
|
50449
|
+
family: 'imx-icons'
|
|
50450
|
+
});
|
|
50451
|
+
const notInIcon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M560-280H120v-400h720v120h-80v-40H200v240h360v80Zm-360-80v-240 240Zm440 104 84-84-84-84 56-56 84 84 84-84 56 56-83 84 83 84-56 56-84-83-84 83-56-56Z"/></svg>';
|
|
50452
|
+
this.iconService.addSvgIconFromText('not-in', notInIcon, 'imx-icons');
|
|
50453
|
+
this.iconService.addIconRef('not-in', 'default', {
|
|
50454
|
+
name: 'not-in',
|
|
50455
|
+
family: 'imx-icons'
|
|
50456
|
+
});
|
|
50457
|
+
this.iconService.addIconRef('add', 'default', {
|
|
50458
|
+
name: 'add',
|
|
50459
|
+
family: 'material',
|
|
50460
|
+
});
|
|
50461
|
+
this.iconService.addIconRef('close', 'default', {
|
|
50462
|
+
name: 'close',
|
|
50463
|
+
family: 'material',
|
|
50464
|
+
});
|
|
50465
|
+
this.iconService.addIconRef('check', 'default', {
|
|
50466
|
+
name: 'check',
|
|
50467
|
+
family: 'material',
|
|
50468
|
+
});
|
|
50469
|
+
this.iconService.addIconRef('delete', 'default', {
|
|
50470
|
+
name: 'delete',
|
|
50471
|
+
family: 'material',
|
|
50472
|
+
});
|
|
50473
|
+
this.iconService.addIconRef('edit', 'default', {
|
|
50474
|
+
name: 'edit',
|
|
50475
|
+
family: 'material',
|
|
50476
|
+
});
|
|
50477
|
+
this.iconService.addIconRef('unfold_less', 'default', {
|
|
50478
|
+
name: 'unfold_less',
|
|
50479
|
+
family: 'material',
|
|
50480
|
+
});
|
|
50481
|
+
this.iconService.addIconRef('unfold_more', 'default', {
|
|
50482
|
+
name: 'unfold_more',
|
|
50483
|
+
family: 'material',
|
|
50484
|
+
});
|
|
50485
|
+
}
|
|
50486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderComponent, deps: [{ token: IgxIconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxQueryBuilderComponent, isStandalone: true, selector: "igx-query-builder", inputs: { showEntityChangeDialog: ["showEntityChangeDialog", "showEntityChangeDialog", booleanAttribute], entities: "entities", fields: "fields", expressionTree: "expressionTree", locale: "locale", resourceStrings: "resourceStrings", disableEntityChange: "disableEntityChange" }, outputs: { expressionTreeChange: "expressionTreeChange" }, host: { properties: { "class.igx-query-builder": "this.cssClass", "style.display": "this.display" } }, queries: [{ propertyName: "headerContent", first: true, predicate: IgxQueryBuilderHeaderComponent, descendants: true }, { propertyName: "searchValueTemplate", first: true, predicate: IgxQueryBuilderSearchValueTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "queryTree", first: true, predicate: IgxQueryBuilderTreeComponent, descendants: true }], ngImport: i0, template: "<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [resourceStrings]=\"this.resourceStrings\"\n>\n</igx-query-builder-header>\n\n<ng-content select=\"igx-query-builder-header\"></ng-content>\n\n<igx-query-builder-tree\n [entities]=\"this.entities\"\n [expressionTree]=\"this.expressionTree\"\n [locale]=\"this.locale\"\n [resourceStrings]=\"this.resourceStrings\"\n [queryBuilder]=\"this\"\n (expressionTreeChange)=\"onExpressionTreeChange($event)\"\n [searchValueTemplate]=\"searchValueTemplate\">\n</igx-query-builder-tree>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "resourceStrings"] }, { kind: "component", type: IgxQueryBuilderTreeComponent, selector: "igx-query-builder-tree", inputs: ["entities", "queryBuilder", "searchValueTemplate", "parentExpression", "fields", "expressionTree", "locale", "resourceStrings"], outputs: ["expressionTreeChange", "inEditModeChange"] }] }); }
|
|
50488
|
+
}
|
|
50489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderComponent, decorators: [{
|
|
50490
|
+
type: Component,
|
|
50491
|
+
args: [{ selector: 'igx-query-builder', standalone: true, imports: [NgIf, IgxQueryBuilderHeaderComponent, IgxQueryBuilderTreeComponent, NgTemplateOutlet, IgxQueryBuilderSearchValueTemplateDirective], template: "<igx-query-builder-header\n *ngIf=\"!headerContent\"\n [resourceStrings]=\"this.resourceStrings\"\n>\n</igx-query-builder-header>\n\n<ng-content select=\"igx-query-builder-header\"></ng-content>\n\n<igx-query-builder-tree\n [entities]=\"this.entities\"\n [expressionTree]=\"this.expressionTree\"\n [locale]=\"this.locale\"\n [resourceStrings]=\"this.resourceStrings\"\n [queryBuilder]=\"this\"\n (expressionTreeChange)=\"onExpressionTreeChange($event)\"\n [searchValueTemplate]=\"searchValueTemplate\">\n</igx-query-builder-tree>\n" }]
|
|
50492
|
+
}], ctorParameters: () => [{ type: IgxIconService }], propDecorators: { cssClass: [{
|
|
50493
|
+
type: HostBinding,
|
|
50494
|
+
args: ['class.igx-query-builder']
|
|
50495
|
+
}], display: [{
|
|
50496
|
+
type: HostBinding,
|
|
50497
|
+
args: ['style.display']
|
|
50498
|
+
}], showEntityChangeDialog: [{
|
|
50499
|
+
type: Input,
|
|
50500
|
+
args: [{ transform: booleanAttribute }]
|
|
50501
|
+
}], entities: [{
|
|
50502
|
+
type: Input
|
|
50503
|
+
}], fields: [{
|
|
50504
|
+
type: Input
|
|
50505
|
+
}], expressionTree: [{
|
|
50506
|
+
type: Input
|
|
50507
|
+
}], locale: [{
|
|
50508
|
+
type: Input
|
|
50509
|
+
}], resourceStrings: [{
|
|
50510
|
+
type: Input
|
|
50511
|
+
}], disableEntityChange: [{
|
|
50512
|
+
type: Input
|
|
50513
|
+
}], expressionTreeChange: [{
|
|
50514
|
+
type: Output
|
|
50515
|
+
}], headerContent: [{
|
|
50516
|
+
type: ContentChild,
|
|
50517
|
+
args: [IgxQueryBuilderHeaderComponent]
|
|
50518
|
+
}], searchValueTemplate: [{
|
|
50519
|
+
type: ContentChild,
|
|
50520
|
+
args: [IgxQueryBuilderSearchValueTemplateDirective, { read: TemplateRef }]
|
|
50521
|
+
}], queryTree: [{
|
|
50522
|
+
type: ViewChild,
|
|
50523
|
+
args: [IgxQueryBuilderTreeComponent]
|
|
49370
50524
|
}] } });
|
|
49371
50525
|
|
|
49372
50526
|
const GridResourceStringsEN = {
|
|
@@ -49438,8 +50592,8 @@ const GridResourceStringsEN = {
|
|
|
49438
50592
|
igx_grid_excel_custom_dialog_add: 'add filter',
|
|
49439
50593
|
igx_grid_excel_custom_dialog_clear: 'Clear filter',
|
|
49440
50594
|
igx_grid_excel_custom_dialog_header: 'Custom auto-filter on column: ',
|
|
49441
|
-
igx_grid_excel_cancel: '
|
|
49442
|
-
igx_grid_excel_apply: '
|
|
50595
|
+
igx_grid_excel_cancel: 'cancel',
|
|
50596
|
+
igx_grid_excel_apply: 'apply',
|
|
49443
50597
|
igx_grid_excel_search_placeholder: 'Search',
|
|
49444
50598
|
igx_grid_excel_select_all: 'Select All',
|
|
49445
50599
|
igx_grid_excel_select_all_search_results: 'Select all search results',
|
|
@@ -49626,7 +50780,6 @@ class IgxAdvancedFilteringDialogComponent {
|
|
|
49626
50780
|
eventArgs.stopPropagation();
|
|
49627
50781
|
const key = eventArgs.key;
|
|
49628
50782
|
if (this.queryBuilder.isContextMenuVisible && (key === this.platform.KEYMAP.ESCAPE)) {
|
|
49629
|
-
this.queryBuilder.clearSelection();
|
|
49630
50783
|
}
|
|
49631
50784
|
else if (key === this.platform.KEYMAP.ESCAPE) {
|
|
49632
50785
|
this.closeDialog();
|
|
@@ -49681,6 +50834,18 @@ class IgxAdvancedFilteringDialogComponent {
|
|
|
49681
50834
|
this.applyChanges(event);
|
|
49682
50835
|
this.closeDialog();
|
|
49683
50836
|
}
|
|
50837
|
+
/**
|
|
50838
|
+
* @hidden @internal
|
|
50839
|
+
*/
|
|
50840
|
+
generateEntity() {
|
|
50841
|
+
const entities = [
|
|
50842
|
+
{
|
|
50843
|
+
name: null,
|
|
50844
|
+
fields: this.filterableFields
|
|
50845
|
+
}
|
|
50846
|
+
];
|
|
50847
|
+
return entities;
|
|
50848
|
+
}
|
|
49684
50849
|
assignResourceStrings() {
|
|
49685
50850
|
// If grid has custom resource strings set for the advanced filtering,
|
|
49686
50851
|
// they are passed to the query builder resource strings.
|
|
@@ -49705,11 +50870,11 @@ class IgxAdvancedFilteringDialogComponent {
|
|
|
49705
50870
|
}
|
|
49706
50871
|
}
|
|
49707
50872
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49708
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder
|
|
50873
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder\n [locale]=\"grid.locale\"\n [entities]=\"generateEntity()\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"outlined\" type=\"button\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"contained\" type=\"button\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["showEntityChangeDialog", "entities", "fields", "expressionTree", "locale", "resourceStrings", "disableEntityChange"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }] }); }
|
|
49709
50874
|
}
|
|
49710
50875
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, decorators: [{
|
|
49711
50876
|
type: Component,
|
|
49712
|
-
args: [{ selector: 'igx-advanced-filtering-dialog', imports: [NgIf, IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective], template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder
|
|
50877
|
+
args: [{ selector: 'igx-advanced-filtering-dialog', imports: [NgIf, IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective], template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder\n [locale]=\"grid.locale\"\n [entities]=\"generateEntity()\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"outlined\" type=\"button\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"contained\" type=\"button\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n" }]
|
|
49713
50878
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: PlatformUtil }], propDecorators: { queryBuilder: [{
|
|
49714
50879
|
type: ViewChild,
|
|
49715
50880
|
args: ['queryBuilder', { read: IgxQueryBuilderComponent }]
|
|
@@ -49928,6 +51093,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
49928
51093
|
* @hidden
|
|
49929
51094
|
*/
|
|
49930
51095
|
class IgxExcelStyleDateExpressionComponent extends IgxExcelStyleDefaultExpressionComponent {
|
|
51096
|
+
get searchVal() {
|
|
51097
|
+
return this.expressionUI.expression.searchVal;
|
|
51098
|
+
}
|
|
51099
|
+
set searchVal(value) {
|
|
51100
|
+
this.expressionUI.expression.searchVal = value ? new Date(Date.parse(value.toString())) : null;
|
|
51101
|
+
}
|
|
49931
51102
|
get inputValuesElement() {
|
|
49932
51103
|
return this.picker?.getEditElement() || this.input?.nativeElement;
|
|
49933
51104
|
}
|
|
@@ -49941,17 +51112,19 @@ class IgxExcelStyleDateExpressionComponent extends IgxExcelStyleDefaultExpressio
|
|
|
49941
51112
|
return getLocaleFirstDayOfWeek(this.grid.locale);
|
|
49942
51113
|
}
|
|
49943
51114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExcelStyleDateExpressionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
49944
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxExcelStyleDateExpressionComponent, isStandalone: true, selector: "igx-excel-style-date-expression", viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n <igx-icon *ngIf=\"expressionUI.expression.condition\" family=\"default\" [name]=\"getIconName()\"></igx-icon>\n <igx-icon *ngIf=\"!expressionUI.expression.condition\" family=\"default\" name=\"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=\"default\" [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 [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(value)]=\"
|
|
51115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxExcelStyleDateExpressionComponent, isStandalone: true, selector: "igx-excel-style-date-expression", inputs: { searchVal: "searchVal" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n <igx-icon *ngIf=\"expressionUI.expression.condition\" family=\"default\" [name]=\"getIconName()\"></igx-icon>\n <igx-icon *ngIf=\"!expressionUI.expression.condition\" family=\"default\" name=\"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=\"default\" [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 [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(value)]=\"searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\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 [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n (click)=\"picker.open()\"\n [readOnly]=\"true\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\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\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [locale]=\"column.grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [(ngModel)]=\"searchVal\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"/>\n</igx-input-group>\n\n<button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\" *ngIf=\"!isSingle\" >\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n</button>\n\n<igx-buttongroup #logicOperatorButtonGroup\n *ngIf=\"!isLast\">\n <span igxButton\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\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", dependencies: [{ kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { 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: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { 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: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { 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: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }] }); }
|
|
49945
51116
|
}
|
|
49946
51117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExcelStyleDateExpressionComponent, decorators: [{
|
|
49947
51118
|
type: Component,
|
|
49948
|
-
args: [{ selector: 'igx-excel-style-date-expression', imports: [IgxSelectComponent, IgxPrefixDirective, NgIf, IgxIconComponent, NgFor, IgxSelectItemComponent, IgxDatePickerComponent, IgxPickerToggleComponent, IgxPickerClearComponent, IgxTimePickerComponent, IgxInputGroupComponent, FormsModule, IgxInputDirective, IgxDateTimeEditorDirective, IgxButtonDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, IgxIconButtonDirective], template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n <igx-icon *ngIf=\"expressionUI.expression.condition\" family=\"default\" [name]=\"getIconName()\"></igx-icon>\n <igx-icon *ngIf=\"!expressionUI.expression.condition\" family=\"default\" name=\"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=\"default\" [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 [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(value)]=\"
|
|
51119
|
+
args: [{ selector: 'igx-excel-style-date-expression', imports: [IgxSelectComponent, IgxPrefixDirective, NgIf, IgxIconComponent, NgFor, IgxSelectItemComponent, IgxDatePickerComponent, IgxPickerToggleComponent, IgxPickerClearComponent, IgxTimePickerComponent, IgxInputGroupComponent, FormsModule, IgxInputDirective, IgxDateTimeEditorDirective, IgxButtonDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, IgxIconButtonDirective], template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n <igx-icon *ngIf=\"expressionUI.expression.condition\" family=\"default\" [name]=\"getIconName()\"></igx-icon>\n <igx-icon *ngIf=\"!expressionUI.expression.condition\" family=\"default\" name=\"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=\"default\" [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 [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(value)]=\"searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\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 [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n (click)=\"picker.open()\"\n [readOnly]=\"true\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\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\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [locale]=\"column.grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [(ngModel)]=\"searchVal\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"/>\n</igx-input-group>\n\n<button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\" *ngIf=\"!isSingle\" >\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n</button>\n\n<igx-buttongroup #logicOperatorButtonGroup\n *ngIf=\"!isLast\">\n <span igxButton\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\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" }]
|
|
49949
51120
|
}], propDecorators: { input: [{
|
|
49950
51121
|
type: ViewChild,
|
|
49951
51122
|
args: ['input', { read: IgxInputDirective, static: false }]
|
|
49952
51123
|
}], picker: [{
|
|
49953
51124
|
type: ViewChild,
|
|
49954
51125
|
args: ['picker']
|
|
51126
|
+
}], searchVal: [{
|
|
51127
|
+
type: Input
|
|
49955
51128
|
}] } });
|
|
49956
51129
|
|
|
49957
51130
|
/**
|
|
@@ -50013,11 +51186,10 @@ function generateExpressionsListRecursive(expressions, operator, expressionsUIs)
|
|
|
50013
51186
|
* @hidden
|
|
50014
51187
|
*/
|
|
50015
51188
|
class IgxExcelStyleCustomDialogComponent {
|
|
50016
|
-
constructor(overlayService, cdr, platform
|
|
51189
|
+
constructor(overlayService, cdr, platform) {
|
|
50017
51190
|
this.overlayService = overlayService;
|
|
50018
51191
|
this.cdr = cdr;
|
|
50019
51192
|
this.platform = platform;
|
|
50020
|
-
this.esf = esf;
|
|
50021
51193
|
this.expressionsList = new Array();
|
|
50022
51194
|
this._customDialogPositionSettings = {
|
|
50023
51195
|
verticalDirection: VerticalAlignment.Middle,
|
|
@@ -50064,7 +51236,6 @@ class IgxExcelStyleCustomDialogComponent {
|
|
|
50064
51236
|
}
|
|
50065
51237
|
onClearButtonClick() {
|
|
50066
51238
|
this.filteringService.clearFilter(this.column.field);
|
|
50067
|
-
this.selectedOperator = null;
|
|
50068
51239
|
this.createInitialExpressionUIElement();
|
|
50069
51240
|
this.cdr.detectChanges();
|
|
50070
51241
|
}
|
|
@@ -50077,10 +51248,6 @@ class IgxExcelStyleCustomDialogComponent {
|
|
|
50077
51248
|
this.toggle.close();
|
|
50078
51249
|
}
|
|
50079
51250
|
}
|
|
50080
|
-
cancelDialog() {
|
|
50081
|
-
this.esf.cancel();
|
|
50082
|
-
this.closeDialog();
|
|
50083
|
-
}
|
|
50084
51251
|
onApplyButtonClick() {
|
|
50085
51252
|
this.expressionsList = this.expressionsList.filter(element => element.expression.condition &&
|
|
50086
51253
|
(element.expression.searchVal || element.expression.searchVal === 0 || element.expression.condition.isUnary));
|
|
@@ -50095,6 +51262,7 @@ class IgxExcelStyleCustomDialogComponent {
|
|
|
50095
51262
|
const exprUI = new ExpressionUI();
|
|
50096
51263
|
exprUI.expression = {
|
|
50097
51264
|
condition: null,
|
|
51265
|
+
conditionName: null,
|
|
50098
51266
|
fieldName: this.column.field,
|
|
50099
51267
|
ignoreCase: this.column.filteringIgnoreCase,
|
|
50100
51268
|
searchVal: null
|
|
@@ -50167,8 +51335,10 @@ class IgxExcelStyleCustomDialogComponent {
|
|
|
50167
51335
|
}
|
|
50168
51336
|
else {
|
|
50169
51337
|
this.expressionsList = [];
|
|
51338
|
+
const cond = this.createCondition(this.selectedOperator);
|
|
50170
51339
|
firstExprUI.expression = {
|
|
50171
|
-
condition:
|
|
51340
|
+
condition: cond,
|
|
51341
|
+
conditionName: cond.name,
|
|
50172
51342
|
fieldName: this.column.field,
|
|
50173
51343
|
ignoreCase: this.column.filteringIgnoreCase,
|
|
50174
51344
|
searchVal: null
|
|
@@ -50179,6 +51349,7 @@ class IgxExcelStyleCustomDialogComponent {
|
|
|
50179
51349
|
const secondExprUI = new ExpressionUI();
|
|
50180
51350
|
secondExprUI.expression = {
|
|
50181
51351
|
condition: null,
|
|
51352
|
+
conditionName: null,
|
|
50182
51353
|
fieldName: this.column.field,
|
|
50183
51354
|
ignoreCase: this.column.filteringIgnoreCase,
|
|
50184
51355
|
searchVal: null
|
|
@@ -50191,13 +51362,13 @@ class IgxExcelStyleCustomDialogComponent {
|
|
|
50191
51362
|
this.expressionsContainer.nativeElement.scrollTop = this.expressionsContainer.nativeElement.scrollHeight;
|
|
50192
51363
|
});
|
|
50193
51364
|
}
|
|
50194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExcelStyleCustomDialogComponent, deps: [{ token: IgxOverlayService }, { token: i0.ChangeDetectorRef }, { token: PlatformUtil }
|
|
50195
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxExcelStyleCustomDialogComponent, isStandalone: true, selector: "igx-excel-style-custom-dialog", inputs: { expressionsList: "expressionsList", column: "column", selectedOperator: "selectedOperator", filteringService: "filteringService", overlayComponentId: "overlayComponentId" }, viewQueries: [{ propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true, read: IgxToggleDirective, static: true }, { propertyName: "defaultExpressionTemplate", first: true, predicate: ["defaultExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "dateExpressionTemplate", first: true, predicate: ["dateExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true, static: true }, { propertyName: "expressionComponents", predicate: IgxExcelStyleDefaultExpressionComponent, descendants: true }, { propertyName: "expressionDateComponents", predicate: IgxExcelStyleDateExpressionComponent, descendants: true }], ngImport: i0, template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"
|
|
51365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExcelStyleCustomDialogComponent, deps: [{ token: IgxOverlayService }, { token: i0.ChangeDetectorRef }, { token: PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51366
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxExcelStyleCustomDialogComponent, isStandalone: true, selector: "igx-excel-style-custom-dialog", inputs: { expressionsList: "expressionsList", column: "column", selectedOperator: "selectedOperator", filteringService: "filteringService", overlayComponentId: "overlayComponentId" }, viewQueries: [{ propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true, read: IgxToggleDirective, static: true }, { propertyName: "defaultExpressionTemplate", first: true, predicate: ["defaultExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "dateExpressionTemplate", first: true, predicate: ["dateExpressionTemplate"], descendants: true, read: TemplateRef }, { propertyName: "expressionsContainer", first: true, predicate: ["expressionsContainer"], descendants: true, static: true }, { propertyName: "expressionComponents", predicate: IgxExcelStyleDefaultExpressionComponent, descendants: true }, { propertyName: "expressionDateComponents", predicate: IgxExcelStyleDateExpressionComponent, descendants: true }], ngImport: i0, template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"closeDialog()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button type=\"button\"\n igxButton=\"contained\"\n (click)=\"onApplyButtonClick()\"\n (keydown)=\"onApplyButtonKeyDown($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxExcelStyleDateExpressionComponent, selector: "igx-excel-style-date-expression", inputs: ["searchVal"] }, { kind: "component", type: IgxExcelStyleDefaultExpressionComponent, selector: "igx-excel-style-default-expression", inputs: ["column", "expressionUI", "expressionsList", "grid"], outputs: ["expressionRemoved", "logicOperatorChanged"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }] }); }
|
|
50196
51367
|
}
|
|
50197
51368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxExcelStyleCustomDialogComponent, decorators: [{
|
|
50198
51369
|
type: Component,
|
|
50199
|
-
args: [{ selector: 'igx-excel-style-custom-dialog', imports: [IgxToggleDirective, NgClass, NgIf, NgFor, IgxExcelStyleDateExpressionComponent, IgxExcelStyleDefaultExpressionComponent, IgxButtonDirective, IgxIconComponent], template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"
|
|
50200
|
-
}], ctorParameters: () => [{ type: IgxOverlayService }, { type: i0.ChangeDetectorRef }, { type: PlatformUtil }
|
|
51370
|
+
args: [{ selector: 'igx-excel-style-custom-dialog', imports: [IgxToggleDirective, NgClass, NgIf, NgFor, IgxExcelStyleDateExpressionComponent, IgxExcelStyleDefaultExpressionComponent, IgxButtonDirective, IgxIconComponent], template: "<article #toggle igxToggle\n class=\"igx-excel-filter__secondary\"\n [ngClass]=\"{\n 'igx-excel-filter__secondary--cosy': grid.gridSize === '2',\n 'igx-excel-filter__secondary--compact': grid.gridSize === '1'\n }\"\n (keydown)=\"onKeyDown($event)\"\n (opening)=\"onCustomDialogOpening()\"\n (opened)=\"onCustomDialogOpened()\">\n <header class=\"igx-excel-filter__secondary-header\">\n <h4 class=\"ig-typography__h6\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_header }}{{ column.header || column.field }}\n </h4>\n </header>\n\n <article #expressionsContainer class=\"igx-excel-filter__secondary-main\">\n <ng-container *ngIf=\"column.dataType === 'date' || column.dataType === 'dateTime' || column.dataType === 'time'\">\n <igx-excel-style-date-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-date-expression>\n </ng-container>\n\n <ng-container *ngIf=\"column.dataType !== 'date' && column.dataType !== 'dateTime' && column.dataType !== 'time'\">\n <igx-excel-style-default-expression *ngFor=\"let expression of expressionsList;\"\n class=\"igx-excel-filter__condition\"\n [expressionUI]=\"expression\"\n [column]=\"column\"\n [grid]=\"grid\"\n [expressionsList]=\"expressionsList\"\n (expressionRemoved)=\"onExpressionRemoved($event)\"\n (logicOperatorChanged)=\"onLogicOperatorChanged($event)\">\n </igx-excel-style-default-expression>\n </ng-container>\n\n <button type=\"button\" igxButton\n class=\"igx-excel-filter__add-filter\"\n (click)=\"onAddButtonClick()\">\n <igx-icon family=\"default\" name=\"add\"></igx-icon>\n <span>{{ grid.resourceStrings.igx_grid_excel_custom_dialog_add }}</span>\n </button>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"onClearButtonClick()\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\"\n igxButton=\"flat\"\n (click)=\"closeDialog()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button type=\"button\"\n igxButton=\"contained\"\n (click)=\"onApplyButtonClick()\"\n (keydown)=\"onApplyButtonKeyDown($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n" }]
|
|
51371
|
+
}], ctorParameters: () => [{ type: IgxOverlayService }, { type: i0.ChangeDetectorRef }, { type: PlatformUtil }], propDecorators: { expressionsList: [{
|
|
50201
51372
|
type: Input
|
|
50202
51373
|
}], column: [{
|
|
50203
51374
|
type: Input
|
|
@@ -50232,7 +51403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
50232
51403
|
*/
|
|
50233
51404
|
class IgxExcelStyleConditionalFilterComponent {
|
|
50234
51405
|
get filterNumber() {
|
|
50235
|
-
return this.esf.expressionsList.
|
|
51406
|
+
return this.esf.expressionsList.length;
|
|
50236
51407
|
}
|
|
50237
51408
|
constructor(esf, platform) {
|
|
50238
51409
|
this.esf = esf;
|
|
@@ -50324,9 +51495,6 @@ class IgxExcelStyleConditionalFilterComponent {
|
|
|
50324
51495
|
this.esf.expressionsList[0].expression.condition.name !== 'in') {
|
|
50325
51496
|
this.customDialog.expressionsList = this.esf.expressionsList;
|
|
50326
51497
|
}
|
|
50327
|
-
else {
|
|
50328
|
-
this.customDialog.expressionsList = this.customDialog.expressionsList.filter(e => e.expression.fieldName === this.esf.column.field && e.expression.condition);
|
|
50329
|
-
}
|
|
50330
51498
|
this.customDialog.selectedOperator = eventArgs.newSelection.value;
|
|
50331
51499
|
eventArgs.cancel = true;
|
|
50332
51500
|
if (this.esf.overlayComponentId) {
|
|
@@ -54335,6 +55503,7 @@ class IgxExcelStyleSearchComponent {
|
|
|
54335
55503
|
}
|
|
54336
55504
|
filterTree.filteringOperands.push({
|
|
54337
55505
|
condition,
|
|
55506
|
+
conditionName: condition.name,
|
|
54338
55507
|
fieldName: this.esf.column.field,
|
|
54339
55508
|
ignoreCase: this.esf.column.filteringIgnoreCase,
|
|
54340
55509
|
searchVal: element.value
|
|
@@ -54350,6 +55519,7 @@ class IgxExcelStyleSearchComponent {
|
|
|
54350
55519
|
}
|
|
54351
55520
|
filterTree.filteringOperands.push({
|
|
54352
55521
|
condition: this.createCondition('in'),
|
|
55522
|
+
conditionName: 'in',
|
|
54353
55523
|
fieldName: this.esf.column.field,
|
|
54354
55524
|
ignoreCase: this.esf.column.filteringIgnoreCase,
|
|
54355
55525
|
searchVal: new Set(this.esf.column.dataType === GridColumnDataType.Date ?
|
|
@@ -54363,6 +55533,7 @@ class IgxExcelStyleSearchComponent {
|
|
|
54363
55533
|
if (blanksItem) {
|
|
54364
55534
|
filterTree.filteringOperands.push({
|
|
54365
55535
|
condition: this.createCondition('empty'),
|
|
55536
|
+
conditionName: 'empty',
|
|
54366
55537
|
fieldName: this.esf.column.field,
|
|
54367
55538
|
ignoreCase: this.esf.column.filteringIgnoreCase,
|
|
54368
55539
|
searchVal: blanksItem.value
|
|
@@ -55056,8 +56227,7 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
|
|
|
55056
56227
|
this.filterValues = this.generateFilterValues();
|
|
55057
56228
|
this.generateListData();
|
|
55058
56229
|
this.expressionsList.forEach(expr => {
|
|
55059
|
-
if (this.column.dataType === GridColumnDataType.String && this.column.filteringIgnoreCase &&
|
|
55060
|
-
expr.expression.searchVal && expr.expression.searchVal instanceof Set) {
|
|
56230
|
+
if (this.column.dataType === GridColumnDataType.String && this.column.filteringIgnoreCase && expr.expression.searchVal) {
|
|
55061
56231
|
this.modifyExpression(expr);
|
|
55062
56232
|
}
|
|
55063
56233
|
});
|
|
@@ -55466,8 +56636,8 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
|
|
|
55466
56636
|
this.ghostElement.style.flexBasis = null;
|
|
55467
56637
|
this.ghostElement.style.position = null;
|
|
55468
56638
|
this.ghostElement.classList.remove(this.columnSelectedClass);
|
|
55469
|
-
const icon =
|
|
55470
|
-
const text =
|
|
56639
|
+
const icon = document.createElement('i');
|
|
56640
|
+
const text = document.createTextNode('block');
|
|
55471
56641
|
icon.appendChild(text);
|
|
55472
56642
|
icon.classList.add('material-icons');
|
|
55473
56643
|
this.cms.icon = icon;
|
|
@@ -55907,7 +57077,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
55907
57077
|
class IgxHeaderGroupWidthPipe {
|
|
55908
57078
|
transform(width, minWidth, hasLayout) {
|
|
55909
57079
|
const isFitContent = width === 'fit-content';
|
|
55910
|
-
return hasLayout ? '' : isFitContent ? width : `${Math.max(
|
|
57080
|
+
return hasLayout ? '' : isFitContent ? width : `${Math.max(parseInt(width), minWidth)}px`;
|
|
55911
57081
|
}
|
|
55912
57082
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxHeaderGroupWidthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
55913
57083
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: IgxHeaderGroupWidthPipe, isStandalone: true, name: "igxHeaderGroupWidth" }); }
|
|
@@ -55962,7 +57132,7 @@ class IgxColumnResizingService {
|
|
|
55962
57132
|
* @hidden
|
|
55963
57133
|
*/
|
|
55964
57134
|
getColumnHeaderRenderedWidth() {
|
|
55965
|
-
return
|
|
57135
|
+
return this.column.headerCell.nativeElement.getBoundingClientRect().width;
|
|
55966
57136
|
}
|
|
55967
57137
|
/**
|
|
55968
57138
|
* @hidden
|
|
@@ -56018,9 +57188,9 @@ class IgxColumnResizingService {
|
|
|
56018
57188
|
/**
|
|
56019
57189
|
* Resizes the column regaridng to the column minWidth and maxWidth.
|
|
56020
57190
|
*/
|
|
56021
|
-
resizeColumn(event
|
|
57191
|
+
resizeColumn(event) {
|
|
56022
57192
|
this.showResizer = false;
|
|
56023
|
-
const diff =
|
|
57193
|
+
const diff = event.clientX - this.startResizePos;
|
|
56024
57194
|
const colWidth = this.column.width;
|
|
56025
57195
|
const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;
|
|
56026
57196
|
let currentColWidth = parseFloat(colWidth);
|
|
@@ -56852,7 +58022,7 @@ class IgxFilteringService {
|
|
|
56852
58022
|
newExpressionsTree.filteringOperands = [...filteringState.filteringOperands];
|
|
56853
58023
|
}
|
|
56854
58024
|
if (condition) {
|
|
56855
|
-
const newExpression = { fieldName, searchVal, condition, ignoreCase };
|
|
58025
|
+
const newExpression = { fieldName: fieldName, searchVal, condition, conditionName: condition.name, ignoreCase };
|
|
56856
58026
|
expressionsTree = new FilteringExpressionsTree(filteringState.operator, fieldName);
|
|
56857
58027
|
expressionsTree.filteringOperands.push(newExpression);
|
|
56858
58028
|
}
|
|
@@ -57040,7 +58210,7 @@ class IgxGridFilteringCellComponent {
|
|
|
57040
58210
|
const chipsAreaElements = this.chipsArea.element.nativeElement.children;
|
|
57041
58211
|
let visibleChipsCount = 0;
|
|
57042
58212
|
const moreIconWidth = this.moreIcon.nativeElement.offsetWidth -
|
|
57043
|
-
parseInt(
|
|
58213
|
+
parseInt(document.defaultView.getComputedStyle(this.moreIcon.nativeElement)['margin-left'], 10);
|
|
57044
58214
|
for (let index = 0; index < chipsAreaElements.length - 1; index++) {
|
|
57045
58215
|
if (viewWidth + chipsAreaElements[index].offsetWidth < areaWidth) {
|
|
57046
58216
|
viewWidth += chipsAreaElements[index].offsetWidth;
|
|
@@ -57048,8 +58218,8 @@ class IgxGridFilteringCellComponent {
|
|
|
57048
58218
|
visibleChipsCount++;
|
|
57049
58219
|
}
|
|
57050
58220
|
else {
|
|
57051
|
-
viewWidth += parseInt(
|
|
57052
|
-
viewWidth += parseInt(
|
|
58221
|
+
viewWidth += parseInt(document.defaultView.getComputedStyle(chipsAreaElements[index])['margin-left'], 10);
|
|
58222
|
+
viewWidth += parseInt(document.defaultView.getComputedStyle(chipsAreaElements[index])['margin-right'], 10);
|
|
57053
58223
|
}
|
|
57054
58224
|
}
|
|
57055
58225
|
else {
|
|
@@ -58034,7 +59204,7 @@ class IgxGridFilteringRowComponent {
|
|
|
58034
59204
|
return;
|
|
58035
59205
|
}
|
|
58036
59206
|
requestAnimationFrame(() => {
|
|
58037
|
-
const focusedElement =
|
|
59207
|
+
const focusedElement = document.activeElement;
|
|
58038
59208
|
if (focusedElement.classList.contains('igx-chip__remove')) {
|
|
58039
59209
|
return;
|
|
58040
59210
|
}
|
|
@@ -58116,7 +59286,7 @@ class IgxGridFilteringRowComponent {
|
|
|
58116
59286
|
requestAnimationFrame(() => this.focusEditElement());
|
|
58117
59287
|
}
|
|
58118
59288
|
onChipPointerdown(args, chip) {
|
|
58119
|
-
const activeElement =
|
|
59289
|
+
const activeElement = document.activeElement;
|
|
58120
59290
|
this._cancelChipClick = chip.selected
|
|
58121
59291
|
&& activeElement && this.editorFocused(activeElement);
|
|
58122
59292
|
}
|
|
@@ -58269,6 +59439,7 @@ class IgxGridFilteringRowComponent {
|
|
|
58269
59439
|
this.expression = {
|
|
58270
59440
|
fieldName: this.column.field,
|
|
58271
59441
|
condition: null,
|
|
59442
|
+
conditionName: null,
|
|
58272
59443
|
searchVal: null,
|
|
58273
59444
|
ignoreCase: this.column.filteringIgnoreCase
|
|
58274
59445
|
};
|
|
@@ -60335,9 +61506,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
60335
61506
|
* @internal
|
|
60336
61507
|
*/
|
|
60337
61508
|
class IgxColumnResizerDirective {
|
|
60338
|
-
get ratio() {
|
|
60339
|
-
return this._ratio;
|
|
60340
|
-
}
|
|
60341
61509
|
constructor(element, document, zone) {
|
|
60342
61510
|
this.element = element;
|
|
60343
61511
|
this.document = document;
|
|
@@ -60348,10 +61516,9 @@ class IgxColumnResizerDirective {
|
|
|
60348
61516
|
this.resizeStart = new Subject();
|
|
60349
61517
|
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
60350
61518
|
this.resize = new Subject();
|
|
60351
|
-
this._ratio = 1;
|
|
60352
61519
|
this._destroy = new Subject();
|
|
60353
61520
|
this.resizeStart.pipe(takeUntil(this._destroy), map((event) => event.clientX), switchMap((offset) => this.resize
|
|
60354
|
-
.pipe(takeUntil(this._destroy), takeUntil(this.resizeEnd), map((event) =>
|
|
61521
|
+
.pipe(takeUntil(this._destroy), takeUntil(this.resizeEnd), map((event) => event.clientX - offset))))
|
|
60355
61522
|
.subscribe((pos) => {
|
|
60356
61523
|
const left = this._left + pos;
|
|
60357
61524
|
const min = this._left - this.restrictHResizeMin;
|
|
@@ -60394,12 +61561,7 @@ class IgxColumnResizerDirective {
|
|
|
60394
61561
|
onMousedown(event) {
|
|
60395
61562
|
event.preventDefault();
|
|
60396
61563
|
const parent = this.element.nativeElement.parentElement.parentElement;
|
|
60397
|
-
|
|
60398
|
-
const parentComputedWidth = parseFloat(window.getComputedStyle(parent).width);
|
|
60399
|
-
if (Math.abs(parentRectWidth - parentComputedWidth) > 1) {
|
|
60400
|
-
this._ratio = parentRectWidth / parentComputedWidth;
|
|
60401
|
-
}
|
|
60402
|
-
this.left = this._left = (event.clientX - parent.getBoundingClientRect().left) / this._ratio;
|
|
61564
|
+
this.left = this._left = event.clientX - parent.getBoundingClientRect().left;
|
|
60403
61565
|
this.top = event.target.getBoundingClientRect().top - parent.getBoundingClientRect().top;
|
|
60404
61566
|
this.resizeStart.next(event);
|
|
60405
61567
|
}
|
|
@@ -60438,11 +61600,11 @@ class IgxGridColumnResizerComponent {
|
|
|
60438
61600
|
this.colResizingService = colResizingService;
|
|
60439
61601
|
}
|
|
60440
61602
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxGridColumnResizerComponent, deps: [{ token: IgxColumnResizingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60441
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxGridColumnResizerComponent, isStandalone: true, selector: "igx-grid-column-resizer", inputs: { restrictResizerTop: "restrictResizerTop" }, viewQueries: [{ propertyName: "resizer", first: true, predicate: IgxColumnResizerDirective, descendants: true, static: true }], ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event
|
|
61603
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxGridColumnResizerComponent, isStandalone: true, selector: "igx-grid-column-resizer", inputs: { restrictResizerTop: "restrictResizerTop" }, viewQueries: [{ propertyName: "resizer", first: true, predicate: IgxColumnResizerDirective, descendants: true, static: true }], ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n", dependencies: [{ kind: "directive", type: IgxColumnResizerDirective, selector: "[igxResizer]", inputs: ["restrictHResizeMin", "restrictHResizeMax", "restrictResizerTop"], outputs: ["resizeEnd", "resizeStart", "resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
60442
61604
|
}
|
|
60443
61605
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxGridColumnResizerComponent, decorators: [{
|
|
60444
61606
|
type: Component,
|
|
60445
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-column-resizer', imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event
|
|
61607
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-column-resizer', imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n" }]
|
|
60446
61608
|
}], ctorParameters: () => [{ type: IgxColumnResizingService }], propDecorators: { restrictResizerTop: [{
|
|
60447
61609
|
type: Input
|
|
60448
61610
|
}], resizer: [{
|
|
@@ -64172,10 +65334,6 @@ class IgxGridBaseDirective {
|
|
|
64172
65334
|
* @hidden @internal
|
|
64173
65335
|
*/
|
|
64174
65336
|
this.filteringPipeTrigger = 0;
|
|
64175
|
-
/**
|
|
64176
|
-
* @hidden @internal
|
|
64177
|
-
*/
|
|
64178
|
-
this.isColumnWidthSum = false;
|
|
64179
65337
|
/**
|
|
64180
65338
|
* @hidden @internal
|
|
64181
65339
|
*/
|
|
@@ -64304,6 +65462,7 @@ class IgxGridBaseDirective {
|
|
|
64304
65462
|
this._rowSelectionMode = GridSelectionMode.none;
|
|
64305
65463
|
this._selectRowOnClick = true;
|
|
64306
65464
|
this._columnSelectionMode = GridSelectionMode.none;
|
|
65465
|
+
this.isColumnWidthSum = false;
|
|
64307
65466
|
this.rowEditPositioningStrategy = new RowEditPositionStrategy({
|
|
64308
65467
|
horizontalDirection: HorizontalAlignment.Right,
|
|
64309
65468
|
verticalDirection: VerticalAlignment.Bottom,
|
|
@@ -65348,7 +66507,7 @@ class IgxGridBaseDirective {
|
|
|
65348
66507
|
let totalWidth = 0;
|
|
65349
66508
|
let i = 0;
|
|
65350
66509
|
for (i; i < cols.length; i++) {
|
|
65351
|
-
totalWidth +=
|
|
66510
|
+
totalWidth += parseInt(cols[i].calcWidth, 10) || 0;
|
|
65352
66511
|
}
|
|
65353
66512
|
this._totalWidth = totalWidth;
|
|
65354
66513
|
return totalWidth;
|
|
@@ -66113,7 +67272,7 @@ class IgxGridBaseDirective {
|
|
|
66113
67272
|
}
|
|
66114
67273
|
else {
|
|
66115
67274
|
computedWidth = this.calcWidth ||
|
|
66116
|
-
|
|
67275
|
+
parseInt(this.document.defaultView.getComputedStyle(this.nativeElement).getPropertyValue('width'), 10);
|
|
66117
67276
|
}
|
|
66118
67277
|
const visibleChildColumns = this.visibleColumns.filter(c => !c.columnGroup);
|
|
66119
67278
|
// Column layouts related
|
|
@@ -66132,7 +67291,7 @@ class IgxGridBaseDirective {
|
|
|
66132
67291
|
const sumExistingWidths = columnsWithSetWidths
|
|
66133
67292
|
.reduce((prev, curr) => {
|
|
66134
67293
|
const colWidth = curr.width;
|
|
66135
|
-
let widthValue =
|
|
67294
|
+
let widthValue = parseInt(colWidth, 10);
|
|
66136
67295
|
if (isNaN(widthValue)) {
|
|
66137
67296
|
widthValue = MINIMUM_COLUMN_WIDTH$1;
|
|
66138
67297
|
}
|
|
@@ -66146,9 +67305,9 @@ class IgxGridBaseDirective {
|
|
|
66146
67305
|
return '0px';
|
|
66147
67306
|
}
|
|
66148
67307
|
computedWidth -= this.featureColumnsWidth();
|
|
66149
|
-
const columnWidth = !Number.isFinite(sumExistingWidths) ?
|
|
67308
|
+
const columnWidth = Math.floor(!Number.isFinite(sumExistingWidths) ?
|
|
66150
67309
|
Math.max(computedWidth / columnsToSize, this.minColumnWidth) :
|
|
66151
|
-
Math.max((computedWidth - sumExistingWidths) / columnsToSize, this.minColumnWidth);
|
|
67310
|
+
Math.max((computedWidth - sumExistingWidths) / columnsToSize, this.minColumnWidth));
|
|
66152
67311
|
return columnWidth + 'px';
|
|
66153
67312
|
}
|
|
66154
67313
|
/**
|
|
@@ -67117,11 +68276,8 @@ class IgxGridBaseDirective {
|
|
|
67117
68276
|
width = this.nativeElement.offsetWidth;
|
|
67118
68277
|
}
|
|
67119
68278
|
if (this.width === null || !width) {
|
|
67120
|
-
this.isColumnWidthSum = true;
|
|
67121
68279
|
width = this.getColumnWidthSum();
|
|
67122
|
-
|
|
67123
|
-
else {
|
|
67124
|
-
this.isColumnWidthSum = false;
|
|
68280
|
+
this.isColumnWidthSum = true;
|
|
67125
68281
|
}
|
|
67126
68282
|
if (this.hasVerticalScroll() && this.width !== null) {
|
|
67127
68283
|
width -= this.scrollSize;
|
|
@@ -67140,8 +68296,8 @@ class IgxGridBaseDirective {
|
|
|
67140
68296
|
this._columnWidth = this.width !== null ? this.getPossibleColumnWidth() : this.minColumnWidth + 'px';
|
|
67141
68297
|
}
|
|
67142
68298
|
this._columns.forEach((column) => {
|
|
67143
|
-
if (this.hasColumnLayouts &&
|
|
67144
|
-
const columnWidthCombined =
|
|
68299
|
+
if (this.hasColumnLayouts && parseInt(this._columnWidth, 10)) {
|
|
68300
|
+
const columnWidthCombined = parseInt(this._columnWidth, 10) * (column.colEnd ? column.colEnd - column.colStart : 1);
|
|
67145
68301
|
column.defaultWidth = columnWidthCombined + 'px';
|
|
67146
68302
|
}
|
|
67147
68303
|
else {
|
|
@@ -68067,7 +69223,7 @@ class IgxGridBaseDirective {
|
|
|
68067
69223
|
get renderedActualRowHeight() {
|
|
68068
69224
|
let border = 1;
|
|
68069
69225
|
if (this.rowList.toArray().length > 0) {
|
|
68070
|
-
const rowStyles =
|
|
69226
|
+
const rowStyles = document.defaultView.getComputedStyle(this.rowList.first.nativeElement);
|
|
68071
69227
|
border = rowStyles.borderBottomWidth ? Math.ceil(parseFloat(rowStyles.borderBottomWidth)) : border;
|
|
68072
69228
|
}
|
|
68073
69229
|
return this.rowHeight + border;
|
|
@@ -74660,11 +75816,11 @@ class IgxPivotGridColumnResizerComponent extends IgxGridColumnResizerComponent {
|
|
|
74660
75816
|
this.colResizingService = colResizingService;
|
|
74661
75817
|
}
|
|
74662
75818
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxPivotGridColumnResizerComponent, deps: [{ token: IgxPivotColumnResizingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74663
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxPivotGridColumnResizerComponent, isStandalone: true, selector: "igx-pivot-grid-column-resizer", usesInheritance: true, ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event
|
|
75819
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: IgxPivotGridColumnResizerComponent, isStandalone: true, selector: "igx-pivot-grid-column-resizer", usesInheritance: true, ngImport: i0, template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n", dependencies: [{ kind: "directive", type: IgxColumnResizerDirective, selector: "[igxResizer]", inputs: ["restrictHResizeMin", "restrictHResizeMax", "restrictResizerTop"], outputs: ["resizeEnd", "resizeStart", "resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
74664
75820
|
}
|
|
74665
75821
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxPivotGridColumnResizerComponent, decorators: [{
|
|
74666
75822
|
type: Component,
|
|
74667
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-grid-column-resizer', imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event
|
|
75823
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-grid-column-resizer', imports: [IgxColumnResizerDirective], template: "<div class=\"igx-grid-th__resize-line\"\n [style.left.px]=\"-99999\" igxResizer\n [style.height.px]=\"colResizingService.resizerHeight\"\n [restrictHResizeMax]=\"colResizingService.restrictResizeMax\"\n [restrictHResizeMin]=\"colResizingService.restrictResizeMin\"\n [restrictResizerTop]=\"restrictResizerTop\"\n (resizeEnd)=\"colResizingService.resizeColumn($event)\">\n</div>\n" }]
|
|
74668
75824
|
}], ctorParameters: () => [{ type: IgxPivotColumnResizingService }] });
|
|
74669
75825
|
|
|
74670
75826
|
class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {
|
|
@@ -78432,7 +79588,7 @@ class IgxGridStateBaseDirective {
|
|
|
78432
79588
|
expr.searchVal = new Set(expr.searchVal);
|
|
78433
79589
|
}
|
|
78434
79590
|
else {
|
|
78435
|
-
expr.searchVal = expr.searchVal && (dataType === 'date' || dataType === 'dateTime') ? new Date(Date.parse(expr.searchVal)) : expr.searchVal;
|
|
79591
|
+
expr.searchVal = expr.searchVal && (dataType === 'date' || dataType === 'dateTime') ? new Date(Date.parse(expr.searchVal.toString())) : expr.searchVal;
|
|
78436
79592
|
}
|
|
78437
79593
|
const condition = this.generateFilteringCondition(dataType, expr.condition.name) ||
|
|
78438
79594
|
this.currGrid.columns.find(c => c.field === expr.fieldName).filters.condition(expr.condition.name);
|
|
@@ -83455,7 +84611,6 @@ class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective {
|
|
|
83455
84611
|
const columns = [];
|
|
83456
84612
|
const topLevelCols = cols.filter(c => c.level === 0);
|
|
83457
84613
|
topLevelCols.forEach((col) => {
|
|
83458
|
-
col.grid = this;
|
|
83459
84614
|
const ref = this._createColumn(col);
|
|
83460
84615
|
ref.changeDetectorRef.detectChanges();
|
|
83461
84616
|
columns.push(ref.instance);
|
|
@@ -83750,7 +84905,7 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
|
|
|
83750
84905
|
set expandChildren(value) {
|
|
83751
84906
|
this._defaultExpandState = value;
|
|
83752
84907
|
this.rowIslandAPI.getChildGrids().forEach((grid) => {
|
|
83753
|
-
if (
|
|
84908
|
+
if (document.body.contains(grid.nativeElement)) {
|
|
83754
84909
|
// Detect changes right away if the grid is visible
|
|
83755
84910
|
grid.expandChildren = value;
|
|
83756
84911
|
grid.cdr.detectChanges();
|
|
@@ -83995,7 +85150,7 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
|
|
|
83995
85150
|
this.updateColumns(this._childColumns);
|
|
83996
85151
|
this.rowIslandAPI.getChildGrids().forEach((grid) => {
|
|
83997
85152
|
grid.createColumnsList(this._childColumns);
|
|
83998
|
-
if (!
|
|
85153
|
+
if (!document.body.contains(grid.nativeElement)) {
|
|
83999
85154
|
grid.updateOnRender = true;
|
|
84000
85155
|
}
|
|
84001
85156
|
});
|
|
@@ -93084,7 +94239,7 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
|
|
|
93084
94239
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0", type: IgxDateRangePickerComponent, isStandalone: true, selector: "igx-date-range-picker", inputs: { displayMonthsCount: "displayMonthsCount", hideOutsideDays: ["hideOutsideDays", "hideOutsideDays", booleanAttribute], formatter: "formatter", doneButtonText: "doneButtonText", overlaySettings: "overlaySettings", displayFormat: "displayFormat", inputFormat: "inputFormat", minValue: "minValue", maxValue: "maxValue", resourceStrings: "resourceStrings", placeholder: "placeholder", outlet: "outlet", showWeekNumbers: ["showWeekNumbers", "showWeekNumbers", booleanAttribute], locale: "locale", value: "value" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.igx-date-range-picker": "this.cssClass" } }, providers: [
|
|
93085
94240
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxDateRangePickerComponent, multi: true },
|
|
93086
94241
|
{ provide: NG_VALIDATORS, useExisting: IgxDateRangePickerComponent, multi: true }
|
|
93087
|
-
], queries: [{ propertyName: "label", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "pickerActions", first: true, predicate: IgxPickerActionsDirective, descendants: true }, { propertyName: "dateSeparatorTemplate", first: true, predicate: IgxDateRangeSeparatorDirective, descendants: true, read: TemplateRef }, { propertyName: "projectedInputs", predicate: IgxDateRangeInputsBaseComponent }], viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: IgxInputGroupComponent, descendants: true, read: ViewContainerRef }, { propertyName: "inputDirective", first: true, predicate: IgxInputDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"
|
|
94242
|
+
], queries: [{ propertyName: "label", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "pickerActions", first: true, predicate: IgxPickerActionsDirective, descendants: true }, { propertyName: "dateSeparatorTemplate", first: true, predicate: IgxDateRangeSeparatorDirective, descendants: true, read: TemplateRef }, { propertyName: "projectedInputs", predicate: IgxDateRangeInputsBaseComponent }], viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: IgxInputGroupComponent, descendants: true, read: ViewContainerRef }, { propertyName: "inputDirective", first: true, predicate: IgxInputDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n <igx-input-group [type]=\"type\" (click)=\"open()\">\n <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n <input #singleInput igxInput type=\"text\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n <igx-prefix *ngIf=\"!toggleComponents.length\">\n <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n </igx-prefix>\n\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,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n </igx-input-group>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { 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: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "pipe", type: DateRangePickerFormatPipe, name: "dateRange" }] }); }
|
|
93088
94243
|
}
|
|
93089
94244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxDateRangePickerComponent, decorators: [{
|
|
93090
94245
|
type: Component,
|
|
@@ -93099,7 +94254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
93099
94254
|
IgxInputDirective,
|
|
93100
94255
|
IgxPrefixDirective,
|
|
93101
94256
|
DateRangePickerFormatPipe
|
|
93102
|
-
], template: "<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"
|
|
94257
|
+
], template: "<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n <igx-input-group [type]=\"type\" (click)=\"open()\">\n <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n <input #singleInput igxInput type=\"text\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n <igx-prefix *ngIf=\"!toggleComponents.length\">\n <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n </igx-prefix>\n\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,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n </igx-input-group>\n</ng-template>\n" }]
|
|
93103
94258
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
93104
94259
|
type: Inject,
|
|
93105
94260
|
args: [LOCALE_ID]
|
|
@@ -93195,7 +94350,8 @@ const IGX_TREE_DIRECTIVES = [
|
|
|
93195
94350
|
/* NOTE: Query builder directives collection for ease-of-use import in standalone components scenario */
|
|
93196
94351
|
const IGX_QUERY_BUILDER_DIRECTIVES = [
|
|
93197
94352
|
IgxQueryBuilderComponent,
|
|
93198
|
-
IgxQueryBuilderHeaderComponent
|
|
94353
|
+
IgxQueryBuilderHeaderComponent,
|
|
94354
|
+
IgxQueryBuilderSearchValueTemplateDirective,
|
|
93199
94355
|
];
|
|
93200
94356
|
|
|
93201
94357
|
/**
|
|
@@ -94090,7 +95246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
94090
95246
|
*/
|
|
94091
95247
|
class IgxQueryBuilderModule {
|
|
94092
95248
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
94093
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderModule, imports: [IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent], exports: [IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent] }); }
|
|
95249
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderModule, imports: [IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderSearchValueTemplateDirective], exports: [IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderSearchValueTemplateDirective] }); }
|
|
94094
95250
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderModule, imports: [IgxQueryBuilderComponent] }); }
|
|
94095
95251
|
}
|
|
94096
95252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: IgxQueryBuilderModule, decorators: [{
|
|
@@ -94373,5 +95529,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
94373
95529
|
* Generated bundle index. Do not edit.
|
|
94374
95530
|
*/
|
|
94375
95531
|
|
|
94376
|
-
export { AbsolutePosition, AbsoluteScrollStrategy, ActionStripResourceStringsEN, AutoPositionStrategy, BannerResourceStringsEN, BaseFilteringStrategy, BlockScrollStrategy, ButtonGroupAlignment, CachedDataCloneStrategy, Calendar, CalendarResourceStringsEN, CalendarSelection, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CarouselResourceStringsEN, ChipResourceStringsEN, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ComboResourceStringsEN, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DEFAULT_PIVOT_KEYS, DataType, DataUtil, DatePart, DatePickerResourceStringsEN, DateRangePickerFormatPipe, DateRangePickerResourceStringsEN, DateRangeType, DefaultDataCloneStrategy, DefaultPivotGridRecordSortingStrategy, DefaultPivotSortingStrategy, DefaultSortingStrategy, DimensionValuesFilteringStrategy, Direction, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportHeaderType, ExportRecordType, ExpressionsTreeUtil, FilterMode, FilterUtil, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, FormattedValuesSortingStrategy, GRID_LEVEL_COL, GRID_PARENT, GRID_ROOT_SUMMARY, GlobalPositionStrategy, GridColumnDataType, GridPagingMode, GridResourceStringsEN, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupMemberCountSortingStrategy, GroupedRecords, HorizontalAlignment, HorizontalAnimationType, IGX_ACCORDION_DIRECTIVES, IGX_ACTION_STRIP_DIRECTIVES, IGX_BANNER_DIRECTIVES, IGX_BOTTOM_NAV_DIRECTIVES, IGX_BUTTON_GROUP_DIRECTIVES, IGX_CALENDAR_DIRECTIVES, IGX_CALENDAR_VIEW_ITEM, IGX_CARD_DIRECTIVES, IGX_CAROUSEL_DIRECTIVES, IGX_CHIPS_DIRECTIVES, IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES, IGX_COMBO_DIRECTIVES, IGX_DATE_PICKER_DIRECTIVES, IGX_DATE_RANGE_PICKER_DIRECTIVES, IGX_DIALOG_DIRECTIVES, IGX_DRAG_DROP_DIRECTIVES, IGX_DROP_DOWN_DIRECTIVES, IGX_EXPANSION_PANEL_DIRECTIVES, IGX_GRID_ACTION_STRIP_DIRECTIVES, IGX_GRID_BASE, IGX_GRID_COMMON_DIRECTIVES, IGX_GRID_DIRECTIVES, IGX_GRID_SERVICE_BASE, IGX_GRID_VALIDATION_DIRECTIVES, IGX_HIERARCHICAL_GRID_DIRECTIVES, IGX_INPUT_GROUP_DIRECTIVES, IGX_INPUT_GROUP_TYPE, IGX_LINEAR_PROGRESS_BAR_DIRECTIVES, IGX_LIST_DIRECTIVES, IGX_NAVBAR_DIRECTIVES, IGX_NAVIGATION_DRAWER_DIRECTIVES, IGX_PAGINATOR_DIRECTIVES, IGX_PIVOT_GRID_DIRECTIVES, IGX_PROGRESS_BAR_DIRECTIVES, IGX_QUERY_BUILDER_DIRECTIVES, IGX_RADIO_GROUP_DIRECTIVES, IGX_SELECT_DIRECTIVES, IGX_SIMPLE_COMBO_DIRECTIVES, IGX_SLIDER_DIRECTIVES, IGX_SPLITTER_DIRECTIVES, IGX_STEPPER_DIRECTIVES, IGX_TABS_DIRECTIVES, IGX_TIME_PICKER_DIRECTIVES, IGX_TOOLTIP_DIRECTIVES, IGX_TREE_DIRECTIVES, IGX_TREE_GRID_DIRECTIVES, ITreeGridAggregation, IgcFormControlDirective, IgcFormsModule, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripMenuItemDirective, IgxActionStripModule, IgxAdvancedFilteringDialogComponent, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerActionsDirective, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollPageDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarViewBaseDirective, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCarouselComponent, IgxCarouselIndicatorDirective, IgxCarouselModule, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCellValidationErrorDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxChildGridRowComponent, IgxChipComponent, IgxChipTypeVariant, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumPatternValidatorDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnComponent, IgxColumnEmailValidatorDirective, IgxColumnGroupComponent, IgxColumnHidingDirective, IgxColumnLayoutComponent, IgxColumnMaxLengthValidatorDirective, IgxColumnMaxValidatorDirective, IgxColumnMinLengthValidatorDirective, IgxColumnMinValidatorDirective, IgxColumnPinningDirective, IgxColumnRequiredValidatorDirective, IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboComponent, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboModule, IgxComboToggleIconDirective, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogActionsDirective, IgxDialogComponent, IgxDialogModule, IgxDialogTitleDirective, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragIndicatorIconDirective, IgxDragLocation, IgxDropDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleDateExpressionComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelDescriptionDirective, IgxExpansionPanelHeaderComponent, IgxExpansionPanelIconDirective, IgxExpansionPanelModule, IgxExpansionPanelTitleDirective, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxFocusTrapDirective, IgxFocusTrapModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridActionButtonComponent, IgxGridActionsBaseDirective, IgxGridCell, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridFooterComponent, IgxGridForOfContext, IgxGridForOfDirective, IgxGridHeaderComponent, IgxGridHeaderGroupComponent, IgxGridHeaderRowComponent, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridToolbarActionsComponent, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleComponent, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowSelectorDirective, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeadSelectorDirective, IgxHeaderCollapsedIndicatorDirective, IgxHeaderExpandedIndicatorDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHintDirective, IgxIconButtonDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxItemListDirective, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorContentDirective, IgxPaginatorDirective, IgxPaginatorModule, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPivotAggregate, IgxPivotDataSelectorComponent, IgxPivotDateAggregate, IgxPivotDateDimension, IgxPivotGridComponent, IgxPivotGridModule, IgxPivotNumericAggregate, IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotTimeAggregate, IgxPivotValueChipTemplateDirective, IgxPrefixDirective, IgxPrependDropStrategy, IgxProgressBarGradientDirective, IgxProgressBarModule, IgxProgressBarTextTemplateDirective, IgxProgressType, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderModule, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowAddTextDirective, IgxRowCollapsedIndicatorDirective, IgxRowDirective, IgxRowDragGhostDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTextDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandComponent, IgxRowSelectorDirective, IgxScrollInertiaDirective, IgxScrollInertiaModule, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSimpleComboComponent, IgxSimpleComboModule, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective, IgxSorting, IgxSplitBarComponent, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStepActiveIndicatorDirective, IgxStepCompletedIndicatorDirective, IgxStepComponent, IgxStepContentDirective, IgxStepIndicatorDirective, IgxStepInvalidIndicatorDirective, IgxStepSubtitleDirective, IgxStepTitleDirective, IgxStepType, IgxStepperComponent, IgxStepperModule, IgxStepperOrientation, IgxStepperTitlePosition, IgxStringFilteringOperand, IgxSuffixDirective, IgxSummaryOperand, IgxSummaryRow, IgxSummaryTemplateDirective, IgxSwitchComponent, IgxSwitchModule, IgxTabContentComponent, IgxTabHeaderComponent, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabsAlignment, IgxTabsComponent, IgxTabsModule, IgxTemplateOutletDirective, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextHighlightService, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimeItemDirective, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridComponent, IgxTreeGridGroupByAreaComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectionType, IgxYearsViewComponent, IndigoIcons, InputResourceStringsEN, LabelPosition, ListResourceStringsEN, NoOpScrollStrategy, NoopFilteringStrategy, NoopPivotDimensionsStrategy, NoopSortingStrategy, PaginatorResourceStringsEN, PagingError, PickerInteractionMode, PivotColumnDimensionsStrategy, PivotDimensionType, PivotRowDimensionsStrategy, PivotRowLayoutType, PivotSummaryPosition, Point, QueryBuilderResourceStringsEN, RadioGroupAlignment, RelativePosition, RelativePositionStrategy, RowPinningPosition, ScrollStrategy, Size, SliderHandle, SortingDirection, SplitterType, THEME_TOKEN, ThemeToken, TickLabelsOrientation, TicksOrientation, TimePickerResourceStringsEN, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, TreeResourceStringsEN, VerticalAlignment, VerticalAnimationType, WEEKDAYS, changei18n, comboIgnoreDiacriticsFilter, igxI18N, isLeap, monthRange, range, weekDay };
|
|
95532
|
+
export { AbsolutePosition, AbsoluteScrollStrategy, ActionStripResourceStringsEN, AutoPositionStrategy, BannerResourceStringsEN, BaseFilteringStrategy, BlockScrollStrategy, ButtonGroupAlignment, CachedDataCloneStrategy, Calendar, CalendarResourceStringsEN, CalendarSelection, CarouselAnimationType, CarouselHammerConfig, CarouselIndicatorsOrientation, CarouselResourceStringsEN, ChipResourceStringsEN, CloseScrollStrategy, ColumnDisplayOrder, ColumnPinningPosition, ComboResourceStringsEN, ConnectedPositioningStrategy, ContainerPositionStrategy, CsvFileTypes, DEFAULT_OWNER, DEFAULT_PIVOT_KEYS, DataType, DataUtil, DatePart, DatePickerResourceStringsEN, DateRangePickerFormatPipe, DateRangePickerResourceStringsEN, DateRangeType, DefaultDataCloneStrategy, DefaultPivotGridRecordSortingStrategy, DefaultPivotSortingStrategy, DefaultSortingStrategy, DimensionValuesFilteringStrategy, Direction, DragDirection, ElasticPositionStrategy, ExpansionPanelHeaderIconPosition, ExportHeaderType, ExportRecordType, ExpressionsTreeUtil, FilterMode, FilterUtil, FilteringExpressionsTree, FilteringExpressionsTreeType, FilteringLogic, FilteringStrategy, FormattedValuesFilteringStrategy, FormattedValuesSortingStrategy, GRID_LEVEL_COL, GRID_PARENT, GRID_ROOT_SUMMARY, GlobalPositionStrategy, GridColumnDataType, GridPagingMode, GridResourceStringsEN, GridSelectionMode, GridSummaryCalculationMode, GridSummaryPosition, GroupMemberCountSortingStrategy, GroupedRecords, HorizontalAlignment, HorizontalAnimationType, IGX_ACCORDION_DIRECTIVES, IGX_ACTION_STRIP_DIRECTIVES, IGX_BANNER_DIRECTIVES, IGX_BOTTOM_NAV_DIRECTIVES, IGX_BUTTON_GROUP_DIRECTIVES, IGX_CALENDAR_DIRECTIVES, IGX_CALENDAR_VIEW_ITEM, IGX_CARD_DIRECTIVES, IGX_CAROUSEL_DIRECTIVES, IGX_CHIPS_DIRECTIVES, IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES, IGX_COMBO_DIRECTIVES, IGX_DATE_PICKER_DIRECTIVES, IGX_DATE_RANGE_PICKER_DIRECTIVES, IGX_DIALOG_DIRECTIVES, IGX_DRAG_DROP_DIRECTIVES, IGX_DROP_DOWN_DIRECTIVES, IGX_EXPANSION_PANEL_DIRECTIVES, IGX_GRID_ACTION_STRIP_DIRECTIVES, IGX_GRID_BASE, IGX_GRID_COMMON_DIRECTIVES, IGX_GRID_DIRECTIVES, IGX_GRID_SERVICE_BASE, IGX_GRID_VALIDATION_DIRECTIVES, IGX_HIERARCHICAL_GRID_DIRECTIVES, IGX_INPUT_GROUP_DIRECTIVES, IGX_INPUT_GROUP_TYPE, IGX_LINEAR_PROGRESS_BAR_DIRECTIVES, IGX_LIST_DIRECTIVES, IGX_NAVBAR_DIRECTIVES, IGX_NAVIGATION_DRAWER_DIRECTIVES, IGX_PAGINATOR_DIRECTIVES, IGX_PIVOT_GRID_DIRECTIVES, IGX_PROGRESS_BAR_DIRECTIVES, IGX_QUERY_BUILDER_DIRECTIVES, IGX_RADIO_GROUP_DIRECTIVES, IGX_SELECT_DIRECTIVES, IGX_SIMPLE_COMBO_DIRECTIVES, IGX_SLIDER_DIRECTIVES, IGX_SPLITTER_DIRECTIVES, IGX_STEPPER_DIRECTIVES, IGX_TABS_DIRECTIVES, IGX_TIME_PICKER_DIRECTIVES, IGX_TOOLTIP_DIRECTIVES, IGX_TREE_DIRECTIVES, IGX_TREE_GRID_DIRECTIVES, ITreeGridAggregation, IgcFormControlDirective, IgcFormsModule, IgxAccordionComponent, IgxAccordionModule, IgxActionStripComponent, IgxActionStripMenuItemDirective, IgxActionStripModule, IgxAdvancedFilteringDialogComponent, IgxAppendDropStrategy, IgxAutocompleteDirective, IgxAutocompleteModule, IgxAvatarComponent, IgxAvatarModule, IgxAvatarSize, IgxAvatarType, IgxBadgeComponent, IgxBadgeModule, IgxBadgeType, IgxBannerActionsDirective, IgxBannerComponent, IgxBannerModule, IgxBaseExporter, IgxBaseTransactionService, IgxBooleanFilteringOperand, IgxBottomNavComponent, IgxBottomNavContentComponent, IgxBottomNavHeaderComponent, IgxBottomNavHeaderIconDirective, IgxBottomNavHeaderLabelDirective, IgxBottomNavItemComponent, IgxBottomNavModule, IgxButtonDirective, IgxButtonGroupComponent, IgxButtonGroupModule, IgxButtonModule, IgxCSVTextDirective, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarModule, IgxCalendarMonthDirective, IgxCalendarScrollPageDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarView, IgxCalendarViewBaseDirective, IgxCalendarYearDirective, IgxCardActionsComponent, IgxCardActionsLayout, IgxCardComponent, IgxCardContentDirective, IgxCardFooterDirective, IgxCardHeaderComponent, IgxCardHeaderSubtitleDirective, IgxCardHeaderTitleDirective, IgxCardMediaDirective, IgxCardModule, IgxCardThumbnailDirective, IgxCarouselComponent, IgxCarouselIndicatorDirective, IgxCarouselModule, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCellValidationErrorDirective, IgxCheckboxComponent, IgxCheckboxModule, IgxChildGridRowComponent, IgxChipComponent, IgxChipTypeVariant, IgxChipsAreaComponent, IgxChipsModule, IgxCircularProgressBarComponent, IgxCollapsibleIndicatorTemplateDirective, IgxColumPatternValidatorDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnComponent, IgxColumnEmailValidatorDirective, IgxColumnGroupComponent, IgxColumnHidingDirective, IgxColumnLayoutComponent, IgxColumnMaxLengthValidatorDirective, IgxColumnMaxValidatorDirective, IgxColumnMinLengthValidatorDirective, IgxColumnMinValidatorDirective, IgxColumnPinningDirective, IgxColumnRequiredValidatorDirective, IgxComboAddItemDirective, IgxComboClearIconDirective, IgxComboComponent, IgxComboEmptyDirective, IgxComboFooterDirective, IgxComboHeaderDirective, IgxComboHeaderItemDirective, IgxComboItemDirective, IgxComboModule, IgxComboToggleIconDirective, IgxCsvExporterOptions, IgxCsvExporterService, IgxDataLoadingTemplateDirective, IgxDataRecordSorting, IgxDateFilteringOperand, IgxDatePickerComponent, IgxDatePickerModule, IgxDateRangeEndComponent, IgxDateRangeInputsBaseComponent, IgxDateRangePickerComponent, IgxDateRangePickerModule, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent, IgxDateSummaryOperand, IgxDateTimeEditorDirective, IgxDateTimeEditorModule, IgxDateTimeFilteringOperand, IgxDaysViewComponent, IgxDefaultDropStrategy, IgxDialogActionsDirective, IgxDialogComponent, IgxDialogModule, IgxDialogTitleDirective, IgxDividerDirective, IgxDividerModule, IgxDividerType, IgxDragDirective, IgxDragDropModule, IgxDragHandleDirective, IgxDragIgnoreDirective, IgxDragIndicatorIconDirective, IgxDragLocation, IgxDropDirective, IgxDropDownComponent, IgxDropDownGroupComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, IgxDropDownModule, IgxEmptyListTemplateDirective, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleDateExpressionComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelDescriptionDirective, IgxExpansionPanelHeaderComponent, IgxExpansionPanelIconDirective, IgxExpansionPanelModule, IgxExpansionPanelTitleDirective, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilterDirective, IgxFilterModule, IgxFilterOptions, IgxFilterPipe, IgxFilteringOperand, IgxFlatTransactionFactory, IgxFlexDirective, IgxFocusDirective, IgxFocusModule, IgxFocusTrapDirective, IgxFocusTrapModule, IgxForOfContext, IgxForOfDirective, IgxForOfModule, IgxGridActionButtonComponent, IgxGridActionsBaseDirective, IgxGridCell, IgxGridComponent, IgxGridDetailTemplateDirective, IgxGridEditingActionsComponent, IgxGridExcelStyleFilteringComponent, IgxGridFooterComponent, IgxGridForOfContext, IgxGridForOfDirective, IgxGridHeaderComponent, IgxGridHeaderGroupComponent, IgxGridHeaderRowComponent, IgxGridModule, IgxGridPinningActionsComponent, IgxGridRow, IgxGridStateDirective, IgxGridToolbarActionsComponent, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleComponent, IgxGridTransaction, IgxGroupAreaDropDirective, IgxGroupByRow, IgxGroupByRowSelectorDirective, IgxGroupByRowTemplateDirective, IgxGroupedTreeGridSorting, IgxGrouping, IgxHeadSelectorDirective, IgxHeaderCollapsedIndicatorDirective, IgxHeaderExpandedIndicatorDirective, IgxHierarchicalGridComponent, IgxHierarchicalGridModule, IgxHierarchicalGridRow, IgxHierarchicalTransactionFactory, IgxHierarchicalTransactionService, IgxHintDirective, IgxIconButtonDirective, IgxIconComponent, IgxIconModule, IgxIconService, IgxInputDirective, IgxInputGroupComponent, IgxInputGroupModule, IgxInputState, IgxInsertDropStrategy, IgxItemListDirective, IgxLabelDirective, IgxLayoutDirective, IgxLayoutModule, IgxLinearProgressBarComponent, IgxListActionDirective, IgxListBaseDirective, IgxListComponent, IgxListItemComponent, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListModule, IgxListPanState, IgxListThumbnailDirective, IgxMaskDirective, IgxMaskModule, IgxMonthPickerComponent, IgxMonthsViewComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavbarActionDirective, IgxNavbarComponent, IgxNavbarModule, IgxNavbarTitleDirective, IgxNavigationCloseDirective, IgxNavigationDrawerComponent, IgxNavigationDrawerModule, IgxNavigationService, IgxNavigationToggleDirective, IgxNumberFilteringOperand, IgxNumberSummaryOperand, IgxOverlayOutletDirective, IgxOverlayService, IgxPageNavigationComponent, IgxPageSizeSelectorComponent, IgxPaginatorComponent, IgxPaginatorContentDirective, IgxPaginatorDirective, IgxPaginatorModule, IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent, IgxPivotAggregate, IgxPivotDataSelectorComponent, IgxPivotDateAggregate, IgxPivotDateDimension, IgxPivotGridComponent, IgxPivotGridModule, IgxPivotNumericAggregate, IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotTimeAggregate, IgxPivotValueChipTemplateDirective, IgxPrefixDirective, IgxPrependDropStrategy, IgxProgressBarGradientDirective, IgxProgressBarModule, IgxProgressBarTextTemplateDirective, IgxProgressType, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderModule, IgxQueryBuilderSearchValueTemplateDirective, IgxRadioComponent, IgxRadioGroupDirective, IgxRadioModule, IgxRippleDirective, IgxRippleModule, IgxRowAddTextDirective, IgxRowCollapsedIndicatorDirective, IgxRowDirective, IgxRowDragGhostDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTextDirective, IgxRowExpandedIndicatorDirective, IgxRowIslandComponent, IgxRowSelectorDirective, IgxScrollInertiaDirective, IgxScrollInertiaModule, IgxSelectComponent, IgxSelectFooterDirective, IgxSelectGroupComponent, IgxSelectHeaderDirective, IgxSelectItemComponent, IgxSelectModule, IgxSelectToggleIconDirective, IgxSimpleComboComponent, IgxSimpleComboModule, IgxSlideComponent, IgxSliderComponent, IgxSliderModule, IgxSliderType, IgxSnackbarComponent, IgxSnackbarModule, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective, IgxSorting, IgxSplitBarComponent, IgxSplitterComponent, IgxSplitterModule, IgxSplitterPaneComponent, IgxStepActiveIndicatorDirective, IgxStepCompletedIndicatorDirective, IgxStepComponent, IgxStepContentDirective, IgxStepIndicatorDirective, IgxStepInvalidIndicatorDirective, IgxStepSubtitleDirective, IgxStepTitleDirective, IgxStepType, IgxStepperComponent, IgxStepperModule, IgxStepperOrientation, IgxStepperTitlePosition, IgxStringFilteringOperand, IgxSuffixDirective, IgxSummaryOperand, IgxSummaryRow, IgxSummaryTemplateDirective, IgxSwitchComponent, IgxSwitchModule, IgxTabContentComponent, IgxTabHeaderComponent, IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective, IgxTabItemComponent, IgxTabsAlignment, IgxTabsComponent, IgxTabsModule, IgxTemplateOutletDirective, IgxTextAlign, IgxTextHighlightDirective, IgxTextHighlightModule, IgxTextHighlightService, IgxTextSelectionDirective, IgxTextSelectionModule, IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IgxTimeFilteringOperand, IgxTimeItemDirective, IgxTimePickerComponent, IgxTimePickerModule, IgxTimeSummaryOperand, IgxToastComponent, IgxToastModule, IgxToggleActionDirective, IgxToggleDirective, IgxToggleModule, IgxTooltipDirective, IgxTooltipModule, IgxTooltipTargetDirective, IgxTransactionService, IgxTreeComponent, IgxTreeExpandIndicatorDirective, IgxTreeGridComponent, IgxTreeGridGroupByAreaComponent, IgxTreeGridGroupingPipe, IgxTreeGridModule, IgxTreeGridRow, IgxTreeModule, IgxTreeNodeComponent, IgxTreeNodeLinkDirective, IgxTreeSelectionType, IgxYearsViewComponent, IndigoIcons, InputResourceStringsEN, LabelPosition, ListResourceStringsEN, NoOpScrollStrategy, NoopFilteringStrategy, NoopPivotDimensionsStrategy, NoopSortingStrategy, PaginatorResourceStringsEN, PagingError, PickerInteractionMode, PivotColumnDimensionsStrategy, PivotDimensionType, PivotRowDimensionsStrategy, PivotRowLayoutType, PivotSummaryPosition, Point, QueryBuilderResourceStringsEN, RadioGroupAlignment, RelativePosition, RelativePositionStrategy, RowPinningPosition, ScrollStrategy, Size, SliderHandle, SortingDirection, SplitterType, TickLabelsOrientation, TicksOrientation, TimePickerResourceStringsEN, TransactionEventOrigin, TransactionType, TreeGridFilteringStrategy, TreeGridFormattedValuesFilteringStrategy, TreeGridMatchingRecordsOnlyFilteringStrategy, TreeResourceStringsEN, VerticalAlignment, VerticalAnimationType, WEEKDAYS, changei18n, comboIgnoreDiacriticsFilter, igxI18N, isLeap, monthRange, range, weekDay };
|
|
94377
95533
|
//# sourceMappingURL=igniteui-angular.mjs.map
|