@tetacom/ng-components 1.0.65 → 1.0.68

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.
@@ -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';
@@ -1053,6 +1053,9 @@ class DomUtil {
1053
1053
  }
1054
1054
  return null;
1055
1055
  }
1056
+ static isOverflown(element) {
1057
+ return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;
1058
+ }
1056
1059
  }
1057
1060
 
1058
1061
  class PositionUtil {
@@ -3584,6 +3587,279 @@ class NumericFilterValue {
3584
3587
  }
3585
3588
  }
3586
3589
 
3590
+ class TetaContentRef {
3591
+ constructor(nodes, viewRef, componentRef) {
3592
+ this.nodes = nodes;
3593
+ this.viewRef = viewRef;
3594
+ this.componentRef = componentRef;
3595
+ }
3596
+ }
3597
+
3598
+ class DynamicData {
3599
+ constructor(value) {
3600
+ for (const key in value) {
3601
+ if (value.hasOwnProperty(key)) {
3602
+ this[key] = value[key];
3603
+ }
3604
+ }
3605
+ }
3606
+ }
3607
+
3608
+ class DynamicComponentService {
3609
+ constructor(_componentFactoryResolver, _rendererFactory, _appRef) {
3610
+ this._componentFactoryResolver = _componentFactoryResolver;
3611
+ this._rendererFactory = _rendererFactory;
3612
+ this._appRef = _appRef;
3613
+ this._renderer = this._rendererFactory.createRenderer(null, null);
3614
+ }
3615
+ createComponent(component, contentRef, injector, container) {
3616
+ const componentRef = this._componentFactoryResolver
3617
+ .resolveComponentFactory(component)
3618
+ .create(injector, contentRef.nodes);
3619
+ this._appRef.attachView(componentRef.hostView);
3620
+ container.appendChild(componentRef.location.nativeElement);
3621
+ return componentRef;
3622
+ }
3623
+ createContent(content, injector, context) {
3624
+ if (content === null || content === undefined) {
3625
+ throw new Error('Content is undefined');
3626
+ }
3627
+ if (typeof content === 'string') {
3628
+ return this.fromString(content);
3629
+ }
3630
+ else if (content instanceof TemplateRef) {
3631
+ return this.fromTemplate(content, context);
3632
+ }
3633
+ else {
3634
+ return this.fromComponent(content, injector, context);
3635
+ }
3636
+ }
3637
+ destroy(component, content, container) {
3638
+ if (component) {
3639
+ this._appRef.detachView(component.hostView);
3640
+ component.destroy();
3641
+ }
3642
+ if (content && content.viewRef) {
3643
+ content.viewRef.destroy();
3644
+ }
3645
+ content = null;
3646
+ }
3647
+ getContext(content, context) {
3648
+ if (content instanceof TemplateRef) {
3649
+ return {
3650
+ $implicit: context,
3651
+ data: context,
3652
+ };
3653
+ }
3654
+ return context;
3655
+ }
3656
+ getInjector(data, parent) {
3657
+ return Injector.create({
3658
+ providers: [
3659
+ {
3660
+ provide: DynamicData,
3661
+ useValue: data,
3662
+ },
3663
+ ],
3664
+ parent,
3665
+ });
3666
+ }
3667
+ fromString(content) {
3668
+ return new TetaContentRef([[this._renderer.createText(`${content}`)]]);
3669
+ }
3670
+ fromTemplate(content, context) {
3671
+ const viewRef = content.createEmbeddedView(context);
3672
+ this._appRef.attachView(viewRef);
3673
+ return new TetaContentRef([viewRef.rootNodes], viewRef);
3674
+ }
3675
+ fromComponent(content, injector, context) {
3676
+ const componentFactory = this._componentFactoryResolver.resolveComponentFactory(content);
3677
+ const componentRef = componentFactory.create(injector);
3678
+ for (const key in context) {
3679
+ if (context.hasOwnProperty(key)) {
3680
+ componentRef.instance[key] = context[key];
3681
+ }
3682
+ }
3683
+ const componentNativeEl = componentRef.location.nativeElement;
3684
+ this._appRef.attachView(componentRef.hostView);
3685
+ return new TetaContentRef([[componentNativeEl]], componentRef.hostView, componentRef);
3686
+ }
3687
+ }
3688
+ 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 });
3689
+ DynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, providedIn: 'root' });
3690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, decorators: [{
3691
+ type: Injectable,
3692
+ args: [{
3693
+ providedIn: 'root',
3694
+ }]
3695
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: i0.ApplicationRef }]; } });
3696
+
3697
+ class DynamicContentBaseDirective {
3698
+ constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
3699
+ this._document = _document;
3700
+ this._elementRef = _elementRef;
3701
+ this._service = _service;
3702
+ this._injector = _injector;
3703
+ this._zone = _zone;
3704
+ this._cdr = _cdr;
3705
+ this.align = Align.left;
3706
+ this.verticalAlign = VerticalAlign.bottom;
3707
+ this.openChange = new EventEmitter();
3708
+ this._alive = true;
3709
+ this._open = false;
3710
+ this._zone.onStable
3711
+ .pipe(takeWhile((_) => this._alive), filter((_) => this._open))
3712
+ .subscribe((_) => {
3713
+ this.setPosition();
3714
+ });
3715
+ }
3716
+ set open(open) {
3717
+ this._open = open;
3718
+ if (this._open) {
3719
+ this.createContentRef();
3720
+ }
3721
+ else {
3722
+ this.destroyContentRef();
3723
+ }
3724
+ }
3725
+ ngOnDestroy() {
3726
+ this._alive = false;
3727
+ this.destroyContentRef();
3728
+ }
3729
+ ngOnInit() {
3730
+ }
3731
+ createContentRef(className) {
3732
+ if (!this._componentRef) {
3733
+ this._open = true;
3734
+ const injector = this._service.getInjector(this.data, this._injector);
3735
+ const context = this._service.getContext(this._dynamicContent, this.data);
3736
+ this._content = this._service.createContent(this._dynamicContent, this._injector, context);
3737
+ this._componentRef = this._service.createComponent(PopupContentComponent, this._content, injector, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
3738
+ if (className) {
3739
+ this._componentRef.instance.addClass(className);
3740
+ }
3741
+ }
3742
+ return this._componentRef;
3743
+ }
3744
+ destroyContentRef() {
3745
+ this._open = false;
3746
+ this._service.destroy(this._componentRef, this._content, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
3747
+ this._componentRef = null;
3748
+ }
3749
+ }
3750
+ DynamicContentBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
3751
+ 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 });
3752
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, decorators: [{
3753
+ type: Directive
3754
+ }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
3755
+ type: Input
3756
+ }], className: [{
3757
+ type: Input
3758
+ }], align: [{
3759
+ type: Input
3760
+ }], verticalAlign: [{
3761
+ type: Input
3762
+ }], appendToBody: [{
3763
+ type: Input
3764
+ }], open: [{
3765
+ type: Input
3766
+ }], openChange: [{
3767
+ type: Output
3768
+ }] } });
3769
+
3770
+ class HintDirective extends DynamicContentBaseDirective {
3771
+ constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
3772
+ super(_document, _elementRef, _service, _injector, _zone, _cdr);
3773
+ this._document = _document;
3774
+ this._elementRef = _elementRef;
3775
+ this._service = _service;
3776
+ this._injector = _injector;
3777
+ this._zone = _zone;
3778
+ this._cdr = _cdr;
3779
+ this.align = Align.center;
3780
+ this.verticalAlign = VerticalAlign.top;
3781
+ this.delay = 300;
3782
+ this.overflownOnly = false;
3783
+ }
3784
+ get _dynamicContent() {
3785
+ return this.tetaHint;
3786
+ }
3787
+ mouseenter() {
3788
+ clearTimeout(this._timeout);
3789
+ this._timeout = setTimeout(() => {
3790
+ this.createHint();
3791
+ }, this.delay);
3792
+ }
3793
+ mouseleave() {
3794
+ clearTimeout(this._timeout);
3795
+ if (this._open && this._componentRef) {
3796
+ this._timeout = setTimeout(() => {
3797
+ this.destroyContentRef();
3798
+ }, this.delay);
3799
+ }
3800
+ }
3801
+ click(event) {
3802
+ if (this._open &&
3803
+ this._componentRef &&
3804
+ DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {
3805
+ event.stopPropagation();
3806
+ }
3807
+ }
3808
+ setPosition() {
3809
+ if (this._componentRef && this._open) {
3810
+ if (!this._componentRect) {
3811
+ this._componentRect =
3812
+ this._componentRef.location.nativeElement.getBoundingClientRect();
3813
+ }
3814
+ const position = PositionUtil.getPosition(this._elementRef.nativeElement.getBoundingClientRect(), this._componentRect, this.align, this.verticalAlign, 0, 4);
3815
+ PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);
3816
+ }
3817
+ }
3818
+ createHint() {
3819
+ if (!this._dynamicContent || (this.overflownOnly && !DomUtil.isOverflown(this._elementRef.nativeElement))) {
3820
+ return;
3821
+ }
3822
+ this._componentRef = this.createContentRef();
3823
+ this._componentRef.instance.className = [
3824
+ ...ArrayUtil.asArray(this.className),
3825
+ 'hint',
3826
+ ];
3827
+ }
3828
+ ngOnDestroy() {
3829
+ super.ngOnDestroy();
3830
+ }
3831
+ }
3832
+ 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 });
3833
+ 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 });
3834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintDirective, decorators: [{
3835
+ type: Directive,
3836
+ args: [{
3837
+ selector: '[tetaHint]',
3838
+ }]
3839
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
3840
+ type: Inject,
3841
+ args: [DOCUMENT]
3842
+ }] }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tetaHint: [{
3843
+ type: Input
3844
+ }], align: [{
3845
+ type: Input
3846
+ }], verticalAlign: [{
3847
+ type: Input
3848
+ }], delay: [{
3849
+ type: Input
3850
+ }], overflownOnly: [{
3851
+ type: Input
3852
+ }], mouseenter: [{
3853
+ type: HostListener,
3854
+ args: ['mouseenter', ['$event']]
3855
+ }], mouseleave: [{
3856
+ type: HostListener,
3857
+ args: ['mouseleave', ['$event']]
3858
+ }], click: [{
3859
+ type: HostListener,
3860
+ args: ['click', ['$event']]
3861
+ }] } });
3862
+
3587
3863
  class InputComponent {
3588
3864
  constructor() {
3589
3865
  this.required = false;
@@ -3594,10 +3870,10 @@ class InputComponent {
3594
3870
  ngOnInit() { }
3595
3871
  }
3596
3872
  InputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3597
- 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 });
3873
+ 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 });
3598
3874
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputComponent, decorators: [{
3599
3875
  type: Component,
3600
- 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"] }]
3876
+ 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"] }]
3601
3877
  }], ctorParameters: function () { return []; }, propDecorators: { label: [{
3602
3878
  type: Input
3603
3879
  }], horizontal: [{
@@ -3767,10 +4043,6 @@ class TextFieldComponent {
3767
4043
  this.placeholder = '';
3768
4044
  this.disabled = false;
3769
4045
  this.onlyNumber = false;
3770
- // @HostBinding('attr.tabindex')
3771
- // private get tabindex() {
3772
- // return this.disabled ? null : 0;
3773
- // }
3774
4046
  this.textField = true;
3775
4047
  this.value = '';
3776
4048
  }
@@ -3780,13 +4052,6 @@ class TextFieldComponent {
3780
4052
  }
3781
4053
  this.input.nativeElement.focus();
3782
4054
  }
3783
- //
3784
- // @HostListener('focus') focus() {
3785
- // if (this.disabled) {
3786
- // return;
3787
- // }
3788
- // this.input.nativeElement.focus();
3789
- // }
3790
4055
  keyPress(event) {
3791
4056
  if (event.key === 'Enter' || event.keyCode === 13) {
3792
4057
  this.input.nativeElement.blur();
@@ -4816,17 +5081,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
4816
5081
  args: ['class.form-group-title']
4817
5082
  }] } });
