@tetacom/ng-components 1.0.67 → 1.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/common/util/dom-util.d.ts +1 -0
  2. package/component/input/input.module.d.ts +2 -1
  3. package/component/tabs/tabs/tabs.component.d.ts +1 -1
  4. package/component/tree/tree/tree.component.d.ts +16 -9
  5. package/component/tree/tree-item/tree-item.component.d.ts +3 -2
  6. package/component/tree/tree.module.d.ts +2 -1
  7. package/directive/hint/hint.directive.d.ts +2 -1
  8. package/esm2020/common/util/dom-util.mjs +4 -1
  9. package/esm2020/component/input/input/input.component.mjs +4 -3
  10. package/esm2020/component/input/input.module.mjs +5 -4
  11. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +1 -1
  12. package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +1 -1
  13. package/esm2020/component/table/default/string-cell/string-cell.component.mjs +4 -3
  14. package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +1 -1
  15. package/esm2020/component/tabs/tabs/tabs.component.mjs +3 -3
  16. package/esm2020/component/tree/tree/tree.component.mjs +51 -20
  17. package/esm2020/component/tree/tree-item/tree-item.component.mjs +15 -10
  18. package/esm2020/component/tree/tree.module.mjs +5 -4
  19. package/esm2020/directive/hint/hint.directive.mjs +6 -3
  20. package/fesm2015/tetacom-ng-components.mjs +386 -344
  21. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  22. package/fesm2020/tetacom-ng-components.mjs +386 -345
  23. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  24. package/package.json +1 -1
  25. package/style/tree.scss +4 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, HostBinding, Directive, Optional, Inject, ContentChild, Input, Host, HostListener, Injectable, NgModule, forwardRef, EventEmitter, ElementRef, Output, Pipe, ViewChild, ViewEncapsulation, ChangeDetectorRef, TemplateRef, Injector, ContentChildren, SkipSelf, ViewContainerRef, PLATFORM_ID } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, HostBinding, Directive, Optional, Inject, ContentChild, Input, Host, HostListener, Injectable, NgModule, forwardRef, EventEmitter, ElementRef, Output, Pipe, ViewChild, TemplateRef, Injector, ViewEncapsulation, ChangeDetectorRef, ContentChildren, SkipSelf, ViewContainerRef, PLATFORM_ID } from '@angular/core';
3
3
  import * as i2 from '@angular/common';
4
4
  import { DOCUMENT, CommonModule, isPlatformBrowser } from '@angular/common';
5
5
  import * as i1 from '@angular/common/http';
@@ -1062,6 +1062,9 @@ class DomUtil {
1062
1062
  }
1063
1063
  return null;
1064
1064
  }
1065
+ static isOverflown(element) {
1066
+ return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;
1067
+ }
1065
1068
  }
1066
1069
 
1067
1070
  class PositionUtil {
@@ -3607,6 +3610,281 @@ class NumericFilterValue {
3607
3610
  }
3608
3611
  }
3609
3612
 
