@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
1,391 lines (1,371 loc) • 2.63 MB
JavaScript
import { style, animate, animation, keyframes, AnimationBuilder, useAnimation, trigger, transition, state } from '@angular/animations';
import { __decorate, __metadata, __param } from 'tslib';
import { Injectable, Input, HostListener, Directive, NgModule, Inject, PLATFORM_ID, ɵɵdefineInjectable, ɵɵinject, Pipe, EventEmitter, Output, isDevMode, ElementRef, ComponentFactoryResolver, ApplicationRef, Injector, NgZone, INJECTOR, ChangeDetectorRef, Optional, HostBinding, InjectionToken, Component, ViewContainerRef, ViewChild, TemplateRef, IterableDiffers, ContentChild, ContentChildren, forwardRef, QueryList, Self, Renderer2, SecurityContext, Host, ViewChildren, NgModuleRef, SimpleChange, ChangeDetectionStrategy, LOCALE_ID } from '@angular/core';
import { NgModel, FormControlName, NG_VALUE_ACCESSOR, FormsModule, NG_VALIDATORS, CheckboxRequiredValidator, NgControl, ReactiveFormsModule } from '@angular/forms';
import { isPlatformBrowser, DOCUMENT, CommonModule, formatDate, DatePipe, DecimalPipe } from '@angular/common';
import { Observable, Subject, fromEvent, interval, animationFrameScheduler, merge, Subscription, timer, pipe, combineLatest } from 'rxjs';
import { filter, takeUntil, throttleTime, first as first$1, take, throttle, debounce, tap, switchMap, skipLast, map, debounceTime } from 'rxjs/operators';
import ResizeObserver from 'resize-observer-polyfill';
import * as JSZip from 'jszip/dist/jszip';
import { DomSanitizer, HammerGestureConfig, HAMMER_GESTURE_CONFIG, ɵgetDOM } from '@angular/platform-browser';
var EaseIn;
(function (EaseIn) {
EaseIn[EaseIn["quad"] = `cubic-bezier(0.550, 0.085, 0.680, 0.530)`] = "quad";
EaseIn[EaseIn["cubic"] = `cubic-bezier(0.550, 0.055, 0.675, 0.190)`] = "cubic";
EaseIn[EaseIn["quart"] = `cubic-bezier(0.895, 0.030, 0.685, 0.220)`] = "quart";
EaseIn[EaseIn["quint"] = `cubic-bezier(0.755, 0.050, 0.855, 0.060)`] = "quint";
EaseIn[EaseIn["sine"] = `cubic-bezier(0.470, 0.000, 0.745, 0.715)`] = "sine";
EaseIn[EaseIn["expo"] = `cubic-bezier(0.950, 0.050, 0.795, 0.035)`] = "expo";
EaseIn[EaseIn["circ"] = `cubic-bezier(0.600, 0.040, 0.980, 0.335)`] = "circ";
EaseIn[EaseIn["back"] = `cubic-bezier(0.600, -0.280, 0.735, 0.045)`] = "back";
})(EaseIn || (EaseIn = {}));
var EaseOut;
(function (EaseOut) {
EaseOut[EaseOut["quad"] = `cubic-bezier(0.250, 0.460, 0.450, 0.940)`] = "quad";
EaseOut[EaseOut["cubic"] = `cubic-bezier(0.215, 0.610, 0.355, 1.000)`] = "cubic";
EaseOut[EaseOut["quart"] = `cubic-bezier(0.165, 0.840, 0.440, 1.000)`] = "quart";
EaseOut[EaseOut["quint"] = `cubic-bezier(0.230, 1.000, 0.320, 1.000)`] = "quint";
EaseOut[EaseOut["sine"] = `cubic-bezier(0.390, 0.575, 0.565, 1.000)`] = "sine";
EaseOut[EaseOut["expo"] = `cubic-bezier(0.190, 1.000, 0.220, 1.000)`] = "expo";
EaseOut[EaseOut["circ"] = `cubic-bezier(0.075, 0.820, 0.165, 1.000)`] = "circ";
EaseOut[EaseOut["back"] = `cubic-bezier(0.175, 0.885, 0.320, 1.275)`] = "back";
})(EaseOut || (EaseOut = {}));
var EaseInOut;
(function (EaseInOut) {
EaseInOut[EaseInOut["quad"] = `cubic-bezier(0.455, 0.030, 0.515, 0.955)`] = "quad";
EaseInOut[EaseInOut["cubic"] = `cubic-bezier(0.645, 0.045, 0.355, 1.000)`] = "cubic";
EaseInOut[EaseInOut["quart"] = `cubic-bezier(0.770, 0.000, 0.175, 1.000)`] = "quart";
EaseInOut[EaseInOut["quint"] = `cubic-bezier(0.860, 0.000, 0.070, 1.000)`] = "quint";
EaseInOut[EaseInOut["sine"] = `cubic-bezier(0.445, 0.050, 0.550, 0.950)`] = "sine";
EaseInOut[EaseInOut["expo"] = `cubic-bezier(1.000, 0.000, 0.000, 1.000)`] = "expo";
EaseInOut[EaseInOut["circ"] = `cubic-bezier(0.785, 0.135, 0.150, 0.860)`] = "circ";
EaseInOut[EaseInOut["back"] = `cubic-bezier(0.680, -0.550, 0.265, 1.550)`] = "back";
})(EaseInOut || (EaseInOut = {}));
const base = [
style({
opacity: `{{startOpacity}}`
}),
animate(`{{duration}} {{delay}} {{easing}}`, style({
opacity: `{{endOpacity}}`
}))
];
const baseParams = {
delay: '0s',
duration: '350ms',
easing: EaseOut.sine,
endOpacity: 1,
startOpacity: 0
};
const fadeIn = animation(base, {
params: baseParams
});
const fadeOut = animation(base, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.sine,
endOpacity: 0,
startOpacity: 1
}
});
const baseRecipe = [
style({
backfaceVisibility: 'hidden',
transformStyle: 'preserve-3d'
}),
animate(`{{duration}} {{delay}} {{easing}}`, keyframes([
style({
offset: 0,
transform: `translateZ({{startDistance}})
rotate3d({{rotateX}}, {{rotateY}}, {{rotateZ}}, {{startAngle}}deg)`
}),
style({
offset: 1,
transform: `translateZ({{endDistance}})
rotate3d({{rotateX}}, {{rotateY}}, {{rotateZ}}, {{endAngle}}deg)`
})
]))
];
const baseParams$1 = {
delay: '0s',
duration: '600ms',
easing: EaseOut.quad,
endAngle: 180,
endDistance: '0px',
rotateX: 1,
rotateY: 0,
rotateZ: 0,
startAngle: 0,
startDistance: '0px'
};
const flipTop = animation(baseRecipe, {
params: Object.assign({}, baseParams$1)
});
const flipBottom = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { endAngle: -180 })
});
const flipLeft = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { rotateX: 0, rotateY: 1 })
});
const flipRight = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { endAngle: -180, rotateX: 0, rotateY: 1 })
});
const flipHorFwd = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '170px' })
});
const flipHorBck = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '-170px' })
});
const flipVerFwd = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '170px', rotateX: 0, rotateY: 1 })
});
const flipVerBck = animation(baseRecipe, {
params: Object.assign(Object.assign({}, baseParams$1), { endDistance: '-170px', rotateX: 0, rotateY: 1 })
});
const baseRecipe$1 = [
style({
opacity: `{{startOpacity}}`,
transform: `rotate3d({{rotateX}},{{rotateY}},{{rotateZ}},{{startAngle}}deg)`,
transformOrigin: `{{xPos}} {{yPos}}`
}),
animate(`{{duration}} {{delay}} {{easing}}`, style({
offset: 0,
opacity: `{{endOpacity}}`,
transform: `rotate3d({{rotateX}},{{rotateY}},{{rotateZ}},{{endAngle}}deg)`,
transformOrigin: `{{xPos}} {{yPos}}`
}))
];
const baseInParams = {
delay: '0s',
duration: '600ms',
easing: EaseOut.quad,
endAngle: 0,
endOpacity: 1,
rotateX: 0,
rotateY: 0,
rotateZ: 1,
startAngle: -360,
startOpacity: 0,
xPos: 'center',
yPos: 'center'
};
const baseOutParams = Object.assign(Object.assign({}, baseInParams), { easing: EaseIn.quad, endOpacity: 0, startOpacity: 1 });
const rotateInCenter = animation(baseRecipe$1, {
params: Object.assign({}, baseInParams)
});
const rotateOutCenter = animation(baseRecipe$1, {
params: Object.assign({}, baseOutParams)
});
const rotateInTop = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'top' })
});
const rotateOutTop = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'top' })
});
const rotateInRight = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'right' })
});
const rotateOutRight = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'right' })
});
const rotateInBottom = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'bottom' })
});
const rotateOutBottom = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'bottom' })
});
const rotateInLeft = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'left' })
});
const rotateOutLeft = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'left' })
});
const rotateInTr = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'right', yPos: 'top' })
});
const rotateOutTr = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'right', yPos: 'top' })
});
const rotateInBr = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'right', yPos: 'bottom' })
});
const rotateOutBr = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'right', yPos: 'bottom' })
});
const rotateInBl = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'left', yPos: 'bottom' })
});
const rotateOutBl = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'left', yPos: 'bottom' })
});
const rotateInTl = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { xPos: 'left', yPos: 'top' })
});
const rotateOutTl = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { xPos: 'left', yPos: 'top' })
});
const rotateInDiagonal1 = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { rotateX: 1, rotateY: 1, rotateZ: 0 })
});
const rotateOutDiagonal1 = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { rotateX: 1, rotateY: 1, rotateZ: 0 })
});
const rotateInDiagonal2 = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { rotateX: -1, rotateY: 1, rotateZ: 0 })
});
const rotateOutDiagonal2 = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { rotateX: -1, rotateY: 1, rotateZ: 0 })
});
const rotateInHor = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { rotateX: 0, rotateY: 1, rotateZ: 0 })
});
const rotateOutHor = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { rotateX: 0, rotateY: 1, rotateZ: 0 })
});
const rotateInVer = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseInParams), { rotateX: 1, rotateY: 0, rotateZ: 0 })
});
const rotateOutVer = animation(baseRecipe$1, {
params: Object.assign(Object.assign({}, baseOutParams), { rotateX: 1, rotateY: 0, rotateZ: 0 })
});
const baseRecipe$2 = [
animate(`{{duration}} {{delay}} {{easing}}`, keyframes([
style({
offset: 0,
transform: `rotate(0deg) translate{{direction}}(0)`,
transformOrigin: `{{xPos}} {{yPos}}`
}),
style({
offset: 0.1,
transform: `rotate({{endAngle}}deg) translate{{direction}}(-{{startDistance}})`
}),
style({
offset: 0.2,
transform: `rotate(-{{startAngle}}deg) translate{{direction}}({{startDistance}})`
}),
style({
offset: 0.3,
transform: `rotate({{startAngle}}deg) translate{{direction}}(-{{startDistance}})`
}),
style({
offset: 0.4,
transform: `rotate(-{{startAngle}}deg) translate{{direction}}({{startDistance}})`
}),
style({
offset: 0.5,
transform: `rotate({{startAngle}}deg) translate{{direction}}(-{{startDistance}})`
}),
style({
offset: 0.6,
transform: `rotate(-{{startAngle}}deg) translate{{direction}}({{startDistance}})`
}),
style({
offset: 0.7,
transform: `rotate({{startAngle}}deg) translate{{direction}}(-{{startDistance}})`
}),
style({
offset: 0.8,
transform: `rotate(-{{endAngle}}deg) translate{{direction}}({{endDistance}})`
}),
style({
offset: 0.9,
transform: `rotate({{endAngle}}deg) translate{{direction}}(-{{endDistance}})`
}),
style({
offset: 1,
transform: `rotate(0deg) translate{{direction}}(0)`,
transformOrigin: `{{xPos}} {{yPos}}`
})
]))
];
const baseParams$2 = {
delay: '0s',
direction: 'X',
duration: '800ms',
easing: EaseInOut.quad,
endAngle: 0,
endDistance: '8px',
startAngle: 0,
startDistance: '10px',
xPos: 'center',
yPos: 'center'
};
const shakeHor = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'X' })
});
const shakeVer = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y' })
});
const shakeTop = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', yPos: 'top' })
});
const shakeBottom = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', yPos: 'bottom' })
});
const shakeRight = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'center' })
});
const shakeLeft = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'center' })
});
const shakeCenter = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 8, endDistance: '0', startAngle: 10, startDistance: '0', xPos: 'center', yPos: 'center' })
});
const shakeTr = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'top' })
});
const shakeBr = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'right', yPos: 'bottom' })
});
const shakeBl = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'bottom' })
});
const shakeTl = animation(baseRecipe$2, {
params: Object.assign(Object.assign({}, baseParams$2), { direction: 'Y', endAngle: 2, endDistance: '0', startAngle: 4, startDistance: '0', xPos: 'left', yPos: 'top' })
});
const heartbeatBase = [
style({
animationTimingFunction: `ease-out`,
transform: `scale(1)`,
transformOrigin: `center center`
}),
animate(`{{duration}} {{delay}} {{easing}}`, keyframes([
style({
animationTimingFunction: `ease-in`,
offset: 0.1,
transform: `scale(0.91)`
}),
style({
animationTimingFunction: `ease-out`,
offset: 0.17,
transform: `scale(0.98)`
}),
style({
animationTimingFunction: `ease-in`,
offset: 0.33,
transform: `scale(0.87)`
}),
style({
animationTimingFunction: `ease-out`,
offset: 0.45,
transform: `scale(1)`
})
]))
];
const heartbeatParams = {
delay: '0s',
duration: '1.5s',
easing: 'ease-in-out'
};
const pulsateBase = [
animate(`{{duration}} {{delay}} {{easing}}`, keyframes([
style({
offset: 0,
transform: `scale({{fromScale}})`
}),
style({
offset: 0.5,
transform: `scale({{toScale}})`
}),
style({
offset: 1,
transform: `scale({{fromScale}})`
})
]))
];
const pulsateParams = {
delay: '0s',
duration: '.5s',
easing: 'ease-in-out',
fromScale: 1,
toScale: 1.1
};
const blinkBase = [
animate(`{{duration}} {{delay}} {{easing}}`, keyframes([
style({
offset: 0,
opacity: .8,
transform: `scale({{fromScale}})`
}),
style({
offset: 0.8,
opacity: 0,
transform: `scale({{midScale}})`
}),
style({
offset: 1,
opacity: 0,
transform: `scale({{toScale}})`
})
]))
];
const blinkParams = {
delay: '0s',
duration: '.8s',
easing: 'ease-in-out',
fromScale: .2,
midScale: 1.2,
toScale: 2.2
};
const pulsateFwd = animation(pulsateBase, {
params: Object.assign({}, pulsateParams)
});
const pulsateBck = animation(pulsateBase, {
params: Object.assign(Object.assign({}, pulsateParams), { toScale: .9 })
});
const heartbeat = animation(heartbeatBase, {
params: Object.assign({}, heartbeatParams)
});
const blink = animation(blinkBase, {
params: Object.assign({}, blinkParams)
});
const base$1 = [
style({
opacity: `{{startOpacity}}`,
transform: `scale{{direction}}({{fromScale}})`,
transformOrigin: `{{xPos}} {{yPos}}`
}),
animate(`{{duration}} {{delay}} {{easing}}`, style({
opacity: `{{endOpacity}}`,
transform: `scale{{direction}}({{toScale}})`,
transformOrigin: `{{xPos}} {{yPos}}`
}))
];
const baseInParams$1 = {
delay: '0s',
direction: '',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromScale: .5,
startOpacity: 0,
toScale: 1,
xPos: '50%',
yPos: '50%'
};
const baseOutParams$1 = Object.assign(Object.assign({}, baseInParams$1), { easing: EaseOut.sine, endOpacity: 0, fromScale: 1, startOpacity: 1, toScale: .5 });
const scaleInCenter = animation(base$1, { params: baseInParams$1 });
const scaleInBl = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '0', yPos: '100%' })
});
const scaleInVerCenter = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'Y', fromScale: .4 })
});
const scaleInTop = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '50%', yPos: '0' })
});
const scaleInLeft = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '0', yPos: '50%' })
});
const scaleInVerTop = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'Y', fromScale: .4, xPos: '100%', yPos: '0' })
});
const scaleInTr = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '100%', yPos: '0' })
});
const scaleInTl = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '0', yPos: '0' })
});
const scaleInVerBottom = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'Y', fromScale: .4, xPos: '0', yPos: '100%' })
});
const scaleInRight = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '100%', yPos: '50%' })
});
const scaleInHorCenter = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'X', fromScale: .4 })
});
const scaleInBr = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '100%', yPos: '100%' })
});
const scaleInHorLeft = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'X', fromScale: .4, xPos: '0', yPos: '0' })
});
const scaleInBottom = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { xPos: '50%', yPos: '100%' })
});
const scaleInHorRight = animation(base$1, {
params: Object.assign(Object.assign({}, baseInParams$1), { direction: 'X', fromScale: .4, xPos: '100%', yPos: '100%' })
});
const scaleOutCenter = animation(base$1, { params: baseOutParams$1 });
const scaleOutBl = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '0', yPos: '100%' })
});
const scaleOutBr = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '100%', yPos: '100%' })
});
const scaleOutVerCenter = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'Y', toScale: .3 })
});
const scaleOutVerTop = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'Y', toScale: .3, xPos: '100%', yPos: '0' })
});
const scaleOutVerBottom = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'Y', toScale: .3, xPos: '0', yPos: '100%' })
});
const scaleOutTop = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '50%', yPos: '0' })
});
const scaleOutLeft = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '0', yPos: '50%' })
});
const scaleOutTr = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '100%', yPos: '0' })
});
const scaleOutTl = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '0', yPos: '0' })
});
const scaleOutRight = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '100%', yPos: '50%' })
});
const scaleOutBottom = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { xPos: '50%', yPos: '100%' })
});
const scaleOutHorCenter = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'X', toScale: .3 })
});
const scaleOutHorLeft = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'X', toScale: .3, xPos: '0', yPos: '0' })
});
const scaleOutHorRight = animation(base$1, {
params: Object.assign(Object.assign({}, baseOutParams$1), { direction: 'X', toScale: .3, xPos: '100%', yPos: '100%' })
});
const base$2 = [
style({
opacity: `{{startOpacity}}`,
transform: `{{fromPosition}}`
}),
animate(`{{duration}} {{delay}} {{easing}}`, style({
opacity: `{{endOpacity}}`,
transform: `{{toPosition}}`
}))
];
const baseInParams$2 = {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateY(-500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
};
const baseOutParams$2 = {
delay: '0s',
duration: '350ms',
easing: EaseIn.quad,
endOpacity: 0,
fromPosition: 'translateY(0)',
startOpacity: 1,
toPosition: 'translateY(-500px)'
};
const slideInTop = animation(base$2, { params: baseInParams$2 });
const slideInLeft = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateX(-500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
}
});
const slideInRight = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateX(500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
}
});
const slideInBottom = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseOut.quad,
endOpacity: 1,
fromPosition: 'translateY(500px)',
startOpacity: 0,
toPosition: 'translateY(0)'
}
});
const slideInTr = animation(base$2, {
params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(-500px) translateX(500px)', toPosition: 'translateY(0) translateX(0)' })
});
const slideInTl = animation(base$2, {
params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(-500px) translateX(-500px)', toPosition: 'translateY(0) translateX(0)' })
});
const slideInBr = animation(base$2, {
params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(500px) translateX(500px)', toPosition: 'translateY(0) translateX(0)' })
});
const slideInBl = animation(base$2, {
params: Object.assign(Object.assign({}, baseInParams$2), { fromPosition: 'translateY(500px) translateX(-500px)', toPosition: 'translateY(0) translateX(0)' })
});
const slideOutTop = animation(base$2, { params: baseOutParams$2 });
const slideOutRight = animation(base$2, {
params: Object.assign(Object.assign({}, baseOutParams$2), { toPosition: 'translateX(500px)' })
});
const slideOutBottom = animation(base$2, {
params: {
delay: '0s',
duration: '350ms',
easing: EaseIn.quad,
endOpacity: 0,
fromPosition: 'translateY(0)',
startOpacity: 1,
toPosition: 'translateY(500px)'
}
});
const slideOutLeft = animation(base$2, {
params: Object.assign(Object.assign({}, baseOutParams$2), { toPosition: 'translateX(-500px)' })
});
const slideOutTr = animation(base$2, {
params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(-500px) translateX(500px)' })
});
const slideOutBr = animation(base$2, {
params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(500px) translateX(500px)' })
});
const slideOutBl = animation(base$2, {
params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(500px) translateX(-500px)' })
});
const slideOutTl = animation(base$2, {
params: Object.assign(Object.assign({}, baseOutParams$2), { fromPosition: 'translateY(0) translateX(0)', toPosition: 'translateY(-500px) translateX(-500px)' })
});
const swingBase = [
style({
opacity: `{{startOpacity}}`,
transform: `rotate{{direction}}({{startAngle}}deg)`,
transformOrigin: `{{xPos}} {{yPos}}`
}),
animate(`{{duration}} {{delay}} {{easing}}`, style({
opacity: `{{endOpacity}}`,
transform: `rotate{{direction}}({{endAngle}}deg)`,
transformOrigin: `{{xPos}} {{yPos}}`
}))
];
const swingParams = {
delay: '0s',
direction: 'X',
duration: '.5s',
easing: EaseOut.back,
endAngle: 0,
endOpacity: 1,
startAngle: -100,
startOpacity: 0,
xPos: 'top',
yPos: 'center'
};
const swingOutParams = Object.assign(Object.assign({}, swingParams), { duration: '.55s', easing: EaseIn.back, endAngle: 70, endOpacity: 0, startAngle: 0, startOpacity: 1 });
const swingInTopFwd = animation(swingBase, {
params: Object.assign({}, swingParams)
});
const swingInRightFwd = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', xPos: 'center', yPos: 'right' })
});
const swingInBottomFwd = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { startAngle: 100, xPos: 'bottom' })
});
const swingInLeftFwd = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', startAngle: 100, xPos: 'center', yPos: 'left' })
});
const swingInTopBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { duration: '.6s', startAngle: 70 })
});
const swingInRightBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', duration: '.6s', startAngle: 70, xPos: 'center', yPos: 'right' })
});
const swingInBottomBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { duration: '.6s', startAngle: -70, xPos: 'bottom' })
});
const swingInLeftBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingParams), { direction: 'Y', duration: '.6s', startAngle: -70, xPos: 'center', yPos: 'left' })
});
const swingOutTopFwd = animation(swingBase, {
params: Object.assign({}, swingOutParams)
});
const swingOutRightFwd = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', xPos: 'center', yPos: 'right' })
});
const swingOutBottomFwd = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { endAngle: -70, xPos: 'bottom' })
});
const swingOutLefttFwd = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', endAngle: -70, xPos: 'center', yPos: 'left' })
});
const swingOutTopBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { duration: '.45s', endAngle: -100 })
});
const swingOutRightBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', duration: '.45s', endAngle: -100, xPos: 'center', yPos: 'right' })
});
const swingOutBottomBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { duration: '.45s', endAngle: 100, xPos: 'bottom' })
});
const swingOutLeftBck = animation(swingBase, {
params: Object.assign(Object.assign({}, swingOutParams), { direction: 'Y', duration: '.45s', endAngle: 100, xPos: 'center', yPos: 'left' })
});
const base$3 = [
style({
opacity: `{{ startOpacity }}`,
height: `{{ startHeight }}`
}),
animate(`{{duration}} {{delay}} {{easing}}`, style({
opacity: `{{ endOpacity }}`,
height: `{{ endHeight }}`
}))
];
const baseParams$3 = {
delay: '0s',
duration: '350ms',
easing: EaseIn.quad,
startOpacity: 0,
endOpacity: 1,
startHeight: '',
endHeight: ''
};
const growVerIn = animation(base$3, {
params: Object.assign(Object.assign({}, baseParams$3), { easing: EaseOut.quad, startOpacity: 0, endOpacity: 1, startHeight: '0px', endHeight: '*' })
});
const growVerOut = animation(base$3, {
params: Object.assign(Object.assign({}, baseParams$3), { easing: EaseOut.quad, startOpacity: 1, endOpacity: 0, startHeight: '*', endHeight: '0px' })
});
/**
* Common service to be injected between components where those implementing common
* ToggleView interface can register and toggle directives can call their methods.
* TODO: Track currently active? Events?
*/
let IgxNavigationService = class IgxNavigationService {
constructor() {
this.navs = {};
}
add(id, navItem) {
this.navs[id] = navItem;
}
remove(id) {
delete this.navs[id];
}
get(id) {
if (id) {
return this.navs[id];
}
}
toggle(id, ...args) {
if (this.navs[id]) {
return this.navs[id].toggle(...args);
}
}
open(id, ...args) {
if (this.navs[id]) {
return this.navs[id].open(...args);
}
}
close(id, ...args) {
if (this.navs[id]) {
return this.navs[id].close(...args);
}
}
};
IgxNavigationService = __decorate([
Injectable(),
__metadata("design:paramtypes", [])
], IgxNavigationService);
/**
* Directive that can toggle targets through provided NavigationService.
*
* Usage:
* ```
* <button igxNavToggle="ID"> Toggle </button>
* ```
* Where the `ID` matches the ID of compatible `IToggleView` component.
*/
let IgxNavigationToggleDirective = class IgxNavigationToggleDirective {
constructor(nav) {
this.state = nav;
}
toggleNavigationDrawer() {
this.state.toggle(this.target, true);
}
};
IgxNavigationToggleDirective.ctorParameters = () => [
{ type: IgxNavigationService }
];
__decorate([
Input('igxNavToggle'),
__metadata("design:type", Object)
], IgxNavigationToggleDirective.prototype, "target", void 0);
__decorate([
HostListener('click'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], IgxNavigationToggleDirective.prototype, "toggleNavigationDrawer", null);
IgxNavigationToggleDirective = __decorate([
Directive({ selector: '[igxNavToggle]' }),
__metadata("design:paramtypes", [IgxNavigationService])
], IgxNavigationToggleDirective);
/**
* Directive that can close targets through provided NavigationService.
*
* Usage:
* ```
* <button igxNavClose="ID"> Close </button>
* ```
* Where the `ID` matches the ID of compatible `IToggleView` component.
*/
let IgxNavigationCloseDirective = class IgxNavigationCloseDirective {
constructor(nav) {
this.state = nav;
}
closeNavigationDrawer() {
this.state.close(this.target, true);
}
};
IgxNavigationCloseDirective.ctorParameters = () => [
{ type: IgxNavigationService }
];
__decorate([
Input('igxNavClose'),
__metadata("design:type", Object)
], IgxNavigationCloseDirective.prototype, "target", void 0);
__decorate([
HostListener('click'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], IgxNavigationCloseDirective.prototype, "closeNavigationDrawer", null);
IgxNavigationCloseDirective = __decorate([
Directive({ selector: '[igxNavClose]' }),
__metadata("design:paramtypes", [IgxNavigationService])
], IgxNavigationCloseDirective);
/**
* @hidden
*/
let IgxNavigationModule = class IgxNavigationModule {
};
IgxNavigationModule = __decorate([
NgModule({
declarations: [IgxNavigationCloseDirective, IgxNavigationToggleDirective],
exports: [IgxNavigationCloseDirective, IgxNavigationToggleDirective],
providers: [IgxNavigationService]
})
], IgxNavigationModule);
/**
*@hidden
*/
function cloneArray(array, deep) {
const arr = [];
if (!array) {
return arr;
}
let i = array.length;
while (i--) {
arr[i] = deep ? cloneValue(array[i]) : array[i];
}
return arr;
}
/**
* Doesn't clone leaf items
* @hidden
*/
function cloneHierarchicalArray(array, childDataKey) {
const result = [];
if (!array) {
return result;
}
for (const item of array) {
const clonedItem = cloneValue(item);
if (Array.isArray(item[childDataKey])) {
clonedItem[childDataKey] = cloneHierarchicalArray(clonedItem[childDataKey], childDataKey);
}
result.push(clonedItem);
}
return result;
}
/**
* Deep clones all first level keys of Obj2 and merges them to Obj1
* @param obj1 Object to merge into
* @param obj2 Object to merge from
* @returns Obj1 with merged cloned keys from Obj2
* @hidden
*/
function mergeObjects(obj1, obj2) {
if (!isObject(obj1)) {
throw new Error(`Cannot merge into ${obj1}. First param must be an object.`);
}
if (!isObject(obj2)) {
return obj1;
}
for (const key of Object.keys(obj2)) {
obj1[key] = cloneValue(obj2[key]);
}
return obj1;
}
/**
* Creates deep clone of provided value.
* Supports primitive values, dates and objects.
* If passed value is array returns shallow copy of the array.
* @param value value to clone
* @returns Deep copy of provided value
*@hidden
*/
function cloneValue(value) {
if (isDate(value)) {
return new Date(value.getTime());
}
if (Array.isArray(value)) {
return [...value];
}
if (value instanceof Map || value instanceof Set) {
return value;
}
if (isObject(value)) {
const result = {};
for (const key of Object.keys(value)) {
result[key] = cloneValue(value[key]);
}
return result;
}
return value;
}
/**
* Checks if provided variable is Object
* @param value Value to check
* @returns true if provided variable is Object
*@hidden
*/
function isObject(value) {
return value && value.toString() === '[object Object]';
}
/**
* Checks if provided variable is Date
* @param value Value to check
* @returns true if provided variable is Date
*@hidden
*/
function isDate(value) {
return Object.prototype.toString.call(value) === '[object Date]';
}
/**
* Checks if the two passed arguments are equal
* Currently supports date objects
* @param obj1
* @param obj2
* @returns: `boolean`
* @hidden
*/
function isEqual(obj1, obj2) {
if (isDate(obj1) && isDate(obj2)) {
return obj1.getTime() === obj2.getTime();
}
return obj1 === obj2;
}
/**
*@hidden
* Returns the actual size of the node content, using Range
* ```typescript
* let range = document.createRange();
* let column = this.grid.columnList.filter(c => c.field === 'ID')[0];
*
* let size = getNodeSizeViaRange(range, column.cells[0].nativeElement);
* ```
*/
function getNodeSizeViaRange(range, node) {
let overflow = null;
if (!isFirefox()) {
overflow = node.style.overflow;
// we need that hack - otherwise content won't be measured correctly in IE/Edge
node.style.overflow = 'visible';
}
range.selectNodeContents(node);
const width = range.getBoundingClientRect().width;
if (!isFirefox()) {
// we need that hack - otherwise content won't be measured correctly in IE/Edge
node.style.overflow = overflow;
}
return width;
}
/**
*@hidden
* Returns the actual size of the node content, using Canvas
* ```typescript
* let ctx = document.createElement('canvas').getContext('2d');
* let column = this.grid.columnList.filter(c => c.field === 'ID')[0];
*
* let size = valToPxlsUsingCanvas(ctx, column.cells[0].nativeElement);
* ```
*/
function getNodeSizeViaCanvas(canvas2dCtx, node) {
const s = this.grid.document.defaultView.getComputedStyle(node);
// need to set the font to get correct width
canvas2dCtx.font = s.fontSize + ' ' + s.fontFamily;
return canvas2dCtx.measureText(node.textContent).width;
}
/**
*@hidden
*/
function isIE() {
return navigator.appVersion.indexOf('Trident/') > 0;
}
/**
*@hidden
*/
function isEdge() {
const edgeBrowser = /Edge[\/\s](\d+\.\d+)/.test(navigator.userAgent);
return edgeBrowser;
}
/**
*@hidden
*/
function isFirefox() {
const firefoxBrowser = /Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent);
return firefoxBrowser;
}
/**
* @hidden
*/
let PlatformUtil = class PlatformUtil {
constructor(platformId) {
this.platformId = platformId;
this.isBrowser = isPlatformBrowser(this.platformId);
this.isIOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);
}
};
PlatformUtil.ctorParameters = () => [
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
];
PlatformUtil.ɵprov = ɵɵdefineInjectable({ factory: function PlatformUtil_Factory() { return new PlatformUtil(ɵɵinject(PLATFORM_ID)); }, token: PlatformUtil, providedIn: "root" });
PlatformUtil = __decorate([
Injectable({ providedIn: 'root' }),
__param(0, Inject(PLATFORM_ID)),
__metadata("design:paramtypes", [Object])
], PlatformUtil);
/**
* @hidden
*/
function isLeftClick(event) {
return event.button === 0;
}
/** @hidden */
function isNavigationKey(key) {
return [
'down',
'up',
'left',
'right',
'arrowdown',
'arrowup',
'arrowleft',
'arrowright',
'home',
'end',
'space',
'spacebar',
' '
].indexOf(key) !== -1;
}
/**
*@hidden
*/
function flatten(arr) {
let result = [];
arr.forEach(el => {
result.push(el);
if (el.children) {
const children = Array.isArray(el.children) ? el.children : el.children.toArray();
result = result.concat(flatten(children));
}
});
return result;
}
const NAVIGATION_KEYS = new Set([
'down',
'up',
'left',
'right',
'arrowdown',
'arrowup',
'arrowleft',
'arrowright',
'home',
'end',
'space',
'spacebar',
' '
]);
const ROW_EXPAND_KEYS = new Set('right down arrowright arrowdown'.split(' '));
const ROW_COLLAPSE_KEYS = new Set('left up arrowleft arrowup'.split(' '));
const SUPPORTED_KEYS = new Set([...Array.from(NAVIGATION_KEYS), 'tab', 'enter', 'f2', 'escape', 'esc']);
/**
* @hidden
* @internal
*
* Creates a new ResizeObserver on `target` and returns it as an Observable.
*/
function resizeObservable(target) {
return new Observable((observer) => {
const instance = new ResizeObserver((entries) => {
observer.next(entries);
});
instance.observe(target);
const unsubscribe = () => instance.disconnect();
return unsubscribe;
});
}
/**
* Represents sorting expressions.
*/
var SortingDirection;
(function (SortingDirection) {
SortingDirection[SortingDirection["None"] = 0] = "None";
SortingDirection[SortingDirection["Asc"] = 1] = "Asc";
SortingDirection[SortingDirection["Desc"] = 2] = "Desc";
})(SortingDirection || (SortingDirection = {}));
function isHierarchyMatch(h1, h2) {
if (h1.length !== h2.length) {
return false;
}
return h1.every((level, index) => {
return level.fieldName === h2[index].fieldName && level.value === h2[index].value;
});
}
function getHierarchy(gRow) {
const hierarchy = [];
if (gRow !== undefined && gRow.expression) {
hierarchy.push({ fieldName: gRow.expression.fieldName, value: gRow.value });
while (gRow.groupParent) {
gRow = gRow.groupParent;
hierarchy.unshift({ fieldName: gRow.expression.fieldName, value: gRow.value });
}
}
return hierarchy;
}
class DefaultSortingStrategy {
constructor() {
}
static instance() {
return this._instance || (this._instance = new this());
}
sort(data, fieldName, dir, ignoreCase, valueResolver) {
const key = fieldName;
const reverse = (dir === SortingDirection.Desc ? -1 : 1);
const cmpFunc = (obj1, obj2) => {
return this.compareObjects(obj1, obj2, key, reverse, ignoreCase, valueResolver);
};
return this.arraySort(data, cmpFunc);
}
compareValues(a, b) {
const an = (a === null || a === undefined);
const bn = (b === null || b === undefined);
if (an) {
if (bn) {
return 0;
}
return -1;
}
else if (bn) {
return 1;
}
return a > b ? 1 : a < b ? -1 : 0;
}
compareObjects(obj1, obj2, key, reverse, ignoreCase, valueResolver) {
let a = valueResolver(obj1, key);
let b = valueResolver(obj2, key);
if (ignoreCase) {
a = a && a.toLowerCase ? a.toLowerCase() : a;
b = b && b.toLowerCase ? b.toLowerCase() : b;
}
return reverse * this.compareValues(a, b);
}
arraySort(data, compareFn) {
return data.sort(compareFn);
}
}
DefaultSortingStrategy._instance = null;
class NoopSortingStrategy {
constructor() {
}
static instance() {
return this._instance || (this._instance = new NoopSortingStrategy());
}
sort(data, expressions) {
return data;
}
}
NoopSortingStrategy._instance = null;
class IgxSorting {
sort(data, expressions) {
return this.sortDataRecursive(data, expressions);
}
groupedRecordsByExpression(data, index, expression) {
let i;
let groupval;
const res = [];
const key = expression.fieldName;
const len = data.length;
res.push(data[index]);
groupval = this.getFieldValue(data[index], key);
index++;
const comparer = expression.groupingComparer || DefaultSortingStrategy.instance().compareValues;
for (i = index; i < len; i++) {
if (comparer(this.getFieldValue(data[i], key), groupval) === 0) {
res.push(data[i]);
}
else {
break;
}
}
return res;
}
sortDataRecursive(data, expressions, expressionIndex = 0) {
let i;
let j;
let expr;
let gbData;
let gbDataLen;
const exprsLen = expressions.length;
const dataLen = data.length;
expressionIndex = expressionIndex || 0;
if (expressionIndex >= exprsLen || dataLen <= 1) {
return data;
}
expr = expressions[expressionIndex];
if (!expr.strategy) {
expr.strategy = DefaultSortingStrategy.instance();
}
data = expr.strategy.sort(data, expr.fieldName, expr.dir, expr.ignoreCase, this.getFieldValue);
if (expressionIndex === exprsLen - 1) {
return data;
}
// in case of multiple sorting
for (i = 0; i < dataLen; i++) {
gbData = this.groupedRecordsByExpression(data, i, expr);
gbDataLen = gbData.length;
if (gbDataLen > 1) {
gbData = this.sortDataRecursive(gbData, expressions, expressionIndex + 1);
}
for (j = 0; j < gbDataLen; j++) {
data[i + j] = gbData[j];
}
i += gbDataLen - 1;
}
return data;
}
groupDataRecursive(data, state, level, parent, metadata, grid = null, groupsRecords = [], fullResult = { data: [], metadata: [] }) {
const expressions = state.expressions;
const expansion = state.expansion;
let i = 0;
let result = [];
while (i < data.length) {
const group = this.groupedRecordsByExpression(data, i, expressions[level]);
const groupRow = {
expression: expressions[level],
level,
records: cloneArray(group),
value: group[0][expressions[level].fieldName],
groupParent: parent,
groups: [],
height: grid ? grid.renderedRowHeight : null
};
if (parent) {
parent.groups.push(groupRow);
}
else {
groupsRecords.push(groupRow);
}
const hierarchy = getHierarchy(groupRow);
const expandState = expansion.find((s) => isHierarchyMatch(s.hierarchy || [{ fieldName: groupRow.expression.fieldName, value: groupRow.value }], hierarchy));
const expanded = expandState ? expandState.expanded : state.defaultExpanded;
let recursiveResult;
result.push(groupRow);
metadata.push(null);
fullResult.data.push(groupRow);
fullResult.metadata.push(null);
if (level < expressions.length - 1) {
recursiveResult = this.groupDataRecursive(group, state, level + 1, groupRow, expanded ? metadata : [], grid, groupsRecords, fullResult);
if (expanded) {
result = result.concat(recursiveResult);
}
}
else {
for (const groupItem of group) {
fullResult.metadata.push(groupRow);
fullResult.data.push(groupItem);
}
if (expanded) {
metadata.push(...fullResult.metadata.slice(fullResult.metadata.length - group.length));
result.push(...fullResult.data.slice(fullResult.data.length - group.length));
}
}
i += group.length;
}
return result;
}
getFieldValue(obj, key) {
return obj[key];
}
}
class IgxDataRecordSorting extends IgxSorting {
getFieldValue(obj, key) {
return obj.data[key];
}
}
class IgxGrouping extends IgxSorting {
groupBy(data, state, grid, groupsRecords, fullResult = { data: [], metadata: [] }) {
const metadata = [];
const grouping = this.groupDataRecursive(data, state, 0, null, metadata, grid, groupsRecords, fullResult);
return {
data: grouping,
metadata: metadata
};
}
}
var PagingError;
(function (PagingError) {
PagingError[PagingError["None"] = 0] = "None";
PagingError[PagingError["IncorrectPageIndex"] = 1] = "IncorrectPageIndex";
PagingError[PagingError["IncorrectRecordsPerPage"] = 2] = "IncorrectRecordsPerPage";
})(PagingError || (PagingError = {}));
var FilteringLogic;
(function (FilteringLogic) {
FilteringLogic[FilteringLogic["And"] = 0] = "And";
FilteringLogic[FilteringLogic["Or"] = 1] = "Or";
})(FilteringLogic || (FilteringLogic = {}));
var FilteringExpressionsTreeType;
(function (FilteringExpressionsTreeType) {
FilteringExpressionsTreeType[FilteringExpressionsTreeType["Regular"] = 0] = "Regular";
FilteringExpressionsTreeType[FilteringExpressionsTreeType["Advanced"] = 1] = "Advanced";
})(FilteringExpressionsTreeType || (FilteringExpressionsTreeType = {}));
class FilteringExpressionsTree {
constructor(operator, fieldName) {
/**
* Sets/gets the filtering operands.
* ```typescript
* const gridExpressionsTree = new FilteringExpressionsTree(FilteringLogic.And);
* const expression = [
* {
* condition: IgxStringFilteringOperand.instance().condition('contains'),
* fieldName: 'Column Field',
* searchVal: 'Value',
* ignoreCase: false
* }];
* gridExpressionsTree.filteringOperands.push(expression);
* this.grid.filteringExpressionsTree = gridExpressionsTree;
* ```
* ```typescript
* let filteringOperands = gridExpressionsTree.filteringOperands;
* ```
* @memberof FilteringExpressionsTree
*/
this.filteringOperands = [];
this.operator = operator;
this.fieldName = fieldName;
}
/**
* Checks if filtering expressions tree is empty.
* @param expressionTree filtering expressions tree.
*/
static empty(expressionTree) {
return !expressionTree || !expressionTree.filteringOperands || !expressionTre