4818
5083
 
5084
+ class HintModule {
5085
+ }
5086
+ HintModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5087
+ HintModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: HintModule, declarations: [HintDirective], imports: [CommonModule,
5088
+ DynamicComponentModule], exports: [HintDirective] });
5089
+ HintModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, imports: [CommonModule,
5090
+ DynamicComponentModule] });
5091
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, decorators: [{
5092
+ type: NgModule,
5093
+ args: [{
5094
+ declarations: [HintDirective],
5095
+ exports: [HintDirective],
5096
+ imports: [
5097
+ CommonModule,
5098
+ DynamicComponentModule
5099
+ ]
5100
+ }]
5101
+ }] });
5102
+
4819
5103
  class InputModule {
4820
5104
  }
4821
5105
  InputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4822
- 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] });
4823
- InputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule] });
5106
+ 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] });
5107
+ InputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule, HintModule] });
4824
5108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: InputModule, decorators: [{
4825
5109
  type: NgModule,
4826
5110
  args: [{
4827
5111
  declarations: [InputComponent, TextFieldComponent, FormGroupTitleComponent],
4828
5112
  exports: [InputComponent, TextFieldComponent, FormGroupTitleComponent],
4829
- imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule],
5113
+ imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule, HintModule],
4830
5114
  }]