3613
+ class TetaContentRef {
3614
+ constructor(nodes, viewRef, componentRef) {
3615
+ this.nodes = nodes;
3616
+ this.viewRef = viewRef;
3617
+ this.componentRef = componentRef;
3618
+ }
3619
+ }
3620
+
3621
+ class DynamicData {
3622
+ constructor(value) {
3623
+ for (const key in value) {
3624
+ if (value.hasOwnProperty(key)) {
3625
+ this[key] = value[key];
3626
+ }
3627
+ }
3628
+ }
3629
+ }
3630
+
3631
+ class DynamicComponentService {
3632
+ constructor(_componentFactoryResolver, _rendererFactory, _appRef) {
3633
+ this._componentFactoryResolver = _componentFactoryResolver;
3634
+ this._rendererFactory = _rendererFactory;
3635
+ this._appRef = _appRef;
3636
+ this._renderer = this._rendererFactory.createRenderer(null, null);
3637
+ }
3638
+ createComponent(component, contentRef, injector, container) {
3639
+ const componentRef = this._componentFactoryResolver
3640
+ .resolveComponentFactory(component)
3641
+ .create(injector, contentRef.nodes);
3642
+ this._appRef.attachView(componentRef.hostView);
3643
+ container.appendChild(componentRef.location.nativeElement);
3644
+ return componentRef;
3645
+ }
3646
+ createContent(content, injector, context) {
3647
+ if (content === null || content === undefined) {
3648
+ throw new Error('Content is undefined');
3649
+ }
3650
+ if (typeof content === 'string') {
3651
+ return this.fromString(content);
3652
+ }
3653
+ else if (content instanceof TemplateRef) {
3654
+ return this.fromTemplate(content, context);
3655
+ }
3656
+ else {
3657
+ return this.fromComponent(content, injector, context);
3658
+ }
3659
+ }
3660
+ destroy(component, content, container) {
3661
+ if (component) {
3662
+ this._appRef.detachView(component.hostView);
3663
+ component.destroy();
3664
+ }
3665
+ if (content && content.viewRef) {
3666
+ content.viewRef.destroy();
3667
+ }
3668
+ content = null;
3669
+ }
3670
+ getContext(content, context) {
3671
+ if (content instanceof TemplateRef) {
3672
+ return {
3673
+ $implicit: context,
3674
+ data: context,
3675
+ };
3676
+ }
3677
+ return context;
3678
+ }
3679
+ getInjector(data, parent) {
3680
+ return Injector.create({
3681
+ providers: [
3682
+ {
3683
+ provide: DynamicData,
3684
+ useValue: data,
3685
+ },
3686
+ ],
3687
+ parent,
3688
+ });
3689
+ }
3690
+ fromString(content) {
3691
+ return new TetaContentRef([[this._renderer.createText(`${content}`)]]);
3692
+ }
3693
+ fromTemplate(content, context) {
3694
+ const viewRef = content.createEmbeddedView(context);
3695
+ this._appRef.attachView(viewRef);
3696
+ return new TetaContentRef([viewRef.rootNodes], viewRef);
3697
+ }
3698
+ fromComponent(content, injector, context) {
3699
+ const componentFactory = this._componentFactoryResolver.resolveComponentFactory(content);
3700
+ const componentRef = componentFactory.create(injector);
3701
+ for (const key in context) {
3702
+ if (context.hasOwnProperty(key)) {
3703
+ componentRef.instance[key] = context[key];
3704
+ }
3705
+ }
3706
+ const componentNativeEl = componentRef.location.nativeElement;
3707
+ this._appRef.attachView(componentRef.hostView);
3708
+ return new TetaContentRef([[componentNativeEl]], componentRef.hostView, componentRef);
3709
+ }
3710
+ }
3711
+ DynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.RendererFactory2 }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
3712
+ DynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, providedIn: 'root' });
3713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, decorators: [{
3714
+ type: Injectable,
3715
+ args: [{
3716
+ providedIn: 'root',
3717
+ }]
3718
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: i0.ApplicationRef }]; } });
3719
+
3720
+ class DynamicContentBaseDirective {
3721
+ constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
3722
+ this._document = _document;
3723
+ this._elementRef = _elementRef;
3724
+ this._service = _service;
3725
+ this._injector = _injector;
3726
+ this._zone = _zone;
3727
+ this._cdr = _cdr;
3728
+ this.align = Align.left;
3729
+ this.verticalAlign = VerticalAlign.bottom;
3730
+ this.openChange = new EventEmitter();
3731
+ this._alive = true;
3732
+ this._open = false;
3733
+ this._zone.onStable
3734
+ .pipe(takeWhile((_) => this._alive), filter((_) => this._open))
3735
+ .subscribe((_) => {
3736
+ this.setPosition();
3737
+ });
3738
+ }
3739
+ set open(open) {
3740
+ this._open = open;
3741
+ if (this._open) {
3742
+ this.createContentRef();
3743
+ }
3744
+ else {
3745
+ this.destroyContentRef();
3746
+ }
3747
+ }
3748
+ ngOnDestroy() {
3749
+ this._alive = false;
3750
+ this.destroyContentRef();
3751
+ }
3752
+ ngOnInit() {
3753
+ }
3754
+ createContentRef(className) {
3755
+ if (!this._componentRef) {
3756
+ this._open = true;
3757
+ const injector = this._service.getInjector(this.data, this._injector);
3758
+ const context = this._service.getContext(this._dynamicContent, this.data);
3759
+ this._content = this._service.createContent(this._dynamicContent, this._injector, context);
3760
+ this._componentRef = this._service.createComponent(PopupContentComponent, this._content, injector, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
3761
+ if (className) {
3762
+ this._componentRef.instance.addClass(className);
3763
+ }
3764
+ }
3765
+ return this._componentRef;
3766
+ }
3767
+ destroyContentRef() {
3768
+ this._open = false;
3769
+ this._service.destroy(this._componentRef, this._content, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
3770
+ this._componentRef = null;
3771
+ }
3772
+ }
3773
+ DynamicContentBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
3774
+ DynamicContentBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: DynamicContentBaseDirective, inputs: { data: "data", className: "className", align: "align", verticalAlign: "verticalAlign", appendToBody: "appendToBody", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0 });
3775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, decorators: [{
3776
+ type: Directive
3777
+ }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
3778
+ type: Input
3779
+ }], className: [{
3780
+ type: Input
3781
+ }], align: [{
3782
+ type: Input
3783
+ }], verticalAlign: [{
3784
+ type: Input
3785
+ }], appendToBody: [{
3786
+ type: Input
3787
+ }], open: [{
3788
+ type: Input
3789
+ }], openChange: [{
3790
+ type: Output
3791
+ }] } });
3792
+
3793
+ class HintDirective extends DynamicContentBaseDirective {
3794
+ constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
3795
+ super(_document, _elementRef, _service, _injector, _zone, _cdr);
3796
+ this._document = _document;
3797
+ this._elementRef = _elementRef;
3798
+ this._service = _service;
3799
+ this._injector = _injector;
3800
+ this._zone = _zone;
3801
+ this._cdr = _cdr;
3802
+ this.align = Align.center;
3803
+ this.verticalAlign = VerticalAlign.top;
3804
+ this.delay = 300;
3805
+ this.overflownOnly = false;
3806
+ }
3807
+ get _dynamicContent() {
3808
+ return this.tetaHint;
3809
+ }
3810
+ mouseenter() {
3811
+ clearTimeout(this._timeout);
3812
+ this._timeout = setTimeout(() => {
3813
+ this.createHint();
3814
+ }, this.delay);
3815
+ }
3816
+ mouseleave() {
3817
+ clearTimeout(this._timeout);
3818
+ if (this._open && this._componentRef) {
3819
+ this._timeout = setTimeout(() => {
3820
+ this.destroyContentRef();
3821
+ }, this.delay);
3822
+ }
3823
+ }
3824
+ click(event) {
3825
+ if (this._open &&
3826
+ this._componentRef &&
3827
+ DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {
3828
+ event.stopPropagation();
3829
+ }
3830
+ }
3831
+ setPosition() {
3832
+ if (this._componentRef && this._open) {
3833
+ if (!this._componentRect) {
3834
+ this._componentRect =
3835
+ this._componentRef.location.nativeElement.getBoundingClientRect();
3836
+ }
3837
+ const position = PositionUtil.getPosition(this._elementRef.nativeElement.getBoundingClientRect(), this._componentRect, this.align, this.verticalAlign, 0, 4);
3838
+ PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);
3839
+ }
3840
+ }
3841
+ createHint() {
3842
+ if (!this._dynamicContent || (this.overflownOnly && !DomUtil.isOverflown(this._elementRef.nativeElement))) {
3843
+ return;
3844
+ }
3845
+ this._componentRef = this.createContentRef();
3846
+ this._componentRef.instance.className = [
3847
+ ...ArrayUtil.asArray(this.className),
3848
+ 'hint',
3849
+ ];
3850
+ }
3851
+ ngOnDestroy() {
3852
+ super.ngOnDestroy();
3853
+ }
3854
+ }
3855
+ HintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: DynamicComponentService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
3856
+ HintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: HintDirective, selector: "[tetaHint]", inputs: { tetaHint: "tetaHint", align: "align", verticalAlign: "verticalAlign", delay: "delay", overflownOnly: "overflownOnly" }, host: { listeners: { "mouseenter": "mouseenter($event)", "mouseleave": "mouseleave($event)", "click": "click($event)" } }, usesInheritance: true, ngImport: i0 });
3857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintDirective, decorators: [{
3858
+ type: Directive,
3859
+ args: [{
3860
+ selector: '[tetaHint]',
3861
+ }]
3862
+ }], ctorParameters: function () {
3863
+ return [{ type: undefined, decorators: [{
3864
+ type: Inject,
3865
+ args: [DOCUMENT]
3866
+ }] }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }];
3867
+ }, propDecorators: { tetaHint: [{
3868
+ type: Input
3869
+ }], align: [{
3870
+ type: Input
3871
+ }], verticalAlign: [{
3872
+ type: Input
3873
+ }], delay: [{
3874
+ type: Input
3875
+ }], overflownOnly: [{
3876
+ type: Input
3877
+ }], mouseenter: [{
3878
+ type: HostListener,
3879
+ args: ['mouseenter', ['$event']]
3880
+ }], mouseleave: [{
3881
+ type: HostListener,
3882
+ args: ['mouseleave', ['$event']]
3883
+ }], click: [{
3884
+ type: HostListener,
3885
+ args: ['click', ['$event']]
3886
+ }] } });
3887
+
3610
3888
  class InputComponent {
3611
3889
  constructor() {
3612
3890
  this.required = false;
@@ -3617,10 +3895,10 @@ class InputComponent {
3617
3895
  ngOnInit() { }
3618
3896
  }
3619
3897
  InputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3620
- InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: InputComponent, selector: "teta-input", inputs: { label: "label", horizontal: "horizontal", required: "required" }, host: { properties: { "class.row": "this.horizontal", "class.column": "this.column" } }, ngImport: i0, template: "<div class=\"font-caption color-text-90 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n *ngIf=\"label?.length > 0\">\n {{label}}\n</div>\n<div class=\"input-container\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;grid-gap:4px;flex-grow:1;flex-basis:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3898
+ InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: InputComponent, selector: "teta-input", inputs: { label: "label", horizontal: "horizontal", required: "required" }, host: { properties: { "class.row": "this.horizontal", "class.column": "this.column" } }, ngImport: i0, template: "<div class=\"font-caption color-text-90 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n *ngIf=\"label?.length > 0\">\n <span class=\"overflow-hidden text-overflow-ellipsis\"\n [tetaHint]=\"label\"\n [overflownOnly]=\"true\">\n {{label}}\n </span>\n</div>\n<div class=\"input-container\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;grid-gap:4px;flex-grow:1;flex-basis:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay", "overflownOnly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3621
3899
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputComponent, decorators: [{
3622
3900
  type: Component,
3623
- args: [{ selector: 'teta-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"font-caption color-text-90 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n *ngIf=\"label?.length > 0\">\n {{label}}\n</div>\n<div class=\"input-container\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;grid-gap:4px;flex-grow:1;flex-basis:10px}\n"] }]
3901
+ args: [{ selector: 'teta-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"font-caption color-text-90 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n *ngIf=\"label?.length > 0\">\n <span class=\"overflow-hidden text-overflow-ellipsis\"\n [tetaHint]=\"label\"\n [overflownOnly]=\"true\">\n {{label}}\n </span>\n</div>\n<div class=\"input-container\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\n", styles: [":host{display:flex;grid-gap:4px;flex-grow:1;flex-basis:10px}\n"] }]
3624
3902
  }], ctorParameters: function () { return []; }, propDecorators: { label: [{
3625
3903
  type: Input
3626
3904
  }], horizontal: [{
@@ -4840,17 +5118,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
4840
5118
  args: ['class.form-group-title']
4841
5119
  }] } });
4842
5120
 
5121
+ class HintModule {
5122
+ }
5123
+ HintModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5124
+ HintModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: HintModule, declarations: [HintDirective], imports: [CommonModule,
5125
+ DynamicComponentModule], exports: [HintDirective] });
5126
+ HintModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, imports: [CommonModule,
5127
+ DynamicComponentModule] });
5128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, decorators: [{
5129
+ type: NgModule,
5130
+ args: [{
5131
+ declarations: [HintDirective],
5132
+ exports: [HintDirective],
5133
+ imports: [
5134
+ CommonModule,
5135
+ DynamicComponentModule
5136
+ ]
5137
+ }]
5138
+ }] });
5139
+
4843
5140
  class InputModule {
4844
5141
  }