4831
5115
  }] });
4832
5116
 
@@ -5434,16 +5718,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
5434
5718
  class CurrentModal {
5435
5719
  }
5436
5720
 
5437
- class DynamicData {
5438
- constructor(value) {
5439
- for (const key in value) {
5440
- if (value.hasOwnProperty(key)) {
5441
- this[key] = value[key];
5442
- }
5443
- }
5444
- }
5445
- }
5446
-
5447
5721
  class DialogComponent {
5448
5722
  constructor(modal, data) {
5449
5723
  this.modal = modal;
@@ -5507,147 +5781,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
5507
5781
  ToolbarModule,
5508
5782
  ButtonModule,
5509
5783
  TranslocoModule,
5510
- IconModule,
5511
- ],
5512
- providers: [
5513
- {
5514
- provide: TRANSLOCO_SCOPE,
5515
- useValue: { scope: 'common', alias: 'common' },
5516
- multi: true,
5517
- },
5518
- ],
5519
- }]
5520
- }] });
5521
-
5522
- class ModalInstance {
5523
- constructor(_window, _content) {
5524
- this._window = _window;
5525
- this._content = _content;
5526
- this._onClose = new Subject();
5527
- this.close = (event) => {
5528
- this._onClose.next(event);
5529
- this._onClose.complete();
5530
- this.destroy();
5531
- };
5532
- this.onClose = this._onClose.asObservable();
5533
- if (this._window && this._window.instance) {
5534
- this._window.instance.closeEvent.subscribe((event) => {
5535
- this.close(event);
5536
- });
5537
- }
5538
- }
5539
- get window() {
5540
- return this._window;
5541
- }
5542
- get component() {
5543
- return this._content.componentRef ? this._content.componentRef : null;
5544
- }
5545
- destroy() {
5546
- this._window.destroy();
5547
- if (this._content && this._content.viewRef) {
5548
- setTimeout(() => {
5549
- this._content.viewRef.destroy();
5550
- }, 150);
5551
- }
5552
- }
5553
- }
5554
-
5555
- class TetaContentRef {
5556
- constructor(nodes, viewRef, componentRef) {
5557
- this.nodes = nodes;
5558
- this.viewRef = viewRef;
5559
- this.componentRef = componentRef;
5560
- }
5561
- }
5562
-
5563
- class DynamicComponentService {
5564
- constructor(_componentFactoryResolver, _rendererFactory, _appRef) {
5565
- this._componentFactoryResolver = _componentFactoryResolver;
5566
- this._rendererFactory = _rendererFactory;
5567
- this._appRef = _appRef;
5568
- this._renderer = this._rendererFactory.createRenderer(null, null);
5569
- }
5570
- createComponent(component, contentRef, injector, container) {
5571
- const componentRef = this._componentFactoryResolver
5572
- .resolveComponentFactory(component)
5573
- .create(injector, contentRef.nodes);
5574
- this._appRef.attachView(componentRef.hostView);
5575
- container.appendChild(componentRef.location.nativeElement);
5576
- return componentRef;
5577
- }
5578
- createContent(content, injector, context) {
5579
- if (content === null || content === undefined) {
5580
- throw new Error('Content is undefined');
5581
- }
5582
- if (typeof content === 'string') {
5583
- return this.fromString(content);
5584
- }
5585
- else if (content instanceof TemplateRef) {
5586
- return this.fromTemplate(content, context);
5587
- }
5588
- else {
5589
- return this.fromComponent(content, injector, context);
5590
- }
5591
- }
5592
- destroy(component, content, container) {
5593
- if (component) {
5594
- this._appRef.detachView(component.hostView);
5595
- component.destroy();
5596
- }
5597
- if (content && content.viewRef) {
5598
- content.viewRef.destroy();
5599
- }
5600
- content = null;
5601
- }
5602
- getContext(content, context) {
5603
- if (content instanceof TemplateRef) {
5604
- return {
5605
- $implicit: context,
5606
- data: context,
5607
- };
5784
+ IconModule,
5785
+ ],
5786
+ providers: [
5787
+ {
5788
+ provide: TRANSLOCO_SCOPE,
5789
+ useValue: { scope: 'common', alias: 'common' },
5790
+ multi: true,
5791
+ },
5792
+ ],
5793
+ }]
5794
+ }] });
5795
+
5796
+ class ModalInstance {
5797
+ constructor(_window, _content) {
5798
+ this._window = _window;
5799
+ this._content = _content;
5800
+ this._onClose = new Subject();
5801
+ this.close = (event) => {
5802
+ this._onClose.next(event);
5803
+ this._onClose.complete();
5804
+ this.destroy();
5805
+ };
5806
+ this.onClose = this._onClose.asObservable();
5807
+ if (this._window && this._window.instance) {
5808
+ this._window.instance.closeEvent.subscribe((event) => {
5809
+ this.close(event);
5810
+ });
5608
5811
  }
5609
- return context;
5610
- }
5611
- getInjector(data, parent) {
5612
- return Injector.create({
5613
- providers: [
5614
- {
5615
- provide: DynamicData,
5616
- useValue: data,
5617
- },
5618
- ],
5619
- parent,
5620
- });
5621
5812
  }
5622
- fromString(content) {
5623
- return new TetaContentRef([[this._renderer.createText(`${content}`)]]);
5813
+ get window() {
5814
+ return this._window;
5624
5815
  }
5625
- fromTemplate(content, context) {
5626
- const viewRef = content.createEmbeddedView(context);
5627
- this._appRef.attachView(viewRef);
5628
- return new TetaContentRef([viewRef.rootNodes], viewRef);
5816
+ get component() {
5817
+ return this._content.componentRef ? this._content.componentRef : null;
5629
5818
  }
5630
- fromComponent(content, injector, context) {
5631
- const componentFactory = this._componentFactoryResolver.resolveComponentFactory(content);
5632
- const componentRef = componentFactory.create(injector);
5633
- for (const key in context) {
5634
- if (context.hasOwnProperty(key)) {
5635
- componentRef.instance[key] = context[key];
5636
- }
5819
+ destroy() {
5820
+ this._window.destroy();
5821
+ if (this._content && this._content.viewRef) {
5822
+ setTimeout(() => {
5823
+ this._content.viewRef.destroy();
5824
+ }, 150);
5637
5825
  }
5638
- const componentNativeEl = componentRef.location.nativeElement;
5639
- this._appRef.attachView(componentRef.hostView);
5640
- return new TetaContentRef([[componentNativeEl]], componentRef.hostView, componentRef);
5641
5826
  }
5642
5827
  }
5643
- 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 });
5644
- DynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, providedIn: 'root' });
5645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicComponentService, decorators: [{
5646
- type: Injectable,
5647
- args: [{
5648
- providedIn: 'root',
5649
- }]
5650
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: i0.ApplicationRef }]; } });
5651
5828
 