4845
5142
  InputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4846
- InputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: InputModule, declarations: [InputComponent, TextFieldComponent, FormGroupTitleComponent], imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule], exports: [InputComponent, TextFieldComponent, FormGroupTitleComponent] });
4847
- InputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule] });
5143
+ InputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: InputModule, declarations: [InputComponent, TextFieldComponent, FormGroupTitleComponent], imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule, HintModule], exports: [InputComponent, TextFieldComponent, FormGroupTitleComponent] });
5144
+ InputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule, HintModule] });
4848
5145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, decorators: [{
4849
5146
  type: NgModule,
4850
5147
  args: [{
4851
5148
  declarations: [InputComponent, TextFieldComponent, FormGroupTitleComponent],
4852
5149
  exports: [InputComponent, TextFieldComponent, FormGroupTitleComponent],
4853
- imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule],
5150
+ imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule, HintModule],
4854
5151
  }]
4855
5152
  }] });
4856
5153
 
@@ -5461,16 +5758,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
5461
5758
  class CurrentModal {
5462
5759
  }
5463
5760
 
5464
- class DynamicData {
5465
- constructor(value) {
5466
- for (const key in value) {
5467
- if (value.hasOwnProperty(key)) {
5468
- this[key] = value[key];
5469
- }
5470
- }
5471
- }
5472
- }
5473
-
5474
5761
  class DialogComponent {
5475
5762
  constructor(modal, data) {
5476
5763
  this.modal = modal;
@@ -5563,118 +5850,21 @@ class ModalInstance {
5563
5850
  });
5564
5851
  }
5565
5852
  }
5566
- get window() {
5567
- return this._window;
5568
- }
5569
- get component() {
5570
- return this._content.componentRef ? this._content.componentRef : null;
5571
- }
5572
- destroy() {
5573
- this._window.destroy();
5574
- if (this._content && this._content.viewRef) {
5575
- setTimeout(() => {
5576
- this._content.viewRef.destroy();
5577
- }, 150);
5578
- }
5579
- }
5580
- }
5581
-
5582
- class TetaContentRef {
5583
- constructor(nodes, viewRef, componentRef) {
5584
- this.nodes = nodes;
5585
- this.viewRef = viewRef;
5586
- this.componentRef = componentRef;
5587
- }
5588
- }
5589
-
5590
- class DynamicComponentService {
5591
- constructor(_componentFactoryResolver, _rendererFactory, _appRef) {
5592
- this._componentFactoryResolver = _componentFactoryResolver;
5593
- this._rendererFactory = _rendererFactory;
5594
- this._appRef = _appRef;
5595
- this._renderer = this._rendererFactory.createRenderer(null, null);
5596
- }
5597
- createComponent(component, contentRef, injector, container) {
5598
- const componentRef = this._componentFactoryResolver
5599
- .resolveComponentFactory(component)
5600
- .create(injector, contentRef.nodes);
5601
- this._appRef.attachView(componentRef.hostView);
5602
- container.appendChild(componentRef.location.nativeElement);
5603
- return componentRef;
5604
- }
5605
- createContent(content, injector, context) {
5606
- if (content === null || content === undefined) {
5607
- throw new Error('Content is undefined');
5608
- }
5609
- if (typeof content === 'string') {
5610
- return this.fromString(content);
5611
- }
5612
- else if (content instanceof TemplateRef) {
5613
- return this.fromTemplate(content, context);
5614
- }
5615
- else {
5616
- return this.fromComponent(content, injector, context);
5617
- }
5618
- }
5619
- destroy(component, content, container) {
5620
- if (component) {
5621
- this._appRef.detachView(component.hostView);
5622
- component.destroy();
5623
- }
5624
- if (content && content.viewRef) {
5625
- content.viewRef.destroy();
5626
- }
5627
- content = null;
5628
- }
5629
- getContext(content, context) {
5630
- if (content instanceof TemplateRef) {
5631
- return {
5632
- $implicit: context,
5633
- data: context,
5634
- };
5635
- }
5636
- return context;
5637
- }
5638
- getInjector(data, parent) {
5639
- return Injector.create({
5640
- providers: [
5641
- {
5642
- provide: DynamicData,
5643
- useValue: data,
5644
- },
5645
- ],
5646
- parent,
5647
- });
5648
- }
5649
- fromString(content) {
5650
- return new TetaContentRef([[this._renderer.createText(`${content}`)]]);
5853
+ get window() {
5854
+ return this._window;
5651
5855
  }
5652
- fromTemplate(content, context) {
5653
- const viewRef = content.createEmbeddedView(context);
5654
- this._appRef.attachView(viewRef);
5655
- return new TetaContentRef([viewRef.rootNodes], viewRef);
5856
+ get component() {
5857
+ return this._content.componentRef ? this._content.componentRef : null;
5656
5858
  }
5657
- fromComponent(content, injector, context) {
5658
- const componentFactory = this._componentFactoryResolver.resolveComponentFactory(content);
5659
- const componentRef = componentFactory.create(injector);
5660
- for (const key in context) {
5661
- if (context.hasOwnProperty(key)) {
5662
- componentRef.instance[key] = context[key];
5663
- }
5859
+ destroy() {
5860
+ this._window.destroy();
5861
+ if (this._content && this._content.viewRef) {
5862
+ setTimeout(() => {
5863
+ this._content.viewRef.destroy();
5864
+ }, 150);
5664
5865
  }
5665
- const componentNativeEl = componentRef.location.nativeElement;
5666
- this._appRef.attachView(componentRef.hostView);
5667
- return new TetaContentRef([[componentNativeEl]], componentRef.hostView, componentRef);
5668
5866
  }
5669
5867
  }
5670
- DynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.RendererFactory2 }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
5671
- DynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, providedIn: 'root' });
5672
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, decorators: [{
5673
- type: Injectable,
5674
- args: [{
5675
- providedIn: 'root',
5676
- }]
5677
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: i0.ApplicationRef }]; } });
5678
5868
 