5652
5829
  class ModalService {
5653
5830
  constructor(_document, _injector, _factory) {
@@ -6226,169 +6403,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
6226
6403
  args: ['click']
6227
6404
  }] } });
6228
6405
 
6229
- class DynamicContentBaseDirective {
6230
- constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
6231
- this._document = _document;
6232
- this._elementRef = _elementRef;
6233
- this._service = _service;
6234
- this._injector = _injector;
6235
- this._zone = _zone;
6236
- this._cdr = _cdr;
6237
- this.align = Align.left;
6238
- this.verticalAlign = VerticalAlign.bottom;
6239
- this.openChange = new EventEmitter();
6240
- this._alive = true;
6241
- this._open = false;
6242
- this._zone.onStable
6243
- .pipe(takeWhile((_) => this._alive), filter((_) => this._open))
6244
- .subscribe((_) => {
6245
- this.setPosition();
6246
- });
6247
- }
6248
- set open(open) {
6249
- this._open = open;
6250
- if (this._open) {
6251
- this.createContentRef();
6252
- }
6253
- else {
6254
- this.destroyContentRef();
6255
- }
6256
- }
6257
- ngOnDestroy() {
6258
- this._alive = false;
6259
- this.destroyContentRef();
6260
- }
6261
- ngOnInit() {
6262
- }
6263
- createContentRef(className) {
6264
- if (!this._componentRef) {
6265
- this._open = true;
6266
- const injector = this._service.getInjector(this.data, this._injector);
6267
- const context = this._service.getContext(this._dynamicContent, this.data);
6268
- this._content = this._service.createContent(this._dynamicContent, this._injector, context);
6269
- this._componentRef = this._service.createComponent(PopupContentComponent, this._content, injector, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
6270
- if (className) {
6271
- this._componentRef.instance.addClass(className);
6272
- }
6273
- }
6274
- return this._componentRef;
6275
- }
6276
- destroyContentRef() {
6277
- this._open = false;
6278
- this._service.destroy(this._componentRef, this._content, this.appendToBody ? this._document.body : this._elementRef.nativeElement);
6279
- this._componentRef = null;
6280
- }
6281
- }
6282
- DynamicContentBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
6283
- 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 });
6284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DynamicContentBaseDirective, decorators: [{
6285
- type: Directive
6286
- }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
6287
- type: Input
6288
- }], className: [{
6289
- type: Input
6290
- }], align: [{
6291
- type: Input
6292
- }], verticalAlign: [{
6293
- type: Input
6294
- }], appendToBody: [{
6295
- type: Input
6296
- }], open: [{
6297
- type: Input
6298
- }], openChange: [{
6299
- type: Output
6300
- }] } });
6301
-
6302
- class HintDirective extends DynamicContentBaseDirective {
6303
- constructor(_document, _elementRef, _service, _injector, _zone, _cdr) {
6304
- super(_document, _elementRef, _service, _injector, _zone, _cdr);
6305
- this._document = _document;
6306
- this._elementRef = _elementRef;
6307
- this._service = _service;
6308
- this._injector = _injector;
6309
- this._zone = _zone;
6310
- this._cdr = _cdr;
6311
- this.align = Align.center;
6312
- this.verticalAlign = VerticalAlign.top;
6313
- this.delay = 300;
6314
- }
6315
- get _dynamicContent() {
6316
- return this.tetaHint;
6317
- }
6318
- mouseenter() {
6319
- clearTimeout(this._timeout);
6320
- this._timeout = setTimeout(() => {
6321
- this.createHint();
6322
- }, this.delay);
6323
- }
6324
- mouseleave() {
6325
- clearTimeout(this._timeout);
6326
- if (this._open && this._componentRef) {
6327
- this._timeout = setTimeout(() => {
6328
- this.destroyContentRef();
6329
- }, this.delay);
6330
- }
6331
- }
6332
- click(event) {
6333
- if (this._open &&
6334
- this._componentRef &&
6335
- DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {
6336
- event.stopPropagation();
6337
- }
6338
- }
6339
- setPosition() {
6340
- if (this._componentRef && this._open) {
6341
- if (!this._componentRect) {
6342
- this._componentRect =
6343
- this._componentRef.location.nativeElement.getBoundingClientRect();
6344
- }
6345
- const position = PositionUtil.getPosition(this._elementRef.nativeElement.getBoundingClientRect(), this._componentRect, this.align, this.verticalAlign, 0, 4);
6346
- PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);
6347
- }
6348
- }
6349
- createHint() {
6350
- if (!this._dynamicContent) {
6351
- return;
6352
- }
6353
- this._componentRef = this.createContentRef();
6354
- this._componentRef.instance.className = [
6355
- ...ArrayUtil.asArray(this.className),
6356
- 'hint',
6357
- ];
6358
- }
6359
- ngOnDestroy() {
6360
- super.ngOnDestroy();
6361
- }
6362
- }
6363
- 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 });
6364
- 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 });
6365
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintDirective, decorators: [{
6366
- type: Directive,
6367
- args: [{
6368
- selector: '[tetaHint]',
6369
- }]
6370
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
6371
- type: Inject,
6372
- args: [DOCUMENT]
6373
- }] }, { type: i0.ElementRef }, { type: DynamicComponentService }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tetaHint: [{
6374
- type: Input
6375
- }], align: [{
6376
- type: Input
6377
- }], verticalAlign: [{
6378
- type: Input
6379
- }], delay: [{
6380
- type: Input
6381
- }], mouseenter: [{
6382
- type: HostListener,
6383
- args: ['mouseenter', ['$event']]
6384
- }], mouseleave: [{
6385
- type: HostListener,
6386
- args: ['mouseleave', ['$event']]
6387
- }], click: [{
6388
- type: HostListener,
6389
- args: ['click', ['$event']]
6390
- }] } });
6391
-
6392
6406
  class PropertyGridItemComponent {
6393
6407
  constructor(_transloco) {
6394
6408
  this._transloco = _transloco;
@@ -6459,10 +6473,10 @@ class PropertyGridItemComponent {
6459
6473
  }
6460
6474
  }
6461
6475
  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 });