5679
5869
  class ModalService {
5680
5870
  constructor(_document, _injector, _factory) {
@@ -6259,171 +6449,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
6259
6449
  args: ['click']
6260
6450
  }] } });
6261
6451
 
6262
- class DynamicContentBaseDirective {
6263
- constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
6264
- this._document = _document;
6265
- this._elementRef = _elementRef;
6266
- this._service = _service;
6267
- this._injector = _injector;
6268
- this._zone = _zone;
6269
- this._cdr = _cdr;
6270
- this.align = Align.left;
6271
- this.verticalAlign = VerticalAlign.bottom;
6272
- this.openChange = new EventEmitter();
6273
- this._alive = true;
6274
- this._open = false;
6275
- this._zone.onStable
6276
- .pipe(takeWhile((_) => this._alive), filter((_) => this._open))
6277
- .subscribe((_) => {
6278
- this.setPosition();
6279
- });
6280
- }
6281
- set open(open) {
6282
- this._open = open;
6283
- if (this._open) {
6284
- this.createContentRef();
6285
- }
6286
- else {
6287
- this.destroyContentRef();
6288
- }
6289
- }
6290
- ngOnDestroy() {
6291
- this._alive = false;
6292
- this.destroyContentRef();
6293
- }
6294
- ngOnInit() {
6295
- }
6296
- createContentRef(className) {
6297
- if (!this._componentRef) {
6298
- this._open = true;
6299
- const injector = this._service.getInjector(this.data, this._injector);
6300
- const context = this._service.getContext(this._dynamicContent, this.data);
6301
- this._content = this._service.createContent(this._dynamicContent, this._injector, context);
6302
- this._componentRef = this._service.createComponent(PopupContentComponent, this._content, injector, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
6303
- if (className) {
6304
- this._componentRef.instance.addClass(className);
6305
- }
6306
- }
6307
- return this._componentRef;
6308
- }
6309
- destroyContentRef() {
6310
- this._open = false;
6311
- this._service.destroy(this._componentRef, this._content, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
6312
- this._componentRef = null;
6313
- }
6314
- }
6315
- DynamicContentBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
6316
- DynamicContentBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: DynamicContentBaseDirective, inputs: { data: "data", className: "className", align: "align", verticalAlign: "verticalAlign", appendToBody: "appendToBody", open: "open" }, outputs: { openChange: "openChange" }, ngImport: i0 });
6317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, decorators: [{
6318
- type: Directive
6319
- }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
6320
- type: Input
6321
- }], className: [{
6322
- type: Input
6323
- }], align: [{
6324
- type: Input
6325
- }], verticalAlign: [{
6326
- type: Input
6327
- }], appendToBody: [{
6328
- type: Input
6329
- }], open: [{
6330
- type: Input
6331
- }], openChange: [{
6332
- type: Output
6333
- }] } });
6334
-
6335
- class HintDirective extends DynamicContentBaseDirective {
6336
- constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
6337
- super(_document, _elementRef, _service, _injector, _zone, _cdr);
6338
- this._document = _document;
6339
- this._elementRef = _elementRef;
6340
- this._service = _service;
6341
- this._injector = _injector;
6342
- this._zone = _zone;
6343
- this._cdr = _cdr;
6344
- this.align = Align.center;
6345
- this.verticalAlign = VerticalAlign.top;
6346
- this.delay = 300;
6347
- }
6348
- get _dynamicContent() {
6349
- return this.tetaHint;
6350
- }
6351
- mouseenter() {
6352
- clearTimeout(this._timeout);
6353
- this._timeout = setTimeout(() => {
6354
- this.createHint();
6355
- }, this.delay);
6356
- }
6357
- mouseleave() {
6358
- clearTimeout(this._timeout);
6359
- if (this._open && this._componentRef) {
6360
- this._timeout = setTimeout(() => {
6361
- this.destroyContentRef();
6362
- }, this.delay);
6363
- }
6364
- }
6365
- click(event) {
6366
- if (this._open &&
6367
- this._componentRef &&
6368
- DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {
6369
- event.stopPropagation();
6370
- }
6371
- }
6372
- setPosition() {
6373
- if (this._componentRef && this._open) {
6374
- if (!this._componentRect) {
6375
- this._componentRect =
6376
- this._componentRef.location.nativeElement.getBoundingClientRect();
6377
- }
6378
- const position = PositionUtil.getPosition(this._elementRef.nativeElement.getBoundingClientRect(), this._componentRect, this.align, this.verticalAlign, 0, 4);
6379
- PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);
6380
- }
6381
- }
6382
- createHint() {
6383
- if (!this._dynamicContent) {
6384
- return;
6385
- }
6386
- this._componentRef = this.createContentRef();
6387
- this._componentRef.instance.className = [
6388
- ...ArrayUtil.asArray(this.className),
6389
- 'hint',
6390
- ];
6391
- }
6392
- ngOnDestroy() {
6393
- super.ngOnDestroy();
6394
- }
6395
- }
6396
- HintDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintDirective, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: DynamicComponentService }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
6397
- HintDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: HintDirective, selector: "[tetaHint]", inputs: { tetaHint: "tetaHint", align: "align", verticalAlign: "verticalAlign", delay: "delay" }, host: { listeners: { "mouseenter": "mouseenter($event)", "mouseleave": "mouseleave($event)", "click": "click($event)" } }, usesInheritance: true, ngImport: i0 });
6398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintDirective, decorators: [{
6399
- type: Directive,
6400
- args: [{
6401
- selector: '[tetaHint]',
6402
- }]
6403
- }], ctorParameters: function () {
6404
- return [{ type: undefined, decorators: [{
6405
- type: Inject,
6406
- args: [DOCUMENT]
6407
- }] }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }];
6408
- }, propDecorators: { tetaHint: [{
6409
- type: Input
6410
- }], align: [{
6411
- type: Input
6412
- }], verticalAlign: [{
6413
- type: Input
6414
- }], delay: [{
6415
- type: Input
6416
- }], mouseenter: [{
6417
- type: HostListener,
6418
- args: ['mouseenter', ['$event']]
6419
- }], mouseleave: [{
6420
- type: HostListener,
6421
- args: ['mouseleave', ['$event']]
6422
- }], click: [{
6423
- type: HostListener,
6424
- args: ['click', ['$event']]
6425
- }] } });
6426
-
6427
6452
  class PropertyGridItemComponent {
6428
6453
  constructor(_transloco) {
6429
6454
  this._transloco = _transloco;
@@ -6497,7 +6522,7 @@ class PropertyGridItemComponent {
6497
6522
  }
6498
6523
  }
6499
6524
  PropertyGridItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PropertyGridItemComponent, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.Component });
6500
- PropertyGridItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PropertyGridItemComponent, selector: "teta-property-grid-item", inputs: { column: "column", hideNonEditable: "hideNonEditable", dict: "dict", formGroup: "formGroup", horizontal: "horizontal" }, outputs: { controlValueChange: "controlValueChange" }, ngImport: i0, template: "<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n [required]=\"column.required\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "align", "verticalAlign", "appendToBody", "allowNull", "backdrop", "showTime", "format"] }, { kind: "component", type: SelectComponent, selector: "teta-select", inputs: ["multiple", "options", "invalid", "align", "verticalAlign", "autoClose", "autoCloseIgnore", "disabled", "itemSize", "virtual", "icon", "placeholder", "appendToBody", "allowNull", "valueRef", "textRef", "searchRef"] }, { kind: "component", type: InputComponent, selector: "teta-input", inputs: ["label", "horizontal", "required"] }, { kind: "component", type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "invalid"] }, { kind: "component", type: ToggleComponent, selector: "teta-toggle", inputs: ["palette", "noLabel", "disabled"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }] });
6525
+ PropertyGridItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PropertyGridItemComponent, selector: "teta-property-grid-item", inputs: { column: "column", hideNonEditable: "hideNonEditable", dict: "dict", formGroup: "formGroup", horizontal: "horizontal" }, outputs: { controlValueChange: "controlValueChange" }, ngImport: i0, template: "<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n [required]=\"column.required\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: DatePickerComponent, selector: "teta-date-picker", inputs: ["disabled", "invalid", "firstDayOfWeek", "disabledDates", "disabledPeriods", "disabledDays", "minDate", "maxDate", "minYearDate", "maxYearDate", "align", "verticalAlign", "appendToBody", "allowNull", "backdrop", "showTime", "format"] }, { kind: "component", type: SelectComponent, selector: "teta-select", inputs: ["multiple", "options", "invalid", "align", "verticalAlign", "autoClose", "autoCloseIgnore", "disabled", "itemSize", "virtual", "icon", "placeholder", "appendToBody", "allowNull", "valueRef", "textRef", "searchRef"] }, { kind: "component", type: InputComponent, selector: "teta-input", inputs: ["label", "horizontal", "required"] }, { kind: "component", type: TextFieldComponent, selector: "teta-text-field", inputs: ["placeholder", "leftIconName", "disabled", "onlyNumber", "invalid"] }, { kind: "component", type: ToggleComponent, selector: "teta-toggle", inputs: ["palette", "noLabel", "disabled"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay", "overflownOnly"] }] });
6501
6526
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PropertyGridItemComponent, decorators: [{
6502
6527
  type: Component,
6503
6528
  args: [{ selector: 'teta-property-grid-item', template: "<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n [required]=\"column.required\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n" }]
@@ -6695,25 +6720,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
6695
6720
  }]
6696
6721
  }] });
6697
6722
 
6698
- class HintModule {
6699
- }
6700
- HintModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6701
- HintModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: HintModule, declarations: [HintDirective], imports: [CommonModule,
6702
- DynamicComponentModule], exports: [HintDirective] });
6703
- HintModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, imports: [CommonModule,
6704
- DynamicComponentModule] });
6705
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, decorators: [{
6706
- type: NgModule,
6707
- args: [{
6708
- declarations: [HintDirective],
6709
- exports: [HintDirective],
6710
- imports: [
6711
- CommonModule,
6712
- DynamicComponentModule
6713
- ]
6714
- }]
6715
- }] });
6716
-
6717
6723
  class PropertyGridModule {
6718
6724
  }
6719
6725
  PropertyGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PropertyGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -8217,7 +8223,7 @@ class DefaultHeadCellComponent extends HeadCellComponentBase {
8217
8223
  }
8218
8224
  }
8219
8225
  DefaultHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DefaultHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8220
- DefaultHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: DefaultHeadCellComponent, selector: "teta-default-head-cell", inputs: { column: "column", columns: "columns", data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text font-caption color-text-70\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8226
+ DefaultHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: DefaultHeadCellComponent, selector: "teta-default-head-cell", inputs: { column: "column", columns: "columns", data: "data" }, usesInheritance: true, ngImport: i0, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text font-caption color-text-70\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay", "overflownOnly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8221
8227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DefaultHeadCellComponent, decorators: [{
8222
8228
  type: Component,
8223
8229
  args: [{ selector: 'teta-default-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"column column_auto\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text font-caption color-text-70\">\n [{{column.unit}}]\n </div>\n</div>\n", styles: [":host{align-items:center;justify-content:center;display:flex;min-width:0;padding:6px 8px}\n"] }]
@@ -8399,10 +8405,10 @@ class TabsComponent {
8399
8405
  }
8400
8406
  }
8401
8407
  TabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8402
- TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TabsComponent, selector: "teta-tabs", inputs: { activeId: "activeId", destroyOnHide: "destroyOnHide" }, outputs: { tabChange: "tabChange" }, host: { properties: { "class.tabs": "this.classTabs" } }, queries: [{ propertyName: "tabs", predicate: TabComponent }], ngImport: i0, template: "<div class=\"tabs-head\" role=\"tablist\">\n <div class=\"tabs-head-item\"\n *ngFor=\"let tab of tabs\"\n (click)=\"select(tab.id);\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [class.tabs-head-item_disabled]=\"tab.disabled\">\n <span [id]=\"tab.id\" class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"(tab.disabled ? '-1': undefined)\"\n [attr.aria-controls]=\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null)\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\">\n {{tab.title}}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </div>\n</div>\n<div class=\"tabs-content\">\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <ng-container *ngIf=\"!destroyOnHide || tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n </ng-container>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
8408
+ TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TabsComponent, selector: "teta-tabs", inputs: { activeId: "activeId", destroyOnHide: "destroyOnHide" }, outputs: { tabChange: "tabChange" }, host: { properties: { "class.tabs": "this.classTabs" } }, queries: [{ propertyName: "tabs", predicate: TabComponent }], ngImport: i0, template: "<div class=\"tabs-head\" role=\"tablist\">\n <div class=\"tabs-head-item\"\n *ngFor=\"let tab of tabs\"\n (click)=\"select(tab.id);\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [class.tabs-head-item_disabled]=\"tab.disabled\">\n <span [id]=\"tab.id\" class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"(tab.disabled ? '-1': undefined)\"\n [attr.aria-controls]=\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null)\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\">\n {{tab.title}}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </div>\n <ng-content></ng-content>\n</div>\n<div class=\"tabs-content\">\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <ng-container *ngIf=\"!destroyOnHide || tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n </ng-container>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
8403
8409
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabsComponent, decorators: [{
8404
8410
  type: Component,
8405
- args: [{ selector: 'teta-tabs', template: "<div class=\"tabs-head\" role=\"tablist\">\n <div class=\"tabs-head-item\"\n *ngFor=\"let tab of tabs\"\n (click)=\"select(tab.id);\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [class.tabs-head-item_disabled]=\"tab.disabled\">\n <span [id]=\"tab.id\" class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"(tab.disabled ? '-1': undefined)\"\n [attr.aria-controls]=\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null)\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\">\n {{tab.title}}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </div>\n</div>\n<div class=\"tabs-content\">\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <ng-container *ngIf=\"!destroyOnHide || tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n </ng-container>\n </ng-template>\n</div>\n" }]
8411
+ args: [{ selector: 'teta-tabs', template: "<div class=\"tabs-head\" role=\"tablist\">\n <div class=\"tabs-head-item\"\n *ngFor=\"let tab of tabs\"\n (click)=\"select(tab.id);\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [class.tabs-head-item_disabled]=\"tab.disabled\">\n <span [id]=\"tab.id\" class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"(tab.disabled ? '-1': undefined)\"\n [attr.aria-controls]=\"(!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null)\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\">\n {{tab.title}}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </div>\n <ng-content></ng-content>\n</div>\n<div class=\"tabs-content\">\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <ng-container *ngIf=\"!destroyOnHide || tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n </ng-container>\n </ng-template>\n</div>\n" }]
8406
8412
  }], ctorParameters: function () { return []; }, propDecorators: { classTabs: [{
8407
8413
  type: HostBinding,
8408
8414
  args: ['class.tabs']
@@ -8648,11 +8654,12 @@ class TreeItemComponent {
8648
8654
  this.treeItemClass = true;
8649
8655
  this.itemIsOpen = false;
8650
8656
  this._alive = true;
8657
+ this.treeItemInstance = true;
8651
8658
  }
8652
8659
  get computedDepth() {
8653
8660
  var _a;
8654
8661
  return (this.depth +
8655
- (((_a = this.item[this.childNodeName]) === null || _a === void 0 ? void 0 : _a.length) > 0 ? 0 : this.noChildMode ? 1 : 2));
8662
+ (((_a = this.item[this.childNodeName]) === null || _a === void 0 ? void 0 : _a.length) > 0 ? 0 : this.childPadding ? 2 : 1));
8656
8663
  }
8657
8664
  openItem() {
8658
8665
  this.service.openItem(this.item);
@@ -8667,32 +8674,33 @@ class TreeItemComponent {
8667
8674
  this._cdr.markForCheck();
8668
8675
  });
8669
8676
  }
8670
- ngOnChanges(changes) { }
8677
+ ngOnChanges(changes) {
8678
+ }
8671
8679
  ngOnDestroy() {
8672
8680
  this._alive = false;
8673
8681
  }
8674
8682
  }
8675
8683
  TreeItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeItemComponent, deps: [{ token: TreeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8676
- TreeItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TreeItemComponent, selector: "teta-tree-item", inputs: { item: "item", depth: "depth", padding: "padding", childNodeName: "childNodeName", template: "template", noChildMode: "noChildMode" }, host: { properties: { "class.tree__item-container": "this.treeItemClass" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: item, item: item, open: itemIsOpen, service: service, depth: depth}\"></ng-container>\n</div>\n<div [@children] class=\"tree__children\" *ngIf=\"itemIsOpen && item[childNodeName]?.length > 0\">\n <teta-tree-item *ngFor=\"let child of item[childNodeName];\"\n [item]=\"child\"\n [template]=\"template\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [depth]=\"depth + 1\"></teta-tree-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TreeItemComponent, selector: "teta-tree-item", inputs: ["item", "depth", "padding", "childNodeName", "template", "noChildMode"] }], animations: [
8677
- trigger('children', [
8684
+ TreeItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TreeItemComponent, selector: "teta-tree-item", inputs: { item: "item", depth: "depth", padding: "padding", childNodeName: "childNodeName", template: "template", childPadding: "childPadding" }, host: { properties: { "class.tree__item-container": "this.treeItemClass", "@treeItemInstance": "this.treeItemInstance" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: item, item: item, open: itemIsOpen, service: service, depth: depth}\"></ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
8685
+ trigger('treeItemInstance', [
8678
8686
  transition('void => *', [
8679
8687
  style({ opacity: '0' }),
8680
8688
  animate(200, style({ opacity: '1' })),
8681
8689
  ]),
8682
- transition('* => void', [animate(200, style({ opacity: '0' }))]),
8690
+ // transition('* => void', [animate(200, style({opacity: '0'}))]),
8683
8691
  ]),
8684
8692
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8685
8693
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeItemComponent, decorators: [{
8686
8694
  type: Component,
8687
8695
  args: [{ selector: 'teta-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
8688
- trigger('children', [
8696
+ trigger('treeItemInstance', [
8689
8697
  transition('void => *', [
8690
8698
  style({ opacity: '0' }),
8691
8699
  animate(200, style({ opacity: '1' })),
8692
8700
  ]),
8693
- transition('* => void', [animate(200, style({ opacity: '0' }))]),
8701
+ // transition('* => void', [animate(200, style({opacity: '0'}))]),
8694
8702
  ]),
8695
- ], template: "<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: item, item: item, open: itemIsOpen, service: service, depth: depth}\"></ng-container>\n</div>\n<div [@children] class=\"tree__children\" *ngIf=\"itemIsOpen && item[childNodeName]?.length > 0\">\n <teta-tree-item *ngFor=\"let child of item[childNodeName];\"\n [item]=\"child\"\n [template]=\"template\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [depth]=\"depth + 1\"></teta-tree-item>\n</div>\n" }]
8703
+ ], template: "<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: item, item: item, open: itemIsOpen, service: service, depth: depth}\"></ng-container>\n</div>\n" }]
8696
8704
  }], ctorParameters: function () { return [{ type: TreeService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
8697
8705
  type: Input
8698
8706
  }], depth: [{
@@ -8703,69 +8711,103 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
8703
8711
  type: Input
8704
8712
  }], template: [{
8705
8713
  type: Input
8706
- }], noChildMode: [{
8714
+ }], childPadding: [{
8707
8715
  type: Input
8708
8716
  }], treeItemClass: [{
8709
8717
  type: HostBinding,
8710
8718
  args: ['class.tree__item-container']
8719
+ }], treeItemInstance: [{
8720
+ type: HostBinding,
8721
+ args: ['@treeItemInstance']
8711
8722
  }] } });
8712
8723
 
8713
8724
  class TreeComponent {
8714
8725
  constructor(_service, _cdr) {
8715
8726
  this._service = _service;
8716
8727
  this._cdr = _cdr;
8717
- this.service = new EventEmitter();
8718
8728
  this.padding = 8;
8719
8729
  this.childNodeName = 'children';
8730
+ this.height = 28;
8731
+ this.service = new EventEmitter();
8720
8732
  this.openItemsChange = new EventEmitter();
8721
8733
  this._alive = true;
8734
+ this.treeClass = true;
8735
+ this.trackRow = (index, item) => {
8736
+ if (this.compareItems) {
8737
+ return this.compareItems(item);
8738
+ }
8739
+ return index;
8740
+ };
8722
8741
  this._service.openItems
8723
8742
  .pipe(takeWhile((_) => this._alive), filter((_) => this._openItems !== _))
8724
- .subscribe((_) => this.openItemsChange.emit(_));
8743
+ .subscribe((_) => {
8744
+ this._openItems = _;
8745
+ this.openItemsChange.emit(_);
8746
+ });
8747
+ }
8748
+ set data(data) {
8749
+ this._data = data;
8750
+ }
8751
+ get data() {
8752
+ return this._data;
8725
8753
  }
8726
8754
  set openItems(items) {
8727
8755
  this._openItems = items;
8728
8756
  this._service.setOpenItems(items);
8729
8757
  }
8730
- get noChildMode() {
8731
- const hasChildren = this.data.find((_) => { var _a; return ((_a = _[this.childNodeName]) === null || _a === void 0 ? void 0 : _a.length) > 0; });
8732
- return !hasChildren;
8733
- }
8734
8758
  set compareItems(func) {
8735
8759
  this._service.compareItems = func;
8736
8760
  }
8737
- get getClass() {
8738
- const result = [this.class, 'tree'];
8739
- return result.join(' ');
8761
+ get compareItems() {
8762
+ return this._service.compareItems;
8740
8763
  }
8741
8764
  ngOnInit() {
8742
8765
  this.service.emit(this._service);
8743
8766
  }
8744
- ngAfterContentInit() { }
8745
8767
  ngOnChanges(changes) {
8768
+ this.displayData = this.getDisplayData(this._data, 0);
8769
+ this.childPadding = this.hasChildren(this._data);
8746
8770
  this._cdr.detectChanges();
8747
8771
  }
8748
8772
  ngOnDestroy() {
8749
8773
  this._alive = false;
8750
8774
  }
8775
+ hasChildren(data) {
8776
+ return data.some((_) => { var _a; return ((_a = _[this.childNodeName]) === null || _a === void 0 ? void 0 : _a.length) > 0; });
8777
+ }
8778
+ getDisplayData(data, level) {
8779
+ const result = [];
8780
+ data === null || data === void 0 ? void 0 : data.forEach((item) => {
8781
+ var _a, _b;
8782
+ item['level'] = level;
8783
+ result.push(item);
8784
+ if (((_a = item[this.childNodeName]) === null || _a === void 0 ? void 0 : _a.length) > 0
8785
+ && ((_b = this._openItems) === null || _b === void 0 ? void 0 : _b.find((openItem) => this.compareItems(openItem) === this.compareItems(item)))) {
8786
+ result.push(...this.getDisplayData(item[this.childNodeName], level + 1));
8787
+ }
8788
+ });
8789
+ return result;
8790
+ }
8751
8791
  }
8752
8792
  TreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeComponent, deps: [{ token: TreeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8753
- TreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TreeComponent, selector: "teta-tree", inputs: { data: "data", class: "class", padding: "padding", childNodeName: "childNodeName", openItems: "openItems", compareItems: "compareItems" }, outputs: { service: "service", openItemsChange: "openItemsChange" }, host: { properties: { "class": "this.getClass" } }, providers: [TreeService], queries: [{ propertyName: "template", first: true, predicate: TetaTemplateDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngFor=\"let item of data\">\n <teta-tree-item [item]=\"item\"\n [depth]=\"0\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [noChildMode]=\"noChildMode\"\n [template]=\"template?.template\"></teta-tree-item>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TreeItemComponent, selector: "teta-tree-item", inputs: ["item", "depth", "padding", "childNodeName", "template", "noChildMode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8793
+ TreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TreeComponent, selector: "teta-tree", inputs: { data: "data", padding: "padding", childNodeName: "childNodeName", virtual: "virtual", height: "height", openItems: "openItems", compareItems: "compareItems" }, outputs: { service: "service", openItemsChange: "openItemsChange" }, host: { properties: { "class.tree": "this.treeClass" } }, providers: [TreeService], queries: [{ propertyName: "template", first: true, predicate: TetaTemplateDirective, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual; else default\"\n class=\"table-body-container\"\n [itemSize]=\"height\">\n <teta-tree-item *cdkVirtualFor=\"let item of displayData;templateCacheSize: 0; trackBy: trackRow;\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n</cdk-virtual-scroll-viewport>\n<ng-template #default>\n <teta-tree-item *ngFor=\"let item of displayData\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: TreeItemComponent, selector: "teta-tree-item", inputs: ["item", "depth", "padding", "childNodeName", "template", "childPadding"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8754
8794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeComponent, decorators: [{
8755
8795
  type: Component,
8756
- args: [{ selector: 'teta-tree', providers: [TreeService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let item of data\">\n <teta-tree-item [item]=\"item\"\n [depth]=\"0\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [noChildMode]=\"noChildMode\"\n [template]=\"template?.template\"></teta-tree-item>\n</ng-container>\n" }]
8796
+ args: [{ selector: 'teta-tree', providers: [TreeService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cdk-virtual-scroll-viewport *ngIf=\"virtual; else default\"\n class=\"table-body-container\"\n [itemSize]=\"height\">\n <teta-tree-item *cdkVirtualFor=\"let item of displayData;templateCacheSize: 0; trackBy: trackRow;\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n</cdk-virtual-scroll-viewport>\n<ng-template #default>\n <teta-tree-item *ngFor=\"let item of displayData\"\n [item]=\"item\"\n [style.height.px]=\"height\"\n [depth]=\"item['level']\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [childPadding]=\"childPadding\"\n [template]=\"template?.template\"></teta-tree-item>\n</ng-template>\n" }]
8757
8797
  }], ctorParameters: function () { return [{ type: TreeService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
8758
8798
  type: Input
8759
- }], service: [{
8760
- type: Output
8761
- }], class: [{
8762
- type: Input
8763
8799
  }], padding: [{
8764
8800
  type: Input
8765
8801
  }], childNodeName: [{
8766
8802
  type: Input
8803
+ }], virtual: [{
8804
+ type: Input
8805
+ }], height: [{
8806
+ type: Input
8767
8807
  }], openItems: [{
8768
8808
  type: Input
8809
+ }], service: [{
8810
+ type: Output
8769
8811
  }], openItemsChange: [{
8770
8812
  type: Output
8771
8813
  }], template: [{
@@ -8773,9 +8815,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
8773
8815
  args: [TetaTemplateDirective, { static: true }]
8774
8816
  }], compareItems: [{
8775
8817
  type: Input
8776
- }], getClass: [{
8818
+ }], treeClass: [{
8777
8819
  type: HostBinding,
8778
- args: ['class']
8820
+ args: ['class.tree']
8779
8821
  }] } });
8780
8822
 
8781
8823
  class TreeItemToggleComponent {
@@ -8911,7 +8953,7 @@ class VisibilityDropdownTabComponent {
8911
8953
  }
8912
8954
  }
8913
8955
  VisibilityDropdownTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: VisibilityDropdownTabComponent, deps: [{ token: TableService }, { token: TetaConfigService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8914
- VisibilityDropdownTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { kind: "component", type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "component", type: TreeComponent, selector: "teta-tree", inputs: ["data", "class", "padding", "childNodeName", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { kind: "directive", type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }, { kind: "component", type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }, { kind: "component", type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8956
+ VisibilityDropdownTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: { columns: "columns", column: "column", state: "state", data: "data", close: "close" }, ngImport: i0, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "teta-checkbox", inputs: ["class", "palette", "noLabel", "disabled", "value", "binary", "allowNull"] }, { kind: "component", type: ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "component", type: TreeComponent, selector: "teta-tree", inputs: ["data", "padding", "childNodeName", "virtual", "height", "openItems", "compareItems"], outputs: ["service", "openItemsChange"] }, { kind: "directive", type: TetaTemplateDirective, selector: "[tetaTemplate]", inputs: ["tetaTemplate"] }, { kind: "component", type: TreeItemToggleComponent, selector: "teta-tree-item-toggle", inputs: ["item"] }, { kind: "component", type: ToolbarComponent, selector: "teta-toolbar", inputs: ["palette", "class"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8915
8957
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: VisibilityDropdownTabComponent, decorators: [{
8916
8958
  type: Component,
8917
8959
  args: [{ selector: 'teta-visibility-dropdown-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"locale | async as loc\">\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n {{loc.all}}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{item.caption}}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n {{loc.apply}}\n </button>\n </teta-toolbar>\n</ng-container>\n" }]
@@ -9546,10 +9588,10 @@ class StringCellComponent extends CellComponentBase {
9546
9588
  }
9547
9589
  }
9548
9590
  StringCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: StringCellComponent, deps: [{ token: TableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9549
- StringCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: StringCellComponent, selector: "teta-string-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name]}}\n</span>\n<input #input\n *ngIf=\"edit\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"row[column.name]=$event\"/>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9591
+ StringCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: StringCellComponent, selector: "teta-string-cell", inputs: { column: "column", row: "row" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [tetaHint]=\"row[column.name]\"\n [appendToBody]=\"true\"\n [overflownOnly]=\"true\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name]}}\n</span>\n<input #input\n *ngIf=\"edit\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"row[column.name]=$event\"/>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: HintDirective, selector: "[tetaHint]", inputs: ["tetaHint", "align", "verticalAlign", "delay", "overflownOnly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9550
9592
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: StringCellComponent, decorators: [{
9551
9593
  type: Component,
9552
- args: [{ selector: 'teta-string-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name]}}\n</span>\n<input #input\n *ngIf=\"edit\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"row[column.name]=$event\"/>\n\n" }]
9594
+ args: [{ selector: 'teta-string-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [tetaHint]=\"row[column.name]\"\n [appendToBody]=\"true\"\n [overflownOnly]=\"true\"\n [class.cell-text_disabled]=\"!editable\">\n {{row[column.name]}}\n</span>\n<input #input\n *ngIf=\"edit\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row[column.name]\"\n (ngModelChange)=\"row[column.name]=$event\"/>\n\n" }]
9553
9595
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
9554
9596
  type: Input
9555
9597
  }], row: [{
@@ -10388,14 +10430,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
10388
10430
  class TreeModule {
10389
10431
  }
10390
10432
  TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10391
- TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: TreeModule, declarations: [TreeComponent, TreeItemComponent, TreeItemToggleComponent], imports: [CommonModule, IconModule, TetaTemplateModule], exports: [TreeComponent, TetaTemplateModule, TreeItemToggleComponent] });
10392
- TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeModule, imports: [CommonModule, IconModule, TetaTemplateModule, TetaTemplateModule] });
10433
+ TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: TreeModule, declarations: [TreeComponent, TreeItemComponent, TreeItemToggleComponent], imports: [CommonModule, IconModule, TetaTemplateModule, ScrollingModule], exports: [TreeComponent, TetaTemplateModule, TreeItemToggleComponent] });
10434
+ TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeModule, imports: [CommonModule, IconModule, TetaTemplateModule, ScrollingModule, TetaTemplateModule] });
10393
10435
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TreeModule, decorators: [{
10394
10436
  type: NgModule,
10395
10437
  args: [{
10396
10438
  declarations: [TreeComponent, TreeItemComponent, TreeItemToggleComponent],
10397
10439
  exports: [TreeComponent, TetaTemplateModule, TreeItemToggleComponent],
10398
- imports: [CommonModule, IconModule, TetaTemplateModule],
10440
+ imports: [CommonModule, IconModule, TetaTemplateModule, ScrollingModule],
10399
10441
  }]
10400
10442
  }] });
10401
10443