6462
- 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 *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"] }] });
6476
+ 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"] }] });
6463
6477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PropertyGridItemComponent, decorators: [{
6464
6478
  type: Component,
6465
- 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 *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" }]
6479
+ 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" }]
6466
6480
  }], ctorParameters: function () { return [{ type: i1$1.TranslocoService }]; }, propDecorators: { column: [{
6467
6481
  type: Input
6468
6482
  }], hideNonEditable: [{
@@ -6656,25 +6670,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
6656
6670
  }]
6657
6671
  }] });
6658
6672
 
6659
- class HintModule {
6660
- }
6661
- HintModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6662
- HintModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: HintModule, declarations: [HintDirective], imports: [CommonModule,
6663
- DynamicComponentModule], exports: [HintDirective] });
6664
- HintModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, imports: [CommonModule,
6665
- DynamicComponentModule] });
6666
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HintModule, decorators: [{
6667
- type: NgModule,
6668
- args: [{
6669
- declarations: [HintDirective],
6670
- exports: [HintDirective],
6671
- imports: [
6672
- CommonModule,
6673
- DynamicComponentModule
6674
- ]
6675
- }]
6676
- }] });
6677
-
6678
6673
  class PropertyGridModule {
6679
6674
  }
6680
6675
  PropertyGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PropertyGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -8158,7 +8153,7 @@ class DefaultHeadCellComponent extends HeadCellComponentBase {
8158
8153
  }
8159
8154
  }
8160
8155
  DefaultHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DefaultHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
8161
- 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 });
8156
+ 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 });
8162
8157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DefaultHeadCellComponent, decorators: [{
8163
8158
  type: Component,
8164
8159
  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"] }]
@@ -8340,10 +8335,10 @@ class TabsComponent {
8340
8335
  }
8341
8336
  }
8342
8337
  TabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8343
- 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"] }] });
8338
+ 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"] }] });
8344
8339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TabsComponent, decorators: [{
8345
8340
  type: Component,
8346
- 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" }]
8341
+ 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" }]
8347
8342
  }], ctorParameters: function () { return []; }, propDecorators: { classTabs: [{
8348
8343
  type: HostBinding,
8349
8344
  args: ['class.tabs']
@@ -8977,10 +8972,10 @@ class HeadCellComponent {
8977
8972
  }
8978
8973
  }
8979
8974
  HeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HeadCellComponent, deps: [{ token: TableService }, { token: i0.ApplicationRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
8980
- HeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: HeadCellComponent, selector: "teta-head-cell", inputs: { column: "column", showHeadCellMenu: "showHeadCellMenu", data: "data" }, host: { listeners: { "dragstart": "dragstart($event)", "dragenter": "dragenter($event)", "dragover": "allowDrop($event)", "dragleave": "dragleave($event)", "dragend": "dragend($event)", "drop": "drop($event)" }, properties: { "class.table-head__cell_active": "this.dropDownOpen" } }, viewQueries: [{ propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }, { propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div draggable=\"true\" class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.bottom\"\n [appendToBody]=\"false\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.left\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead class=\"table-head__cell__wrapper\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n <teta-icon *ngIf=\"iconName | async as icon\"\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n </div>\n <teta-head-cell-dropdown tetaDropdownContent\n *ngIf=\"showHeadCellMenu\"\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n </teta-dropdown>\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n *ngIf=\"showDrag\"></div>\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: ResizeDragDirective, selector: "[tetaResizeDrag]", inputs: ["tetaResizeDrag"], outputs: ["resizeStart", "resizeProcess", "resizeEnd"] }, { kind: "component", type: HeadCellHostComponent, selector: "teta-head-cell-host", inputs: ["column", "columns", "data"] }, { kind: "component", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: ["columns", "column", "state", "data", "tabTemplates", "dropDownOpen"], outputs: ["dropDownOpenChange"] }, { kind: "component", type: MainDropdownTabComponent, selector: "teta-main-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8975
+ HeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: HeadCellComponent, selector: "teta-head-cell", inputs: { column: "column", showHeadCellMenu: "showHeadCellMenu", data: "data" }, host: { listeners: { "dragenter": "dragenter($event)", "dragover": "allowDrop($event)", "dragleave": "dragleave($event)", "dragend": "dragend($event)", "drop": "drop($event)" }, properties: { "class.table-head__cell_active": "this.dropDownOpen" } }, viewQueries: [{ propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }, { propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.bottom\"\n [appendToBody]=\"false\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.left\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n <teta-icon *ngIf=\"iconName | async as icon\"\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n </div>\n <teta-head-cell-dropdown tetaDropdownContent\n *ngIf=\"showHeadCellMenu\"\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n </teta-dropdown>\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n *ngIf=\"showDrag\"></div>\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: ResizeDragDirective, selector: "[tetaResizeDrag]", inputs: ["tetaResizeDrag"], outputs: ["resizeStart", "resizeProcess", "resizeEnd"] }, { kind: "component", type: HeadCellHostComponent, selector: "teta-head-cell-host", inputs: ["column", "columns", "data"] }, { kind: "component", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: ["columns", "column", "state", "data", "tabTemplates", "dropDownOpen"], outputs: ["dropDownOpenChange"] }, { kind: "component", type: MainDropdownTabComponent, selector: "teta-main-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8981
8976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: HeadCellComponent, decorators: [{
8982
8977
  type: Component,
8983
- args: [{ selector: 'teta-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div draggable=\"true\" class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.bottom\"\n [appendToBody]=\"false\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.left\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead class=\"table-head__cell__wrapper\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n <teta-icon *ngIf=\"iconName | async as icon\"\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n </div>\n <teta-head-cell-dropdown tetaDropdownContent\n *ngIf=\"showHeadCellMenu\"\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n </teta-dropdown>\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n *ngIf=\"showDrag\"></div>\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"] }]
8978
+ args: [{ selector: 'teta-head-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.bottom\"\n [appendToBody]=\"false\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.left\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n <teta-icon *ngIf=\"iconName | async as icon\"\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n </div>\n <teta-head-cell-dropdown tetaDropdownContent\n *ngIf=\"showHeadCellMenu\"\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n </teta-dropdown>\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n *ngIf=\"showDrag\"></div>\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"] }]
8984
8979
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ApplicationRef }, { type: i0.ElementRef }]; }, propDecorators: { column: [{
8985
8980
  type: Input
8986
8981
  }], showHeadCellMenu: [{
@@ -8999,9 +8994,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
8999
8994
  }], columnsTemplate: [{
9000
8995
  type: ViewChild,
9001
8996
  args: ['columnsTemplate', { static: true }]
9002
- }], dragstart: [{
9003
- type: HostListener,
9004
- args: ['dragstart', ['$event']]
9005
8997
  }], dragenter: [{
9006
8998
  type: HostListener,
9007
8999
  args: ['dragenter', ['$event']]
@@ -9479,10 +9471,10 @@ class StringCellComponent extends CellComponentBase {
9479
9471
  }
9480
9472
  }
9481
9473
  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 });
9482
- 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 });
9474
+ 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 });
9483
9475
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: StringCellComponent, decorators: [{
9484
9476
  type: Component,
9485
- 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" }]
9477
+ 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" }]
9486
9478
  }], ctorParameters: function () { return [{ type: TableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { column: [{
9487
9479
  type: Input
9488
9480
  }], row: [{