@morozeckiy/dd-lib 0.7.64 → 0.7.78

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 { EventEmitter, Output, ViewChild, Input, Component, Injectable, InjectionToken, Inject, Pipe, Directive, HostListener, TemplateRef, ChangeDetectionStrategy, Injector, forwardRef, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, Optional, ElementRef, Host, SkipSelf, signal, input } from '@angular/core';
2
+ import { EventEmitter, Output, ViewChild, Input, Component, Injectable, InjectionToken, Inject, Pipe, Directive, HostListener, numberAttribute, TemplateRef, ChangeDetectionStrategy, Injector, forwardRef, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, Optional, ElementRef, Host, SkipSelf, signal, input } from '@angular/core';
3
3
  import * as i1$4 from '@angular/forms';
4
4
  import { Validators, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { BehaviorSubject, Subject, throwError, of, fromEvent, combineLatest } from 'rxjs';
@@ -526,19 +526,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
526
526
  }]
527
527
  }] });
528
528
  class FilterByKeyPipe {
529
- transform(arr, fn) {
530
- if (!arr?.length) {
531
- return arr;
532
- }
533
- if (typeof fn === 'function') {
534
- return arr.filter(fn);
535
- }
536
- else if (fn) {
537
- return arr.filter((item) => item === fn);
538
- }
539
- else {
540
- return arr;
529
+ transform(arr, key) {
530
+ if (!arr?.length || !key)
531
+ return arr || [];
532
+ if (typeof key === 'function') {
533
+ return arr.filter(key);
541
534
  }
535
+ return arr.filter(item => item[key] !== false);
542
536
  }
543
537
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FilterByKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
544
538
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.2", ngImport: i0, type: FilterByKeyPipe, isStandalone: true, name: "filterByKey" }); }
@@ -618,35 +612,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
618
612
  }]
619
613
  }] });
620
614
 
621
- class FilterTabsPipe {
622
- transform(arr, tab) {
623
- if (arr) {
624
- return arr.filter(v => {
625
- if (tab === 0) {
626
- return [1, 2].indexOf(v.status.id) !== -1;
627
- }
628
- if (tab === 1) {
629
- return [3, 4].indexOf(v.status.id) !== -1;
630
- }
631
- if (tab === 2) {
632
- return [6].indexOf(v.status.id) !== -1;
633
- }
634
- return arr;
635
- });
636
- }
637
- return [];
638
- }
639
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FilterTabsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
640
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.2", ngImport: i0, type: FilterTabsPipe, isStandalone: true, name: "filterTabs" }); }
641
- }
642
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FilterTabsPipe, decorators: [{
643
- type: Pipe,
644
- args: [{
645
- name: 'filterTabs',
646
- standalone: true,
647
- }]
648
- }] });
649
-
650
615
  class AutoHeightDirective {
651
616
  constructor(el, rdr) {
652
617
  this.el = el;
@@ -836,14 +801,20 @@ class ResizeTextareaDirective {
836
801
  constructor(el, rdr) {
837
802
  this.el = el;
838
803
  this.rdr = rdr;
804
+ this.ddResizeTextarea = 150;
839
805
  }
840
806
  onKeyup() {
841
807
  const h = this.el.nativeElement.scrollHeight;
842
- this.rdr.setStyle(this.el.nativeElement, 'max-height', h + 'px');
843
- this.rdr.setStyle(this.el.nativeElement, 'height', h + 'px');
808
+ if (h < this.ddResizeTextarea) {
809
+ this.rdr.setStyle(this.el.nativeElement, 'max-height', h + 'px');
810
+ this.rdr.setStyle(this.el.nativeElement, 'height', h + 'px');
811
+ }
812
+ else if (h >= this.ddResizeTextarea) {
813
+ this.rdr.setStyle(this.el.nativeElement, 'overflow', 'auto');
814
+ }
844
815
  }
845
816
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ResizeTextareaDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
846
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.2", type: ResizeTextareaDirective, isStandalone: true, selector: "[ddResizeTextarea]", host: { listeners: { "input": "onKeyup($event)" } }, ngImport: i0 }); }
817
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.2", type: ResizeTextareaDirective, isStandalone: true, selector: "[ddResizeTextarea]", inputs: { ddResizeTextarea: ["ddResizeTextarea", "ddResizeTextarea", numberAttribute] }, host: { listeners: { "input": "onKeyup($event)" } }, ngImport: i0 }); }
847
818
  }
848
819
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ResizeTextareaDirective, decorators: [{
849
820
  type: Directive,
@@ -851,7 +822,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
851
822
  selector: '[ddResizeTextarea]',
852
823
  standalone: true,
853
824
  }]
854
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { onKeyup: [{
825
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { ddResizeTextarea: [{
826
+ type: Input,
827
+ args: [{ transform: numberAttribute }]
828
+ }], onKeyup: [{
855
829
  type: HostListener,
856
830
  args: ['input', ['$event']]
857
831
  }] } });
@@ -1753,11 +1727,11 @@ class LibLoaderComponent {
1753
1727
  this.size = 'standard';
1754
1728
  }
1755
1729
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1756
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.2", type: LibLoaderComponent, isStandalone: true, selector: "dd-lib-loader", inputs: { color: ["color", "color", (value) => value ? value : '#07b700'], size: "size" }, ngImport: i0, template: "<div [class.big]=\"size === 'big'\" [class.giant]=\"size === 'giant'\" class=\"loader\">\n <svg fill=\"none\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_728_22764)\">\n <path\n [attr.stroke]=\"color\"\n d=\"M12 6V3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M6 12H3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M7.74961 7.74961L5.59961 5.59961\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\" />\n </g>\n <defs>\n <clipPath id=\"clip0_728_22764\">\n <rect fill=\"white\" height=\"24\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n</div>\n", styles: [":host{display:flex;align-items:center;width:100%;justify-content:center;overflow:hidden;z-index:999}.loader{width:24px;height:24px}.loader svg{animation:rotate 1.5s linear infinite}.loader.big{zoom:2}.loader.giant{zoom:4}@keyframes rotate{to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1730
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.2", type: LibLoaderComponent, isStandalone: true, selector: "dd-lib-loader", inputs: { color: ["color", "color", (value) => value ? value : '#07b700'], size: "size" }, ngImport: i0, template: "<div [class.big]=\"size === 'big'\" [class.giant]=\"size === 'giant'\" class=\"loader\">\n <svg fill=\"none\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_728_22764)\">\n <path\n [attr.stroke]=\"color\"\n d=\"M12 6V3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\"\n class=\"line line-1\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M6 12H3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n class=\"line line-2\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M7.74961 7.74961L5.59961 5.59961\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n class=\"line line-3\" />\n </g>\n <defs>\n <clipPath id=\"clip0_728_22764\">\n <rect fill=\"white\" height=\"24\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n</div>\n", styles: [":host{display:flex;align-items:center;width:100%;justify-content:center;overflow:hidden;z-index:999}.loader{width:24px;height:24px}.loader svg{animation:rotate 2.4s linear infinite}.loader svg .line{opacity:1;transform-origin:center;animation:linePulse .8s ease-in-out infinite}.loader svg .line-1{animation-delay:0s}.loader svg .line-2{animation-delay:.2s}.loader svg .line-3{animation-delay:.4s}.loader.big{zoom:2}.loader.giant{zoom:4}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes linePulse{0%,to{opacity:.3;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1757
1731
  }
1758
1732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibLoaderComponent, decorators: [{
1759
1733
  type: Component,
1760
- args: [{ selector: 'dd-lib-loader', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class.big]=\"size === 'big'\" [class.giant]=\"size === 'giant'\" class=\"loader\">\n <svg fill=\"none\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_728_22764)\">\n <path\n [attr.stroke]=\"color\"\n d=\"M12 6V3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M6 12H3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M7.74961 7.74961L5.59961 5.59961\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\" />\n </g>\n <defs>\n <clipPath id=\"clip0_728_22764\">\n <rect fill=\"white\" height=\"24\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n</div>\n", styles: [":host{display:flex;align-items:center;width:100%;justify-content:center;overflow:hidden;z-index:999}.loader{width:24px;height:24px}.loader svg{animation:rotate 1.5s linear infinite}.loader.big{zoom:2}.loader.giant{zoom:4}@keyframes rotate{to{transform:rotate(360deg)}}\n"] }]
1734
+ args: [{ selector: 'dd-lib-loader', standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class.big]=\"size === 'big'\" [class.giant]=\"size === 'giant'\" class=\"loader\">\n <svg fill=\"none\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_728_22764)\">\n <path\n [attr.stroke]=\"color\"\n d=\"M12 6V3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\"\n class=\"line line-1\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M6 12H3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n class=\"line line-2\" />\n <path\n [attr.stroke]=\"color\"\n d=\"M7.74961 7.74961L5.59961 5.59961\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n class=\"line line-3\" />\n </g>\n <defs>\n <clipPath id=\"clip0_728_22764\">\n <rect fill=\"white\" height=\"24\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n</div>\n", styles: [":host{display:flex;align-items:center;width:100%;justify-content:center;overflow:hidden;z-index:999}.loader{width:24px;height:24px}.loader svg{animation:rotate 2.4s linear infinite}.loader svg .line{opacity:1;transform-origin:center;animation:linePulse .8s ease-in-out infinite}.loader svg .line-1{animation-delay:0s}.loader svg .line-2{animation-delay:.2s}.loader svg .line-3{animation-delay:.4s}.loader.big{zoom:2}.loader.giant{zoom:4}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes linePulse{0%,to{opacity:.3;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}\n"] }]
1761
1735
  }], propDecorators: { color: [{
1762
1736
  type: Input,
1763
1737
  args: [{
@@ -1821,6 +1795,7 @@ class LibCommonInputTextComponent {
1821
1795
  return this._ID;
1822
1796
  }
1823
1797
  constructor(changeDetection) {
1798
+ this.placeholder = '';
1824
1799
  this.required = false;
1825
1800
  this.disabled = false;
1826
1801
  this.commitOnInput = true; // коммитить по input или по change
@@ -2031,79 +2006,17 @@ class LibButtonComponent extends LibCommonButtonComponent {
2031
2006
  }
2032
2007
  }
2033
2008
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2034
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibButtonComponent, isStandalone: true, selector: "dd-lib-button", inputs: { noPadding: "noPadding", loaderColor: "loaderColor" }, usesInheritance: true, ngImport: i0, template: "<div (click)=\"onClick($event)\" [ngStyle]=\"{width, height}\" class=\"button-container\">\r\n <button\r\n #btn\r\n [attr.tabIndex]=\"disabled ? -1 : 0\"\r\n [autofocus]=\"autofocus\"\r\n [class.active]=\"active\"\r\n [class.disabled]=\"disabled || showLoader\"\r\n [class.green]=\"btnColor === 'green'\"\r\n [class.loader]=\"showLoader\"\r\n [class.no-padding]=\"noPadding\"\r\n [class.red]=\"btnColor === 'red'\"\r\n [class.transparent]=\"btnColor === 'transparent'\"\r\n [class.white]=\"btnColor === 'white'\"\r\n [class.dark]=\"btnColor === 'dark'\"\r\n [disabled]=\"disabled || showLoader\"\r\n [ngStyle]=\"{width, height}\"\r\n [type]=\"buttonType\"\r\n class=\"lib-button\"\r\n role=\"button\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n @if (showLoader) {\r\n <dd-lib-loader class=\"pos-absolute\" [color]=\"loaderColor\"></dd-lib-loader>\r\n }\r\n\r\n </button>\r\n</div>\r\n\r\n<ng-template #content>\r\n <span #contentData><ng-content></ng-content></span>\r\n</ng-template>\r\n", styles: [".button-container{display:inline-block}.button-container button{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 32px;font-size:14px;line-height:24px;font-weight:var(--font-wheit-big);border-radius:12px;outline:none;cursor:pointer;white-space:nowrap;border:1px solid transparent;background-color:var(--btn-green-bgc);color:#fff}@media screen and (max-width: 840px){.button-container button{height:48px}}.button-container button:hover,.button-container button:focus{background-color:var(--btn-green-hover)}.button-container button:active,.button-container button.active{background-color:var(--btn-green-hover)}.button-container button.loader{min-width:100px}.button-container button.white{background-color:var(--btn-light-green-bgc);color:var(--btn-white-color)}.button-container button.white:hover{color:var(--btn-white-hover-color)}.button-container button.transparent{background-color:transparent;color:var(--btn-white-color);border-color:var(--gray-color-200)}.button-container button.transparent:hover{color:var(--btn-white-hover-color)}.button-container button.red{background-color:var(--btn-red-bgc);color:var(--btn-red-color)}.button-container button.red:hover{color:var(--btn-red-hover-color)}.button-container button.dark{background-color:var(--btn-dark-bgc);color:var(--btn-dark-color)}.button-container button.dark:hover{background-color:var(--btn-dark-hover-color)}.button-container button.no-padding{padding:0}.button-container button.disabled{color:var(--disabled-color);background-color:var(--btn-disabled-bgc);pointer-events:none;cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2009
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibButtonComponent, isStandalone: true, selector: "dd-lib-button", inputs: { noPadding: "noPadding", loaderColor: "loaderColor" }, usesInheritance: true, ngImport: i0, template: "<div (click)=\"onClick($event)\" [ngStyle]=\"{width, height}\" class=\"button-container\">\n <button\n #btn\n [attr.tabIndex]=\"disabled ? -1 : 0\"\n [autofocus]=\"autofocus\"\n [class.active]=\"active\"\n [class.disabled]=\"disabled || showLoader\"\n [class.green]=\"btnColor === 'green'\"\n [class.loader]=\"showLoader\"\n [class.no-padding]=\"noPadding\"\n [class.red]=\"btnColor === 'red'\"\n [class.transparent]=\"btnColor === 'transparent'\"\n [class.white]=\"btnColor === 'white'\"\n [class.dark]=\"btnColor === 'dark'\"\n [disabled]=\"disabled || showLoader\"\n [ngStyle]=\"{width, height}\"\n [type]=\"buttonType\"\n class=\"lib-button\"\n role=\"button\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if (showLoader) {\n <dd-lib-loader class=\"pos-absolute\" [color]=\"loaderColor\"></dd-lib-loader>\n }\n\n </button>\n</div>\n\n<ng-template #content>\n <span #contentData class=\"d-flex\"><ng-content></ng-content></span>\n</ng-template>\n", styles: [".button-container{display:inline-block}.button-container button{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 32px;font-size:14px;line-height:24px;font-weight:var(--font-wheit-big);border-radius:12px;outline:none;cursor:pointer;white-space:nowrap;border:1px solid transparent;background-color:var(--btn-green-bgc);color:#fff}@media screen and (max-width: 840px){.button-container button{height:48px}}.button-container button:hover,.button-container button:focus{background-color:var(--btn-green-hover)}.button-container button:active,.button-container button.active{background-color:var(--btn-green-hover)}.button-container button.loader{min-width:100px}.button-container button.white{background-color:var(--btn-light-green-bgc);color:var(--btn-white-color)}.button-container button.white:hover{color:var(--btn-white-hover-color)}.button-container button.transparent{background-color:transparent;color:var(--btn-white-color);border-color:var(--gray-color-200)}.button-container button.transparent:hover{color:var(--btn-white-hover-color)}.button-container button.red{background-color:var(--btn-red-bgc);color:var(--btn-red-color)}.button-container button.red:hover{color:var(--btn-red-hover-color)}.button-container button.dark{background-color:var(--btn-dark-bgc);color:var(--btn-dark-color)}.button-container button.dark:hover{background-color:var(--btn-dark-hover-color)}.button-container button.no-padding{padding:0}.button-container button.disabled{color:var(--disabled-color);background-color:var(--btn-disabled-bgc);pointer-events:none;cursor:default}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2035
2010
  }
2036
2011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibButtonComponent, decorators: [{
2037
2012
  type: Component,
2038
- args: [{ selector: 'dd-lib-button', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, LibLoaderComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], template: "<div (click)=\"onClick($event)\" [ngStyle]=\"{width, height}\" class=\"button-container\">\r\n <button\r\n #btn\r\n [attr.tabIndex]=\"disabled ? -1 : 0\"\r\n [autofocus]=\"autofocus\"\r\n [class.active]=\"active\"\r\n [class.disabled]=\"disabled || showLoader\"\r\n [class.green]=\"btnColor === 'green'\"\r\n [class.loader]=\"showLoader\"\r\n [class.no-padding]=\"noPadding\"\r\n [class.red]=\"btnColor === 'red'\"\r\n [class.transparent]=\"btnColor === 'transparent'\"\r\n [class.white]=\"btnColor === 'white'\"\r\n [class.dark]=\"btnColor === 'dark'\"\r\n [disabled]=\"disabled || showLoader\"\r\n [ngStyle]=\"{width, height}\"\r\n [type]=\"buttonType\"\r\n class=\"lib-button\"\r\n role=\"button\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n @if (showLoader) {\r\n <dd-lib-loader class=\"pos-absolute\" [color]=\"loaderColor\"></dd-lib-loader>\r\n }\r\n\r\n </button>\r\n</div>\r\n\r\n<ng-template #content>\r\n <span #contentData><ng-content></ng-content></span>\r\n</ng-template>\r\n", styles: [".button-container{display:inline-block}.button-container button{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 32px;font-size:14px;line-height:24px;font-weight:var(--font-wheit-big);border-radius:12px;outline:none;cursor:pointer;white-space:nowrap;border:1px solid transparent;background-color:var(--btn-green-bgc);color:#fff}@media screen and (max-width: 840px){.button-container button{height:48px}}.button-container button:hover,.button-container button:focus{background-color:var(--btn-green-hover)}.button-container button:active,.button-container button.active{background-color:var(--btn-green-hover)}.button-container button.loader{min-width:100px}.button-container button.white{background-color:var(--btn-light-green-bgc);color:var(--btn-white-color)}.button-container button.white:hover{color:var(--btn-white-hover-color)}.button-container button.transparent{background-color:transparent;color:var(--btn-white-color);border-color:var(--gray-color-200)}.button-container button.transparent:hover{color:var(--btn-white-hover-color)}.button-container button.red{background-color:var(--btn-red-bgc);color:var(--btn-red-color)}.button-container button.red:hover{color:var(--btn-red-hover-color)}.button-container button.dark{background-color:var(--btn-dark-bgc);color:var(--btn-dark-color)}.button-container button.dark:hover{background-color:var(--btn-dark-hover-color)}.button-container button.no-padding{padding:0}.button-container button.disabled{color:var(--disabled-color);background-color:var(--btn-disabled-bgc);pointer-events:none;cursor:default}\n"] }]
2013
+ args: [{ selector: 'dd-lib-button', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, LibLoaderComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], template: "<div (click)=\"onClick($event)\" [ngStyle]=\"{width, height}\" class=\"button-container\">\n <button\n #btn\n [attr.tabIndex]=\"disabled ? -1 : 0\"\n [autofocus]=\"autofocus\"\n [class.active]=\"active\"\n [class.disabled]=\"disabled || showLoader\"\n [class.green]=\"btnColor === 'green'\"\n [class.loader]=\"showLoader\"\n [class.no-padding]=\"noPadding\"\n [class.red]=\"btnColor === 'red'\"\n [class.transparent]=\"btnColor === 'transparent'\"\n [class.white]=\"btnColor === 'white'\"\n [class.dark]=\"btnColor === 'dark'\"\n [disabled]=\"disabled || showLoader\"\n [ngStyle]=\"{width, height}\"\n [type]=\"buttonType\"\n class=\"lib-button\"\n role=\"button\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n @if (showLoader) {\n <dd-lib-loader class=\"pos-absolute\" [color]=\"loaderColor\"></dd-lib-loader>\n }\n\n </button>\n</div>\n\n<ng-template #content>\n <span #contentData class=\"d-flex\"><ng-content></ng-content></span>\n</ng-template>\n", styles: [".button-container{display:inline-block}.button-container button{position:relative;display:flex;align-items:center;justify-content:center;height:40px;padding:0 32px;font-size:14px;line-height:24px;font-weight:var(--font-wheit-big);border-radius:12px;outline:none;cursor:pointer;white-space:nowrap;border:1px solid transparent;background-color:var(--btn-green-bgc);color:#fff}@media screen and (max-width: 840px){.button-container button{height:48px}}.button-container button:hover,.button-container button:focus{background-color:var(--btn-green-hover)}.button-container button:active,.button-container button.active{background-color:var(--btn-green-hover)}.button-container button.loader{min-width:100px}.button-container button.white{background-color:var(--btn-light-green-bgc);color:var(--btn-white-color)}.button-container button.white:hover{color:var(--btn-white-hover-color)}.button-container button.transparent{background-color:transparent;color:var(--btn-white-color);border-color:var(--gray-color-200)}.button-container button.transparent:hover{color:var(--btn-white-hover-color)}.button-container button.red{background-color:var(--btn-red-bgc);color:var(--btn-red-color)}.button-container button.red:hover{color:var(--btn-red-hover-color)}.button-container button.dark{background-color:var(--btn-dark-bgc);color:var(--btn-dark-color)}.button-container button.dark:hover{background-color:var(--btn-dark-hover-color)}.button-container button.no-padding{padding:0}.button-container button.disabled{color:var(--disabled-color);background-color:var(--btn-disabled-bgc);pointer-events:none;cursor:default}\n"] }]
2039
2014
  }], propDecorators: { noPadding: [{
2040
2015
  type: Input
2041
2016
  }], loaderColor: [{
2042
2017
  type: Input
2043
2018
  }] } });
2044
2019
 
2045
- class LibSvgIconComponent {
2046
- constructor(el, svgIconRegistry, document) {
2047
- this.el = el;
2048
- this.svgIconRegistry = svgIconRegistry;
2049
- this.document = document;
2050
- }
2051
- set icon(iconName) {
2052
- const svgData = this.svgIconRegistry.getIcon(iconName);
2053
- if (this.svgIcon) {
2054
- this.el.nativeElement.removeChild(this.svgIcon);
2055
- }
2056
- if (svgData) {
2057
- this.svgIcon = this.svgElementFromString(svgData);
2058
- this.el.nativeElement.appendChild(this.svgIcon);
2059
- }
2060
- }
2061
- ngOnInit() {
2062
- if (this.width) {
2063
- this.el.nativeElement.style.width = this.width;
2064
- if (this.svgIcon) {
2065
- this.svgIcon.style.setProperty('width', this.width, 'inherit');
2066
- }
2067
- }
2068
- if (this.height) {
2069
- this.el.nativeElement.style.height = this.height;
2070
- if (this.svgIcon) {
2071
- this.svgIcon.style.setProperty('height', this.height, 'inherit');
2072
- }
2073
- }
2074
- if (this.color) {
2075
- this.el.nativeElement.style.fill = this.color;
2076
- if (this.svgIcon) {
2077
- this.svgIcon.style.setProperty('stroke', this.color, 'important');
2078
- }
2079
- }
2080
- }
2081
- svgElementFromString(svgContent) {
2082
- const div = this.document.createElement('DIV');
2083
- div.innerHTML = svgContent;
2084
- return div.querySelector('svg') || this.document.createElementNS('http://www.w3.org/200/svg', 'path');
2085
- }
2086
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSvgIconComponent, deps: [{ token: i0.ElementRef }, { token: SvgIconsService }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2087
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: LibSvgIconComponent, isStandalone: true, selector: "dd-lib-svg-icon", inputs: { width: "width", height: "height", color: "color", icon: "icon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2088
- }
2089
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSvgIconComponent, decorators: [{
2090
- type: Component,
2091
- args: [{ selector: 'dd-lib-svg-icon', standalone: true, imports: [], template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-flex;align-items:center;justify-content:center}\n"] }]
2092
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SvgIconsService }, { type: undefined, decorators: [{
2093
- type: Optional
2094
- }, {
2095
- type: Inject,
2096
- args: [DOCUMENT]
2097
- }] }], propDecorators: { width: [{
2098
- type: Input
2099
- }], height: [{
2100
- type: Input
2101
- }], color: [{
2102
- type: Input
2103
- }], icon: [{
2104
- type: Input
2105
- }] } });
2106
-
2107
2020
  class LibSvgViewerComponent {
2108
2021
  constructor(http, elementRef) {
2109
2022
  this.http = http;
@@ -2201,11 +2114,11 @@ class LibSvgViewerComponent {
2201
2114
  });
2202
2115
  }
2203
2116
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSvgViewerComponent, deps: [{ token: i1.HttpClient }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
2204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: LibSvgViewerComponent, isStandalone: true, selector: "dd-lib-svg-viewer", inputs: { path: "path", pack: "pack", icon: "icon", width: "width", height: "height", color: "color", containerClass: "containerClass", colorRules: "colorRules" }, usesOnChanges: true, ngImport: i0, template: `<div #svgContainer class="svg-container"></div>`, isInline: true, styles: [":host{display:block}svg{width:100%;height:100%;display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: LibSvgViewerComponent, isStandalone: true, selector: "dd-lib-svg-viewer", inputs: { path: "path", pack: "pack", icon: "icon", width: "width", height: "height", color: "color", containerClass: "containerClass", colorRules: "colorRules" }, usesOnChanges: true, ngImport: i0, template: `<div #svgContainer class="svg-container"></div>`, isInline: true, styles: [":host{display:block}svg{width:100%;height:100%;display:block}.svg-container{display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2205
2118
  }
2206
2119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSvgViewerComponent, decorators: [{
2207
2120
  type: Component,
2208
- args: [{ selector: 'dd-lib-svg-viewer', imports: [], standalone: true, template: `<div #svgContainer class="svg-container"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}svg{width:100%;height:100%;display:block}\n"] }]
2121
+ args: [{ selector: 'dd-lib-svg-viewer', imports: [], standalone: true, template: `<div #svgContainer class="svg-container"></div>`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}svg{width:100%;height:100%;display:block}.svg-container{display:flex}\n"] }]
2209
2122
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.ElementRef }], propDecorators: { path: [{
2210
2123
  type: Input
2211
2124
  }], pack: [{
@@ -2225,14 +2138,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
2225
2138
  }] } });
2226
2139
 
2227
2140
  class LibAccordionComponent {
2141
+ constructor() {
2142
+ this.accordionPack = 'lib-svg';
2143
+ }
2228
2144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibAccordionComponent, isStandalone: true, selector: "dd-lib-accordion", inputs: { accTitle: "accTitle" }, ngImport: i0, template: "<div class=\"accordion\">\r\n <div (click)=\"showAccordionContent = !showAccordionContent\" class=\"accordion__header\">\r\n @if (accTitle) {\r\n <div [innerHTML]=\"accTitle\" class=\"accordion__title\"></div>\r\n }\r\n <div>\r\n <dd-lib-svg-viewer class=\"cup\" icon=\"{{ showAccordionContent ? 'minus' : 'plus' }}\"></dd-lib-svg-viewer>\r\n </div>\r\n </div>\r\n @if (showAccordionContent) {\r\n <div class=\"mt-8\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".accordion__header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.accordion__title{font-weight:500;font-size:20px;line-height:28px;color:var(--light-black-color)}@media screen and (max-width: 480px){.accordion__title{font-size:16px;line-height:24px}}\n"], dependencies: [{ kind: "component", type: LibSvgViewerComponent, selector: "dd-lib-svg-viewer", inputs: ["path", "pack", "icon", "width", "height", "color", "containerClass", "colorRules"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibAccordionComponent, isStandalone: true, selector: "dd-lib-accordion", inputs: { accTitle: "accTitle", accordionPack: "accordionPack" }, ngImport: i0, template: "<div class=\"accordion\">\n <div (click)=\"showAccordionContent = !showAccordionContent\" class=\"accordion__header\">\n @if (accTitle) {\n <div [innerHTML]=\"accTitle\" class=\"accordion__title\"></div>\n }\n <div>\n <dd-lib-svg-viewer [pack]=\"accordionPack\" class=\"cup\" icon=\"{{ showAccordionContent ? 'minus' : 'plus' }}\"></dd-lib-svg-viewer>\n </div>\n </div>\n @if (showAccordionContent) {\n <div class=\"mt-8\">\n <ng-content></ng-content>\n </div>\n }\n</div>\n", styles: [":host{display:block;min-width:100%}.accordion__header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.accordion__title{font-weight:500;font-size:20px;line-height:28px;color:var(--light-black-color)}@media screen and (max-width: 480px){.accordion__title{font-size:16px;line-height:24px}}\n"], dependencies: [{ kind: "component", type: LibSvgViewerComponent, selector: "dd-lib-svg-viewer", inputs: ["path", "pack", "icon", "width", "height", "color", "containerClass", "colorRules"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2230
2146
  }
2231
2147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibAccordionComponent, decorators: [{
2232
2148
  type: Component,
2233
- args: [{ selector: 'dd-lib-accordion', standalone: true, imports: [LibSvgIconComponent, LibSvgViewerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"accordion\">\r\n <div (click)=\"showAccordionContent = !showAccordionContent\" class=\"accordion__header\">\r\n @if (accTitle) {\r\n <div [innerHTML]=\"accTitle\" class=\"accordion__title\"></div>\r\n }\r\n <div>\r\n <dd-lib-svg-viewer class=\"cup\" icon=\"{{ showAccordionContent ? 'minus' : 'plus' }}\"></dd-lib-svg-viewer>\r\n </div>\r\n </div>\r\n @if (showAccordionContent) {\r\n <div class=\"mt-8\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".accordion__header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.accordion__title{font-weight:500;font-size:20px;line-height:28px;color:var(--light-black-color)}@media screen and (max-width: 480px){.accordion__title{font-size:16px;line-height:24px}}\n"] }]
2149
+ args: [{ selector: 'dd-lib-accordion', standalone: true, imports: [LibSvgViewerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"accordion\">\n <div (click)=\"showAccordionContent = !showAccordionContent\" class=\"accordion__header\">\n @if (accTitle) {\n <div [innerHTML]=\"accTitle\" class=\"accordion__title\"></div>\n }\n <div>\n <dd-lib-svg-viewer [pack]=\"accordionPack\" class=\"cup\" icon=\"{{ showAccordionContent ? 'minus' : 'plus' }}\"></dd-lib-svg-viewer>\n </div>\n </div>\n @if (showAccordionContent) {\n <div class=\"mt-8\">\n <ng-content></ng-content>\n </div>\n }\n</div>\n", styles: [":host{display:block;min-width:100%}.accordion__header{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.accordion__title{font-weight:500;font-size:20px;line-height:28px;color:var(--light-black-color)}@media screen and (max-width: 480px){.accordion__title{font-size:16px;line-height:24px}}\n"] }]
2234
2150
  }], propDecorators: { accTitle: [{
2235
2151
  type: Input
2152
+ }], accordionPack: [{
2153
+ type: Input
2154
+ }] } });
2155
+
2156
+ class LibSvgIconComponent {
2157
+ constructor(el, svgIconRegistry, document) {
2158
+ this.el = el;
2159
+ this.svgIconRegistry = svgIconRegistry;
2160
+ this.document = document;
2161
+ }
2162
+ set icon(iconName) {
2163
+ const svgData = this.svgIconRegistry.getIcon(iconName);
2164
+ if (this.svgIcon) {
2165
+ this.el.nativeElement.removeChild(this.svgIcon);
2166
+ }
2167
+ if (svgData) {
2168
+ this.svgIcon = this.svgElementFromString(svgData);
2169
+ this.el.nativeElement.appendChild(this.svgIcon);
2170
+ }
2171
+ }
2172
+ ngOnInit() {
2173
+ if (this.width) {
2174
+ this.el.nativeElement.style.width = this.width;
2175
+ if (this.svgIcon) {
2176
+ this.svgIcon.style.setProperty('width', this.width, 'inherit');
2177
+ }
2178
+ }
2179
+ if (this.height) {
2180
+ this.el.nativeElement.style.height = this.height;
2181
+ if (this.svgIcon) {
2182
+ this.svgIcon.style.setProperty('height', this.height, 'inherit');
2183
+ }
2184
+ }
2185
+ if (this.color) {
2186
+ this.el.nativeElement.style.fill = this.color;
2187
+ if (this.svgIcon) {
2188
+ this.svgIcon.style.setProperty('stroke', this.color, 'important');
2189
+ }
2190
+ }
2191
+ }
2192
+ svgElementFromString(svgContent) {
2193
+ const div = this.document.createElement('DIV');
2194
+ div.innerHTML = svgContent;
2195
+ return div.querySelector('svg') || this.document.createElementNS('http://www.w3.org/200/svg', 'path');
2196
+ }
2197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSvgIconComponent, deps: [{ token: i0.ElementRef }, { token: SvgIconsService }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: LibSvgIconComponent, isStandalone: true, selector: "dd-lib-svg-icon", inputs: { width: "width", height: "height", color: "color", icon: "icon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2199
+ }
2200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSvgIconComponent, decorators: [{
2201
+ type: Component,
2202
+ args: [{ selector: 'dd-lib-svg-icon', standalone: true, imports: [], template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline-flex;align-items:center;justify-content:center}\n"] }]
2203
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SvgIconsService }, { type: undefined, decorators: [{
2204
+ type: Optional
2205
+ }, {
2206
+ type: Inject,
2207
+ args: [DOCUMENT]
2208
+ }] }], propDecorators: { width: [{
2209
+ type: Input
2210
+ }], height: [{
2211
+ type: Input
2212
+ }], color: [{
2213
+ type: Input
2214
+ }], icon: [{
2215
+ type: Input
2236
2216
  }] } });
2237
2217
 
2238
2218
  class LibBackButtonComponent {
@@ -2795,14 +2775,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
2795
2775
  class LibCommentInputComponent extends LibCommonInputTextComponent {
2796
2776
  constructor(changeDetection) {
2797
2777
  super(changeDetection);
2778
+ this.sendComment = new EventEmitter();
2779
+ this.commentHeight = 150;
2780
+ }
2781
+ onClick(value) {
2782
+ if (!this.disabled) {
2783
+ this.sendComment.next(value);
2784
+ }
2798
2785
  }
2799
2786
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibCommentInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2800
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: LibCommentInputComponent, isStandalone: true, selector: "dd-lib-comment-input", usesInheritance: true, ngImport: i0, template: "<div class=\"lib-comment-textarea\">\n <textarea\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readOnly]=\"readOnly\"\n ddResizeTextarea\n type=\"text\"></textarea>\n <dd-lib-button [disabled]=\"disabled\" [noPadding]=\"true\" height=\"48px\" width=\"48px\">\n <svg fill=\"none\" height=\"28\" viewBox=\"0 0 24 22\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_429_4922)\">\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M10 14L21 3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M21.0001 3L14.5001 21C14.4562 21.0957 14.3858 21.1769 14.2971 21.2338C14.2085 21.2906 14.1054 21.3209 14.0001 21.3209C13.8948 21.3209 13.7917 21.2906 13.703 21.2338C13.6144 21.1769 13.5439 21.0957 13.5001 21L10.0001 14L3.00007 10.5C2.90433 10.4561 2.8232 10.3857 2.76632 10.2971C2.70944 10.2084 2.6792 10.1053 2.6792 10C2.6792 9.89468 2.70944 9.79158 2.76632 9.70295C2.8232 9.61431 2.90433 9.54387 3.00007 9.5L21.0001 3Z\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n </g>\n <defs>\n <clipPath id=\"clip0_429_4922\">\n <rect [attr.fill]=\"disabled ? '#8e9cbe' : 'white'\" height=\"28\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n </dd-lib-button>\n</div>\n", styles: [".lib-comment-textarea{position:relative;display:flex;align-items:center;flex-direction:row}.lib-comment-textarea textarea{margin-right:16px;width:100%;max-height:48px;padding:12px 16px;border-radius:12px;border:none;background-color:var(--gray-color-200);resize:none;box-sizing:inherit}.lib-comment-textarea textarea:disabled{background-color:var(--input-disable-input);pointer-events:none}.lib-comment-textarea textarea:disabled::placeholder{color:var(--disabled-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LibButtonComponent, selector: "dd-lib-button", inputs: ["noPadding", "loaderColor"] }, { kind: "directive", type: ResizeTextareaDirective, selector: "[ddResizeTextarea]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2787
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: LibCommentInputComponent, isStandalone: true, selector: "dd-lib-comment-input", outputs: { sendComment: "sendComment" }, usesInheritance: true, ngImport: i0, template: "<div class=\"lib-comment-textarea\">\n <textarea\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readOnly]=\"readOnly\"\n [ddResizeTextarea]=\"commentHeight\"\n type=\"text\"></textarea>\n <dd-lib-button [disabled]=\"disabled\" [noPadding]=\"true\" height=\"48px\" width=\"48px\" (click)=\"onClick(value)\">\n <svg fill=\"none\" height=\"28\" viewBox=\"0 0 24 22\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_429_4922)\">\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M10 14L21 3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M21.0001 3L14.5001 21C14.4562 21.0957 14.3858 21.1769 14.2971 21.2338C14.2085 21.2906 14.1054 21.3209 14.0001 21.3209C13.8948 21.3209 13.7917 21.2906 13.703 21.2338C13.6144 21.1769 13.5439 21.0957 13.5001 21L10.0001 14L3.00007 10.5C2.90433 10.4561 2.8232 10.3857 2.76632 10.2971C2.70944 10.2084 2.6792 10.1053 2.6792 10C2.6792 9.89468 2.70944 9.79158 2.76632 9.70295C2.8232 9.61431 2.90433 9.54387 3.00007 9.5L21.0001 3Z\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n </g>\n <defs>\n <clipPath id=\"clip0_429_4922\">\n <rect [attr.fill]=\"disabled ? '#8e9cbe' : 'white'\" height=\"28\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n </dd-lib-button>\n</div>\n", styles: [".lib-comment-textarea{position:relative;display:flex;align-items:center;flex-direction:row}.lib-comment-textarea textarea{margin-right:16px;width:100%;max-height:48px;padding:12px 16px;border-radius:12px;border:none;background-color:var(--gray-color-200);resize:none;box-sizing:inherit}.lib-comment-textarea textarea:disabled{background-color:var(--input-disable-input);pointer-events:none}.lib-comment-textarea textarea:disabled::placeholder{color:var(--disabled-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LibButtonComponent, selector: "dd-lib-button", inputs: ["noPadding", "loaderColor"] }, { kind: "directive", type: ResizeTextareaDirective, selector: "[ddResizeTextarea]", inputs: ["ddResizeTextarea"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2801
2788
  }
2802
2789
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibCommentInputComponent, decorators: [{
2803
2790
  type: Component,
2804
- args: [{ selector: 'dd-lib-comment-input', standalone: true, imports: [FormsModule, LibButtonComponent, ResizeTextareaDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"lib-comment-textarea\">\n <textarea\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readOnly]=\"readOnly\"\n ddResizeTextarea\n type=\"text\"></textarea>\n <dd-lib-button [disabled]=\"disabled\" [noPadding]=\"true\" height=\"48px\" width=\"48px\">\n <svg fill=\"none\" height=\"28\" viewBox=\"0 0 24 22\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_429_4922)\">\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M10 14L21 3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M21.0001 3L14.5001 21C14.4562 21.0957 14.3858 21.1769 14.2971 21.2338C14.2085 21.2906 14.1054 21.3209 14.0001 21.3209C13.8948 21.3209 13.7917 21.2906 13.703 21.2338C13.6144 21.1769 13.5439 21.0957 13.5001 21L10.0001 14L3.00007 10.5C2.90433 10.4561 2.8232 10.3857 2.76632 10.2971C2.70944 10.2084 2.6792 10.1053 2.6792 10C2.6792 9.89468 2.70944 9.79158 2.76632 9.70295C2.8232 9.61431 2.90433 9.54387 3.00007 9.5L21.0001 3Z\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n </g>\n <defs>\n <clipPath id=\"clip0_429_4922\">\n <rect [attr.fill]=\"disabled ? '#8e9cbe' : 'white'\" height=\"28\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n </dd-lib-button>\n</div>\n", styles: [".lib-comment-textarea{position:relative;display:flex;align-items:center;flex-direction:row}.lib-comment-textarea textarea{margin-right:16px;width:100%;max-height:48px;padding:12px 16px;border-radius:12px;border:none;background-color:var(--gray-color-200);resize:none;box-sizing:inherit}.lib-comment-textarea textarea:disabled{background-color:var(--input-disable-input);pointer-events:none}.lib-comment-textarea textarea:disabled::placeholder{color:var(--disabled-color)}\n"] }]
2805
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
2791
+ args: [{ selector: 'dd-lib-comment-input', standalone: true, imports: [FormsModule, LibButtonComponent, ResizeTextareaDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"lib-comment-textarea\">\n <textarea\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readOnly]=\"readOnly\"\n [ddResizeTextarea]=\"commentHeight\"\n type=\"text\"></textarea>\n <dd-lib-button [disabled]=\"disabled\" [noPadding]=\"true\" height=\"48px\" width=\"48px\" (click)=\"onClick(value)\">\n <svg fill=\"none\" height=\"28\" viewBox=\"0 0 24 22\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_429_4922)\">\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M10 14L21 3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n <path\n [attr.stroke]=\"disabled ? '#8e9cbe' : 'white'\"\n d=\"M21.0001 3L14.5001 21C14.4562 21.0957 14.3858 21.1769 14.2971 21.2338C14.2085 21.2906 14.1054 21.3209 14.0001 21.3209C13.8948 21.3209 13.7917 21.2906 13.703 21.2338C13.6144 21.1769 13.5439 21.0957 13.5001 21L10.0001 14L3.00007 10.5C2.90433 10.4561 2.8232 10.3857 2.76632 10.2971C2.70944 10.2084 2.6792 10.1053 2.6792 10C2.6792 9.89468 2.70944 9.79158 2.76632 9.70295C2.8232 9.61431 2.90433 9.54387 3.00007 9.5L21.0001 3Z\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"1.7\" />\n </g>\n <defs>\n <clipPath id=\"clip0_429_4922\">\n <rect [attr.fill]=\"disabled ? '#8e9cbe' : 'white'\" height=\"28\" width=\"24\" />\n </clipPath>\n </defs>\n </svg>\n </dd-lib-button>\n</div>\n", styles: [".lib-comment-textarea{position:relative;display:flex;align-items:center;flex-direction:row}.lib-comment-textarea textarea{margin-right:16px;width:100%;max-height:48px;padding:12px 16px;border-radius:12px;border:none;background-color:var(--gray-color-200);resize:none;box-sizing:inherit}.lib-comment-textarea textarea:disabled{background-color:var(--input-disable-input);pointer-events:none}.lib-comment-textarea textarea:disabled::placeholder{color:var(--disabled-color)}\n"] }]
2792
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { sendComment: [{
2793
+ type: Output
2794
+ }] } });
2806
2795
 
2807
2796
  class LibFileUploadComponent {
2808
2797
  constructor() {
@@ -2870,6 +2859,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
2870
2859
  type: Input
2871
2860
  }] } });
2872
2861
 
2862
+ /**
2863
+ * @deprecated использовать lib-file-loader
2864
+ */
2873
2865
  class LibImageLoaderComponent {
2874
2866
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibImageLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2875
2867
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibImageLoaderComponent, isStandalone: true, selector: "dd-lib-image-loader", ngImport: i0, template: "<div class=\"image-loader\">\r\n <div class=\"g-text mb-4\">\u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u0440\u0438\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0434\u043E 5 \u0444\u043E\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u0439</div>\r\n <div class=\"g-text-sm gray mb-16\">\u0422\u043E\u043B\u044C\u043A\u043E .png \u0438 .jpg \u0444\u0430\u0439\u043B\u044B. \u041E\u0431\u0449\u0438\u0439 \u043E\u0431\u044A\u0435\u043C \u043D\u0435 \u0434\u043E\u043B\u0436\u0435\u043D \u043F\u0440\u0435\u0432\u044B\u0448\u0430\u0442\u044C 5 \u043C\u0435\u0433\u0430\u0431\u0430\u0439\u0442</div>\r\n @if (images) {\r\n <div class=\"loaded-images d-flex mb-16\"></div>\r\n }\r\n <div>\r\n <dd-lib-button btnColor=\"white\">\r\n <div class=\"d-flex align-center\">\r\n <dd-lib-svg-icon icon=\"paperclip\"></dd-lib-svg-icon>\r\n <div class=\"ml-8\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u043E\u0442\u043E\u0433\u0440\u0430\u0444\u0438\u0438</div>\r\n </div>\r\n </dd-lib-button>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "component", type: LibButtonComponent, selector: "dd-lib-button", inputs: ["noPadding", "loaderColor"] }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -2890,6 +2882,7 @@ class LibInputComponent extends LibCommonInputTextComponent {
2890
2882
  this.suffix = '';
2891
2883
  this.shownMaskExpression = null;
2892
2884
  this.validation = false;
2885
+ this.showPass = false;
2893
2886
  }
2894
2887
  ngOnInit() {
2895
2888
  if (this.controlContainer && this.controlContainer.control && this.formControlName) {
@@ -2921,13 +2914,13 @@ class LibInputComponent extends LibCommonInputTextComponent {
2921
2914
  this.changeDetection.detectChanges();
2922
2915
  }
2923
2916
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibInputComponent, deps: [{ token: i0.DestroyRef }, { token: i0.ChangeDetectorRef }, { token: i1$4.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
2924
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibInputComponent, isStandalone: true, selector: "dd-lib-input", inputs: { showMaskTyped: "showMaskTyped", dropSpecialCharacters: "dropSpecialCharacters", prefix: "prefix", suffix: "suffix", shownMaskExpression: "shownMaskExpression", mask: "mask", validation: "validation", customPatterns: "customPatterns" }, providers: [
2917
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibInputComponent, isStandalone: true, selector: "dd-lib-input", inputs: { showMaskTyped: "showMaskTyped", dropSpecialCharacters: "dropSpecialCharacters", prefix: "prefix", suffix: "suffix", shownMaskExpression: "shownMaskExpression", mask: "mask", validation: "validation", customPatterns: "customPatterns", showPass: "showPass" }, providers: [
2925
2918
  {
2926
2919
  provide: NG_VALUE_ACCESSOR,
2927
2920
  useExisting: forwardRef(() => LibInputComponent),
2928
2921
  multi: true,
2929
2922
  },
2930
- ], viewQueries: [{ propertyName: "contentInput", first: true, predicate: ["input"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"lib-input\">\r\n <label [for]=\"id\" class=\"lib-input__title g-text-sm\">\r\n {{ label }}\r\n @if (required) {\r\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\r\n }\r\n </label>\r\n\r\n <input\r\n #input\r\n (blur)=\"handleBlur()\"\r\n (change)=\"handleChange()\"\r\n (focus)=\"handleFocus()\"\r\n (input)=\"handleInput($event)\"\r\n (keyup.enter)=\"forceChange()\"\r\n [showMaskTyped]=\"showMaskTyped\"\r\n [dropSpecialCharacters]=\"dropSpecialCharacters\"\r\n [shownMaskExpression]=\"shownMaskExpression\"\r\n [mask]=\"mask\"\r\n [validation]=\"validation\"\r\n [prefix]=\"prefix\"\r\n [suffix]=\"suffix\"\r\n [(ngModel)]=\"value\"\r\n [attr.autofocus]=\"autofocus\"\r\n [attr.autocomplete]=\"autocomplete === undefined ? null : autocomplete\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.max]=\"max\"\r\n [attr.min]=\"min\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.name]=\"name\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.tabIndex]=\"tabIndex\"\r\n [attr.type]=\"type || 'text'\"\r\n [class.focused]=\"focused\"\r\n [class.invalid]=\"showError\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"readOnly\"\r\n class=\"text-input\" />\r\n @if (errorTexts.length && showError) {\r\n @for (error of errorTexts; track error) {\r\n <div class=\"lib-input__error\">{{ error }}</div>\r\n }\r\n }\r\n @if (errorText && showSelfError && showError) {\r\n <div class=\"lib-input__error\">{{ errorText }}</div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.lib-input{position:relative}.lib-input input{width:100%;height:48px;padding:15px 16px;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative;color:var(--light-black-color)}.lib-input input:hover{border-color:var(--input-active-border-colort)}.lib-input input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-input input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-input input:disabled::placeholder{color:var(--input-placeholder)}.lib-input input.invalid,.lib-input input.invalid:hover{border-color:var(--input-error-border-color)}.lib-input input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-input__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-input__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-input .password-eye{position:absolute;right:16px;top:40px;cursor:pointer}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }] }); }
2923
+ ], viewQueries: [{ propertyName: "contentInput", first: true, predicate: ["input"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"lib-input\">\n @if (label) {\n <label [for]=\"id\" class=\"lib-input__title g-text-sm\">\n {{ label }}\n @if (required) {\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\n }\n </label>\n }\n <div class=\"pos-relative\">\n <input\n #input\n (blur)=\"handleBlur()\"\n (change)=\"handleChange()\"\n (focus)=\"handleFocus()\"\n (input)=\"handleInput($event)\"\n (keyup.enter)=\"forceChange()\"\n [showMaskTyped]=\"showMaskTyped\"\n [dropSpecialCharacters]=\"dropSpecialCharacters\"\n [shownMaskExpression]=\"shownMaskExpression\"\n [mask]=\"mask\"\n [validation]=\"validation\"\n [prefix]=\"prefix\"\n [suffix]=\"suffix\"\n [(ngModel)]=\"value\"\n [attr.autofocus]=\"autofocus\"\n [attr.autocomplete]=\"autocomplete === undefined ? null : autocomplete\"\n [attr.id]=\"id ? id : null\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.type]=\"showPass ? 'text' : (type || 'text')\"\n [class.focused]=\"focused\"\n [class.invalid]=\"showError\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n class=\"text-input\" />\n @if (type === 'password') {\n <dd-lib-svg-viewer (click)=\"showPass = !showPass\" [pack]=\"'lib-svg'\" class=\"password-eye\" icon=\"{{ showPass ? 'eye' : 'eye-off' }}\"></dd-lib-svg-viewer>\n }\n </div>\n\n @if (errorTexts.length && showError) {\n @for (error of errorTexts; track error) {\n <div class=\"lib-input__error\">{{ error }}</div>\n }\n }\n @if (errorText && showSelfError && showError) {\n <div class=\"lib-input__error\">{{ errorText }}</div>\n }\n</div>\n", styles: [":host{display:block}.lib-input{position:relative}.lib-input input{width:100%;height:48px;padding:15px 16px;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative;color:var(--light-black-color)}.lib-input input:hover{border-color:var(--input-active-border-colort)}.lib-input input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-input input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-input input:disabled::placeholder{color:var(--input-placeholder)}.lib-input input.invalid,.lib-input input.invalid:hover{border-color:var(--input-error-border-color)}.lib-input input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-input__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-input__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-input .password-eye{position:absolute;right:16px;top:12px;cursor:pointer}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }, { kind: "component", type: LibSvgViewerComponent, selector: "dd-lib-svg-viewer", inputs: ["path", "pack", "icon", "width", "height", "color", "containerClass", "colorRules"] }] }); }
2931
2924
  }
2932
2925
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibInputComponent, decorators: [{
2933
2926
  type: Component,
@@ -2937,7 +2930,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
2937
2930
  useExisting: forwardRef(() => LibInputComponent),
2938
2931
  multi: true,
2939
2932
  },
2940
- ], imports: [FormsModule, NgxMaskDirective, LibSvgIconComponent], template: "<div class=\"lib-input\">\r\n <label [for]=\"id\" class=\"lib-input__title g-text-sm\">\r\n {{ label }}\r\n @if (required) {\r\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\r\n }\r\n </label>\r\n\r\n <input\r\n #input\r\n (blur)=\"handleBlur()\"\r\n (change)=\"handleChange()\"\r\n (focus)=\"handleFocus()\"\r\n (input)=\"handleInput($event)\"\r\n (keyup.enter)=\"forceChange()\"\r\n [showMaskTyped]=\"showMaskTyped\"\r\n [dropSpecialCharacters]=\"dropSpecialCharacters\"\r\n [shownMaskExpression]=\"shownMaskExpression\"\r\n [mask]=\"mask\"\r\n [validation]=\"validation\"\r\n [prefix]=\"prefix\"\r\n [suffix]=\"suffix\"\r\n [(ngModel)]=\"value\"\r\n [attr.autofocus]=\"autofocus\"\r\n [attr.autocomplete]=\"autocomplete === undefined ? null : autocomplete\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.max]=\"max\"\r\n [attr.min]=\"min\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.name]=\"name\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.tabIndex]=\"tabIndex\"\r\n [attr.type]=\"type || 'text'\"\r\n [class.focused]=\"focused\"\r\n [class.invalid]=\"showError\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"readOnly\"\r\n class=\"text-input\" />\r\n @if (errorTexts.length && showError) {\r\n @for (error of errorTexts; track error) {\r\n <div class=\"lib-input__error\">{{ error }}</div>\r\n }\r\n }\r\n @if (errorText && showSelfError && showError) {\r\n <div class=\"lib-input__error\">{{ errorText }}</div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.lib-input{position:relative}.lib-input input{width:100%;height:48px;padding:15px 16px;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative;color:var(--light-black-color)}.lib-input input:hover{border-color:var(--input-active-border-colort)}.lib-input input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-input input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-input input:disabled::placeholder{color:var(--input-placeholder)}.lib-input input.invalid,.lib-input input.invalid:hover{border-color:var(--input-error-border-color)}.lib-input input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-input__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-input__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-input .password-eye{position:absolute;right:16px;top:40px;cursor:pointer}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}\n"] }]
2933
+ ], imports: [FormsModule, NgxMaskDirective, LibSvgIconComponent, LibSvgViewerComponent], template: "<div class=\"lib-input\">\n @if (label) {\n <label [for]=\"id\" class=\"lib-input__title g-text-sm\">\n {{ label }}\n @if (required) {\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\n }\n </label>\n }\n <div class=\"pos-relative\">\n <input\n #input\n (blur)=\"handleBlur()\"\n (change)=\"handleChange()\"\n (focus)=\"handleFocus()\"\n (input)=\"handleInput($event)\"\n (keyup.enter)=\"forceChange()\"\n [showMaskTyped]=\"showMaskTyped\"\n [dropSpecialCharacters]=\"dropSpecialCharacters\"\n [shownMaskExpression]=\"shownMaskExpression\"\n [mask]=\"mask\"\n [validation]=\"validation\"\n [prefix]=\"prefix\"\n [suffix]=\"suffix\"\n [(ngModel)]=\"value\"\n [attr.autofocus]=\"autofocus\"\n [attr.autocomplete]=\"autocomplete === undefined ? null : autocomplete\"\n [attr.id]=\"id ? id : null\"\n [attr.max]=\"max\"\n [attr.min]=\"min\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.type]=\"showPass ? 'text' : (type || 'text')\"\n [class.focused]=\"focused\"\n [class.invalid]=\"showError\"\n [disabled]=\"disabled\"\n [readOnly]=\"readOnly\"\n class=\"text-input\" />\n @if (type === 'password') {\n <dd-lib-svg-viewer (click)=\"showPass = !showPass\" [pack]=\"'lib-svg'\" class=\"password-eye\" icon=\"{{ showPass ? 'eye' : 'eye-off' }}\"></dd-lib-svg-viewer>\n }\n </div>\n\n @if (errorTexts.length && showError) {\n @for (error of errorTexts; track error) {\n <div class=\"lib-input__error\">{{ error }}</div>\n }\n }\n @if (errorText && showSelfError && showError) {\n <div class=\"lib-input__error\">{{ errorText }}</div>\n }\n</div>\n", styles: [":host{display:block}.lib-input{position:relative}.lib-input input{width:100%;height:48px;padding:15px 16px;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative;color:var(--light-black-color)}.lib-input input:hover{border-color:var(--input-active-border-colort)}.lib-input input:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-input input:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-input input:disabled::placeholder{color:var(--input-placeholder)}.lib-input input.invalid,.lib-input input.invalid:hover{border-color:var(--input-error-border-color)}.lib-input input.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-input__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-input__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-input .password-eye{position:absolute;right:16px;top:12px;cursor:pointer}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}\n"] }]
2941
2934
  }], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i0.ChangeDetectorRef }, { type: i1$4.ControlContainer, decorators: [{
2942
2935
  type: Optional
2943
2936
  }, {
@@ -2963,6 +2956,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
2963
2956
  type: Input
2964
2957
  }], customPatterns: [{
2965
2958
  type: Input
2959
+ }], showPass: [{
2960
+ type: Input
2966
2961
  }] } });
2967
2962
 
2968
2963
  class LibRadioComponent {
@@ -3444,9 +3439,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
3444
3439
  class LibSelectComponent extends LibCommonInputTextComponent {
3445
3440
  static { this.idCounter = 1; }
3446
3441
  set data(d) {
3447
- if (d) {
3448
- this._data.set(d);
3449
- }
3442
+ this._data.set(d);
3443
+ this.initialized = !!d;
3450
3444
  this.stringArray.set(typeof d?.[0] === 'string');
3451
3445
  if (!d?.length) {
3452
3446
  // this.isShownList = false;
@@ -3470,8 +3464,13 @@ class LibSelectComponent extends LibCommonInputTextComponent {
3470
3464
  this.noDataError = 'Список пуст';
3471
3465
  this.searchPlaceholder = 'Напишите, что вы ищете';
3472
3466
  this.placeholder = 'Выберите из списка';
3467
+ this.keyGroupTitle = '';
3468
+ this.keyGroupChildren = 'children';
3469
+ this.selectAllInGroup = false;
3473
3470
  this.selectedItem = new EventEmitter();
3474
3471
  this.selectedItems = new EventEmitter();
3472
+ this.deleteMultiItem = new EventEmitter();
3473
+ this.initialized = false;
3475
3474
  this._data = signal(undefined);
3476
3475
  // TODO: надо сделать типизацию и конструктор принмайющий объект форматирующий во внутренний и отдающий обратно что нужно
3477
3476
  this.checkedItems = [];
@@ -3495,6 +3494,52 @@ class LibSelectComponent extends LibCommonInputTextComponent {
3495
3494
  this.writeValue(this.writtenValue);
3496
3495
  }
3497
3496
  }
3497
+ isGroup(item) {
3498
+ return item && Array.isArray(item[this.keyGroupChildren]);
3499
+ }
3500
+ getGroupTitle(group) {
3501
+ if (!this.keyGroupTitle) {
3502
+ return group.title || group.name || group.label || '';
3503
+ }
3504
+ if (!group[this.keyGroupTitle] && group[this.keyGroupChildren]?.[0]) {
3505
+ const firstChild = group[this.keyGroupChildren][0];
3506
+ return firstChild[this.keyGroupTitle] || '';
3507
+ }
3508
+ return group[this.keyGroupTitle] || '';
3509
+ }
3510
+ handleGroupClick(group) {
3511
+ if (!this.multi)
3512
+ return;
3513
+ const children = group[this.keyGroupChildren];
3514
+ const allSelected = this.isGroupSelected(group);
3515
+ if (allSelected) {
3516
+ this.checkedItems = this.checkedItems.filter(item => !children.some((child) => this.keyValue ? child[this.keyValue] === item[this.keyValue] :
3517
+ JSON.stringify(child) === JSON.stringify(item)));
3518
+ }
3519
+ else {
3520
+ const newItems = children.filter((child) => !this.checkedItems.some(item => this.keyValue ? child[this.keyValue] === item[this.keyValue] :
3521
+ JSON.stringify(child) === JSON.stringify(item)));
3522
+ this.checkedItems = [...this.checkedItems, ...newItems];
3523
+ }
3524
+ this.updateMultiSelection();
3525
+ }
3526
+ updateMultiSelection() {
3527
+ const values = this.keyValue ?
3528
+ this.checkedItems.map(m => m[this.keyValue]) :
3529
+ this.checkedItems;
3530
+ this.propagateChange(values);
3531
+ this.multiCountValue = this.checkedItems.length ?
3532
+ `Выбрано (${this.checkedItems.length})` :
3533
+ undefined;
3534
+ this.changeDetection.detectChanges();
3535
+ }
3536
+ isGroupSelected(group) {
3537
+ if (!this.multi)
3538
+ return false;
3539
+ const children = group[this.keyGroupChildren];
3540
+ return children.every((child) => this.checkedItems.some(item => this.keyValue ? child[this.keyValue] === item[this.keyValue] :
3541
+ JSON.stringify(child) === JSON.stringify(item)));
3542
+ }
3498
3543
  onClear(checkedItem) {
3499
3544
  this.cleared.emit();
3500
3545
  this.selectItem(checkedItem, true);
@@ -3548,16 +3593,20 @@ class LibSelectComponent extends LibCommonInputTextComponent {
3548
3593
  if (this.multi) {
3549
3594
  if (value?.length && this._data()?.length) {
3550
3595
  this.multiCountValue = `Выбрано (${value.length})`;
3596
+ let data = this._data();
3597
+ if (this._data()[0][this.keyGroupChildren]?.length) {
3598
+ data = this._data()?.flatMap(item => item.children) ?? [];
3599
+ }
3551
3600
  if (this.keyValue) {
3552
- this.checkedItems = this._data().filter((f) => value.includes(f[this.keyValue])) || [];
3601
+ this.checkedItems = data.filter((f) => value.includes(f[this.keyValue])) || [];
3553
3602
  }
3554
3603
  else {
3555
3604
  if (this.stringArray()) {
3556
- this.checkedItems = this._data().filter((f) => value.includes(f)) || [];
3605
+ this.checkedItems = data.filter((f) => value.includes(f)) || [];
3557
3606
  }
3558
3607
  else {
3559
3608
  const strArr = value.map(JSON.stringify);
3560
- this.checkedItems = this._data().filter((f) => strArr.includes(JSON.stringify(f))) || [];
3609
+ this.checkedItems = data.filter((f) => strArr.includes(JSON.stringify(f))) || [];
3561
3610
  }
3562
3611
  }
3563
3612
  }
@@ -3577,7 +3626,17 @@ class LibSelectComponent extends LibCommonInputTextComponent {
3577
3626
  }
3578
3627
  else {
3579
3628
  if (!!this.keyValue && this._data()?.length) {
3580
- const fVal = this._data().find((f) => f?.[this.keyValue] === value);
3629
+ let fVal = this._data().find((f) => {
3630
+ if (f?.[this.keyValue] === value) {
3631
+ return true;
3632
+ }
3633
+ else if (f?.[this.keyGroupChildren]?.length) {
3634
+ return f?.[this.keyGroupChildren].find((c) => c?.[this.keyValue] === value);
3635
+ }
3636
+ });
3637
+ if (fVal?.[this.keyGroupChildren]?.length) {
3638
+ fVal = fVal[this.keyGroupChildren].find((c) => c[this.keyValue] === value);
3639
+ }
3581
3640
  this.value = fVal?.[this.keyValue];
3582
3641
  this.inputValue = this.keyTitle ? fVal?.[this.keyTitle] : fVal;
3583
3642
  this.checkedItem = fVal;
@@ -3618,6 +3677,13 @@ class LibSelectComponent extends LibCommonInputTextComponent {
3618
3677
  this.changeDetection.detectChanges();
3619
3678
  }
3620
3679
  filterList(item) {
3680
+ if (this.isGroup(item)) {
3681
+ const filteredChildren = item[this.keyGroupChildren].filter((child) => this.filterItem(child));
3682
+ return filteredChildren.length > 0;
3683
+ }
3684
+ return this.filterItem(item);
3685
+ }
3686
+ filterItem(item) {
3621
3687
  if (this.stringArray()) {
3622
3688
  return item.toLowerCase().includes(this.searchValue?.toLowerCase() || '');
3623
3689
  }
@@ -3718,13 +3784,13 @@ class LibSelectComponent extends LibCommonInputTextComponent {
3718
3784
  // this.showMultiCountValue = false;
3719
3785
  }
3720
3786
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSelectComponent, deps: [{ token: i0.DestroyRef }, { token: i0.ChangeDetectorRef }, { token: i1$4.ControlContainer, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
3721
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibSelectComponent, isStandalone: true, selector: "dd-lib-select", inputs: { data: "data", virtualScroll: "virtualScroll", multi: "multi", tooltipPosition: "tooltipPosition", highlight: "highlight", searchOn: "searchOn", selectId: "selectId", itemSize: "itemSize", keyTitle: "keyTitle", keyDesc: "keyDesc", keyValue: "keyValue", noDataError: "noDataError", searchPlaceholder: "searchPlaceholder", placeholder: "placeholder" }, outputs: { selectedItem: "selectedItem", selectedItems: "selectedItems" }, providers: [
3787
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibSelectComponent, isStandalone: true, selector: "dd-lib-select", inputs: { data: "data", virtualScroll: "virtualScroll", multi: "multi", tooltipPosition: "tooltipPosition", highlight: "highlight", searchOn: "searchOn", selectId: "selectId", itemSize: "itemSize", keyTitle: "keyTitle", keyDesc: "keyDesc", keyValue: "keyValue", noDataError: "noDataError", searchPlaceholder: "searchPlaceholder", placeholder: "placeholder", keyGroupTitle: "keyGroupTitle", keyGroupChildren: "keyGroupChildren", selectAllInGroup: "selectAllInGroup" }, outputs: { selectedItem: "selectedItem", selectedItems: "selectedItems", deleteMultiItem: "deleteMultiItem" }, providers: [
3722
3788
  {
3723
3789
  provide: NG_VALUE_ACCESSOR,
3724
3790
  useExisting: forwardRef(() => LibSelectComponent),
3725
3791
  multi: true,
3726
3792
  },
3727
- ], viewQueries: [{ propertyName: "selectEl", first: true, predicate: ["select"], descendants: true, read: ElementRef, static: true }, { propertyName: "searchInputEl", first: true, predicate: ["searchInputEl"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\" [destroyedItem]=\"isShownList\" ddFixedPosition>\r\n @if (label) {\r\n <label [for]=\"id\" class=\"lib-select__title\">\r\n {{ label }}\r\n @if (required) {\r\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\r\n }\r\n </label>\r\n }\r\n\r\n <div class=\"pos-relative\" data-child=\"input\">\r\n\r\n <input\r\n #select\r\n (change)=\"handleChange()\"\r\n (click)=\"notifyFocusEvent()\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur()\"\r\n (focus)=\"handleFocus()\"\r\n [attr.id]=\"selectId\"\r\n [attr.placeholder]=\"(multiCountValue || searchValue) ? '' : placeholder\"\r\n [attr.tabIndex]=\"tabIndex\"\r\n [attr.type]=\"'text'\"\r\n [class.focused]=\"focused\"\r\n [class.invalid]=\"showError\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"true\"\r\n [(ngModel)]=\"inputValue\"\r\n [title]=\"inputValue || ''\"\r\n class=\"text-select select-block\" />\r\n\r\n @if (multiCountValue) {\r\n <div class=\"selected-items-container\"\r\n id=\"selected-{{selectId}}\">\r\n\r\n <dd-lib-horizontal-scroll>\r\n @for (item of checkedItems; track item) {\r\n <div class=\"selected-items__item\">\r\n @if (stringArray()) {\r\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"selected-items__item-title\"></div>\r\n }\r\n @if (keyTitle && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"selected-items__item-title\"></div>\r\n }\r\n @if (keyDesc && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n [title]=\"item[keyDesc]\"\r\n class=\"selected-items__item-desc\"></div>\r\n }\r\n <dd-lib-svg-icon id=\"selected-clear-{{selectId}}\" icon=\"clear\" class=\"cup\"\r\n (click)=\"selectItem(item)\"></dd-lib-svg-icon>\r\n </div>\r\n }\r\n </dd-lib-horizontal-scroll>\r\n </div>\r\n\r\n }\r\n <!-- (blur)=\"notifyFocusEvent($event)\"-->\r\n @if (!checkedItem) {\r\n <dd-lib-svg-icon\r\n (click)=\"notifyFocusEvent()\"\r\n [class.black-svg]=\"isShownList\"\r\n [class.disabled]=\"disabled\"\r\n [class.gray-svg]=\"!isShownList\"\r\n [class.up]=\"isShownList\"\r\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\r\n\r\n } @else if (clearable && !searchValue) {\r\n <dd-lib-svg-icon\r\n (click)=\"onClear(checkedItem)\"\r\n class=\"clear\"\r\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\r\n }\r\n </div>\r\n\r\n @if (errorTexts.length && showError) {\r\n @for (error of errorTexts; track error) {\r\n <div class=\"lib-select__error\">{{ error }}</div>\r\n }\r\n }\r\n @if (errorText && showSelfError && showError) {\r\n <div class=\"lib-select__error\">{{ errorText }}</div>\r\n }\r\n\r\n @if (isShownList) {\r\n <div\r\n id=\"dropdown\"\r\n [style.max-height]=\"searchOn ? '342px' : '300px'\"\r\n data-child=\"list\"\r\n (ddClickOutside)=\"notifyFocusEvent();fullBlur.emit($event)\"\r\n [elements]=\"['lib-select-' + selectId, 'chevron-' + selectId, 'selected-' + selectId, 'selected-clear-' + selectId]\"\r\n ddListKeyboardNavigation\r\n class=\"select-list-wrapper\">\r\n @if (_data()) {\r\n <!-- \u0415\u0441\u043B\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0434\u043B\u044F \u0441\u0435\u0434\u0435\u043A\u0442\u0430 \u043D\u0435 \u043F\u0440\u0438\u0448\u043B\u043E-->\r\n @if (!_data()?.length && noDataError) {\r\n <div class=\"info-container\">\r\n <div class=\"b2-title no-wrap-text\">\r\n {{ noDataError }}\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- \u043F\u043E\u0438\u0441\u043A-->\r\n @if (_data()?.length && _data()!.length > 5 && searchOn) {\r\n <div class=\"search-block\">\r\n <dd-lib-svg-icon\r\n class=\"search-icon\"\r\n id=\"chevron-{{ selectId }}\" icon=\"search\"></dd-lib-svg-icon>\r\n <input class=\"search-block__input\" #searchInputEl [attr.name]=\"name\"\r\n [readOnly]=\"readOnly\"\r\n (input)=\"searchInput()\"\r\n [placeholder]=\"searchPlaceholder\"\r\n (blur)=\"handleBlur()\"\r\n (focus)=\"handleFocus()\"\r\n [(ngModel)]=\"searchValue\" type=\"text\">\r\n <dd-lib-svg-icon\r\n [style.display]=\"searchValue ? 'block' : 'none'\"\r\n class=\"cup\"\r\n (click)=\"searchValue=''\"\r\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\r\n\r\n </div>\r\n }\r\n <!-- \u0415\u0441\u043B\u0438 \u043F\u043E\u0438\u0441\u043A \u043D\u0435 \u0434\u0430\u043B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432-->\r\n @if (_data()?.length && (_data() | filterByKey: filterList.bind(this))?.length === 0) {\r\n <div class=\"info-container\">\r\n <div class=\"b2-title no-wrap-text\">\r\n \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\r\n </div>\r\n </div>\r\n }\r\n @if (virtualScroll) {\r\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" [style.height]=\"(_data()?.length || 0) * itemSize + 'px'\">\r\n <div *cdkVirtualFor=\"let item of _data() | filterByKey: filterList.bind(this)\">\r\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (item of _data() | filterByKey: filterList.bind(this); track item) {\r\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\r\n }\r\n }\r\n } @else {\r\n <div class=\"info-container\">\r\n <div class=\"d-flex gap-12 align-center\">\r\n <div class=\"b2-title no-wrap-text\">\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445</div>\r\n <dd-lib-loader></dd-lib-loader>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #rowItem let-item=item>\r\n <div ddSelectableItem [ddTooltip]=\"item.tooltip ? item.tooltip : ''\" [position]=\"tooltipPosition\"\r\n (click)=\"selectItem(item)\"\r\n (itemSelected)=\"selectItem(item)\"\r\n [class.s-item-active]=\"checkSelected(item) && !item.disabled\"\r\n [class.s-item-disabled]=\"item.disabled\"\r\n class=\"select-data\">\r\n @if (stringArray()) {\r\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"select-data__title\"></div>\r\n }\r\n @if (keyTitle && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"select-data__title\"></div>\r\n }\r\n @if (keyDesc && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n [title]=\"item[keyDesc]\"\r\n class=\"select-data__desc\"></div>\r\n }\r\n @if (checkSelected(item)) {\r\n <dd-lib-svg-icon\r\n (click)=\"selectItem(checkedItem)\"\r\n class=\"checked\"\r\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".lib-select{position:relative}.lib-select .select-block{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select .select-block:hover{border-color:var(--input-active-border-colort)}.lib-select .select-block:hover~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select .select-block:focus~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select .select-block:disabled::placeholder{color:var(--input-placeholder)}.lib-select .select-block:disabled~.selected-items-container .selected-items__item{background:var(--gray-blue-300);color:var(--second-gray-color)}.lib-select .select-block.invalid,.lib-select .select-block.invalid:hover{border-color:var(--input-error-border-color)}.lib-select .select-block.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .select-block:invalid~.selected-items-container .selected-items__item{background:var(--red-light-color);color:var(--font-light-black-color)}.lib-select .multi-count{position:absolute;top:10px;right:42px;white-space:nowrap}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper cdk-virtual-scroll-viewport{max-height:300px}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative;min-height:40px}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data.key-down-active,.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.s-item-active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.s-item-active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-data.s-item-disabled{cursor:auto;background:var(--disabled-bgc);color:var(--disabled-color)}.lib-select .select-list-wrapper .select-no-data{padding:12px 42px 12px 16px;cursor:auto;position:relative;color:var(--disabled-color)}.lib-select .select-list-wrapper .info-container{padding:36px;display:flex;align-items:center;justify-content:center}.search-block{position:relative;padding:12px;z-index:1;display:flex;gap:4px;align-items:center;border-bottom:1px solid var(--gray-bgc)}.search-block__input{border:none;background:transparent;width:100%;padding-left:40px}.search-block .search-icon{position:absolute;left:20px;top:0;bottom:0}.data-loader{position:absolute;right:0;left:0;bottom:12px}.selected-items-container{overflow:hidden;border-radius:8px;top:0;bottom:0;position:absolute;max-width:calc(100% - 60px);left:6px;margin:8px;align-items:center}.selected-items-container .selected-items__item{background:var(--blue-card);color:var(--font-light-black-color);padding:4px;border-radius:8px;display:flex;gap:4px;align-items:center}.selected-items-container .selected-items__item:hover{background:var(--light-green-color);color:var(--font-light-black-color)}.selected-items-container .selected-items__item-title{white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: HighlightPipe, name: "highlight" }, { kind: "pipe", type: SafePipe, name: "safe" }, { kind: "directive", type: ClickOutsideDirective, selector: "[ddClickOutside]", inputs: ["elements"], outputs: ["ddClickOutside"] }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }, { kind: "pipe", type: FilterByKeyPipe, name: "filterByKey" }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2$2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2$2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2$2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: TooltipDirective, selector: "[ddTooltip]", inputs: ["ddTooltip", "withClick", "position"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ListKeyboardNavigationDirective, selector: "[ddListKeyboardNavigation]" }, { kind: "directive", type: SelectableItemDirective, selector: "[ddSelectableItem]", outputs: ["itemSelected"] }, { kind: "directive", type: FixedPositionDirective, selector: "[ddFixedPosition]", inputs: ["childName1", "childName2", "destroyedItem"] }, { kind: "component", type: LibHorizontalScrollComponent, selector: "dd-lib-horizontal-scroll" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3793
+ ], viewQueries: [{ propertyName: "selectEl", first: true, predicate: ["select"], descendants: true, read: ElementRef, static: true }, { propertyName: "searchInputEl", first: true, predicate: ["searchInputEl"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\" [destroyedItem]=\"isShownList\" ddFixedPosition>\n @if (label) {\n <label [for]=\"id\" class=\"lib-select__title\">\n {{ label }}\n @if (required) {\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\n }\n </label>\n }\n\n <div class=\"pos-relative\" data-child=\"input\">\n <input\n #select\n (change)=\"handleChange()\"\n (click)=\"notifyFocusEvent()\"\n (input)=\"handleInput($event)\"\n (blur)=\"handleBlur()\"\n (focus)=\"handleFocus()\"\n [attr.id]=\"selectId\"\n [attr.placeholder]=\"(multiCountValue || searchValue) ? '' : placeholder\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.type]=\"'text'\"\n [class.focused]=\"focused\"\n [class.invalid]=\"showError\"\n [disabled]=\"disabled\"\n [readOnly]=\"true\"\n [(ngModel)]=\"inputValue\"\n [title]=\"inputValue || ''\"\n class=\"text-select select-block\" />\n\n @if (multiCountValue) {\n <div class=\"selected-items-container\" id=\"selected-{{selectId}}\">\n <dd-lib-horizontal-scroll>\n @for (item of checkedItems; track item) {\n <div class=\"selected-items__item\">\n @if (stringArray()) {\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"selected-items__item-title\"></div>\n }\n @if (keyTitle && !stringArray()) {\n <div\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"selected-items__item-title\"></div>\n }\n @if (keyDesc && !stringArray()) {\n <div\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n [title]=\"item[keyDesc]\"\n class=\"selected-items__item-desc\"></div>\n }\n <dd-lib-svg-icon id=\"selected-clear-{{selectId}}\" icon=\"clear\" class=\"cup\"\n (click)=\"selectItem(item);deleteMultiItem.emit(item)\"></dd-lib-svg-icon>\n </div>\n }\n </dd-lib-horizontal-scroll>\n </div>\n }\n\n @if (!checkedItem) {\n <dd-lib-svg-icon\n (click)=\"notifyFocusEvent()\"\n [class.black-svg]=\"isShownList\"\n [class.disabled]=\"disabled\"\n [class.gray-svg]=\"!isShownList\"\n [class.up]=\"isShownList\"\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\n } @else if (clearable && !searchValue) {\n <dd-lib-svg-icon\n (click)=\"onClear(checkedItem)\"\n class=\"clear\"\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\n }\n </div>\n\n @if (errorTexts.length && showError) {\n @for (error of errorTexts; track error) {\n <div class=\"lib-select__error\">{{ error }}</div>\n }\n }\n @if (errorText && showSelfError && showError) {\n <div class=\"lib-select__error\">{{ errorText }}</div>\n }\n\n @if (isShownList) {\n <div\n id=\"dropdown\"\n [style.max-height]=\"searchOn ? '342px' : '300px'\"\n data-child=\"list\"\n (ddClickOutside)=\"notifyFocusEvent();fullBlur.emit($event)\"\n [elements]=\"['lib-select-' + selectId, 'chevron-' + selectId, 'selected-' + selectId, 'selected-clear-' + selectId]\"\n ddListKeyboardNavigation\n class=\"select-list-wrapper\">\n @if (initialized) {\n @if (!_data()?.length && noDataError) {\n <div class=\"info-container\">\n <div class=\"b2-title no-wrap-text\">\n {{ noDataError }}\n </div>\n </div>\n }\n\n @if (_data()?.length && _data()!.length > 5 && searchOn) {\n <div class=\"search-block\">\n <dd-lib-svg-icon class=\"search-icon\" id=\"chevron-{{ selectId }}\" icon=\"search\"></dd-lib-svg-icon>\n <input class=\"search-block__input\" #searchInputEl [attr.name]=\"name\"\n [readOnly]=\"readOnly\"\n (input)=\"searchInput()\"\n [placeholder]=\"searchPlaceholder\"\n (blur)=\"handleBlur()\"\n (focus)=\"handleFocus()\"\n [(ngModel)]=\"searchValue\" type=\"text\">\n <dd-lib-svg-icon\n [style.display]=\"searchValue ? 'block' : 'none'\"\n class=\"cup\"\n (click)=\"searchValue=''\"\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\n </div>\n }\n\n @if (_data()?.length && (_data() | filterByKey: filterList.bind(this))?.length === 0) {\n <div class=\"info-container\">\n <div class=\"b2-title no-wrap-text\">\n \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\n </div>\n </div>\n }\n\n @if (virtualScroll) {\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" [style.height]=\"(_data()?.length || 0) * itemSize + 'px'\">\n <div *cdkVirtualFor=\"let item of _data() | filterByKey: filterList.bind(this)\">\n <ng-container [ngTemplateOutlet]=\"itemsList\" [ngTemplateOutletContext]=\"{items: [item]}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n <ng-container [ngTemplateOutlet]=\"itemsList\" [ngTemplateOutletContext]=\"{items: _data() | filterByKey: filterList.bind(this)}\"></ng-container>\n }\n } @else {\n <div class=\"info-container\">\n <div class=\"d-flex gap-12 align-center\">\n <div class=\"b2-title no-wrap-text\">\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445</div>\n <dd-lib-loader></dd-lib-loader>\n </div>\n </div>\n }\n </div>\n }\n</div>\n\n<ng-template #rowItem let-item=\"item\">\n <div ddSelectableItem [ddTooltip]=\"item.tooltip ? item.tooltip : ''\" [position]=\"tooltipPosition\"\n (click)=\"selectItem(item)\"\n (itemSelected)=\"selectItem(item)\"\n [class.s-item-active]=\"checkSelected(item) && !item.disabled\"\n [class.s-item-disabled]=\"item.disabled\"\n class=\"select-data\">\n @if (stringArray()) {\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"select-data__title\"></div>\n }\n @if (keyTitle && !stringArray()) {\n <div\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"select-data__title\"></div>\n }\n @if (keyDesc && !stringArray()) {\n <div\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n [title]=\"item[keyDesc]\"\n class=\"select-data__desc\"></div>\n }\n @if (checkSelected(item)) {\n <dd-lib-svg-icon\n (click)=\"selectItem(checkedItem)\"\n class=\"checked\"\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\n }\n </div>\n</ng-template>\n\n<ng-template #itemsList let-items=\"items\">\n @for (item of items | filterByKey: filterList.bind(this); track item) {\n @if (isGroup(item)) {\n <div class=\"group-header\" [class.select-all-enabled]=\"selectAllInGroup\"\n (click)=\"selectAllInGroup ? handleGroupClick(item) : null\">\n <div class=\"group-title\">{{ getGroupTitle(item) }}</div>\n @if (isGroupSelected(item)) {\n <dd-lib-svg-icon\n [class.checked]=\"isGroupSelected(item)\"\n icon=\"check_green\"></dd-lib-svg-icon>\n }\n </div>\n <div class=\"group-items\">\n @for (child of item[keyGroupChildren] | filterByKey: filterList.bind(this); track child) {\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item: child}\"></ng-container>\n }\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n }\n }\n</ng-template>\n", styles: [".lib-select{position:relative}.lib-select .select-block{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select .select-block:hover{border-color:var(--input-active-border-colort)}.lib-select .select-block:hover~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select .select-block:focus~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select .select-block:disabled::placeholder{color:var(--input-placeholder)}.lib-select .select-block:disabled~.selected-items-container .selected-items__item{background:var(--gray-blue-300);color:var(--second-gray-color)}.lib-select .select-block.invalid,.lib-select .select-block.invalid:hover{border-color:var(--input-error-border-color)}.lib-select .select-block.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .select-block:invalid~.selected-items-container .selected-items__item{background:var(--red-light-color);color:var(--font-light-black-color)}.lib-select .multi-count{position:absolute;top:10px;right:42px;white-space:nowrap}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper cdk-virtual-scroll-viewport{max-height:300px}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative;min-height:40px}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data.key-down-active,.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.s-item-active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.s-item-active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-data.s-item-disabled{cursor:auto;background:var(--disabled-bgc);color:var(--disabled-color)}.lib-select .select-list-wrapper .group-items{padding-left:16px}.lib-select .select-list-wrapper .group-items .select-data{margin-left:-16px;padding-left:32px}.lib-select .select-list-wrapper .select-no-data{padding:12px 42px 12px 16px;cursor:auto;position:relative;color:var(--disabled-color)}.lib-select .select-list-wrapper .info-container{padding:36px;display:flex;align-items:center;justify-content:center}.search-block{position:relative;padding:12px;z-index:1;display:flex;gap:4px;align-items:center;border-bottom:1px solid var(--gray-bgc)}.search-block__input{border:none;background:transparent;width:100%;padding-left:40px}.search-block .search-icon{position:absolute;left:20px;top:0;bottom:0}.data-loader{position:absolute;right:0;left:0;bottom:12px}.selected-items-container{overflow:hidden;border-radius:8px;top:0;bottom:0;position:absolute;max-width:calc(100% - 60px);left:6px;margin:8px;align-items:center}.selected-items-container .selected-items__item{background:var(--blue-card);color:var(--font-light-black-color);padding:4px;border-radius:8px;display:flex;gap:4px;align-items:center}.selected-items-container .selected-items__item:hover{background:var(--light-green-color);color:var(--font-light-black-color)}.selected-items-container .selected-items__item-title{white-space:nowrap}.group-header{height:48px;padding:8px 16px;font-weight:600;color:var(--font-light-black-color);border-bottom:1px solid var(--gray-bgc);display:flex;justify-content:space-between;align-items:center}.group-header.select-all-enabled{cursor:pointer}.group-header.select-all-enabled:hover{background-color:var(--gray-color-300)}.group-title{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: HighlightPipe, name: "highlight" }, { kind: "pipe", type: SafePipe, name: "safe" }, { kind: "directive", type: ClickOutsideDirective, selector: "[ddClickOutside]", inputs: ["elements"], outputs: ["ddClickOutside"] }, { kind: "component", type: LibLoaderComponent, selector: "dd-lib-loader", inputs: ["color", "size"] }, { kind: "pipe", type: FilterByKeyPipe, name: "filterByKey" }, { kind: "component", type: LibSvgIconComponent, selector: "dd-lib-svg-icon", inputs: ["width", "height", "color", "icon"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2$2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2$2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2$2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: TooltipDirective, selector: "[ddTooltip]", inputs: ["ddTooltip", "withClick", "position"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ListKeyboardNavigationDirective, selector: "[ddListKeyboardNavigation]" }, { kind: "directive", type: SelectableItemDirective, selector: "[ddSelectableItem]", outputs: ["itemSelected"] }, { kind: "directive", type: FixedPositionDirective, selector: "[ddFixedPosition]", inputs: ["childName1", "childName2", "destroyedItem"] }, { kind: "component", type: LibHorizontalScrollComponent, selector: "dd-lib-horizontal-scroll" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3728
3794
  }
3729
3795
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibSelectComponent, decorators: [{
3730
3796
  type: Component,
@@ -3750,7 +3816,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
3750
3816
  useExisting: forwardRef(() => LibSelectComponent),
3751
3817
  multi: true,
3752
3818
  },
3753
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\" [destroyedItem]=\"isShownList\" ddFixedPosition>\r\n @if (label) {\r\n <label [for]=\"id\" class=\"lib-select__title\">\r\n {{ label }}\r\n @if (required) {\r\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\r\n }\r\n </label>\r\n }\r\n\r\n <div class=\"pos-relative\" data-child=\"input\">\r\n\r\n <input\r\n #select\r\n (change)=\"handleChange()\"\r\n (click)=\"notifyFocusEvent()\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur()\"\r\n (focus)=\"handleFocus()\"\r\n [attr.id]=\"selectId\"\r\n [attr.placeholder]=\"(multiCountValue || searchValue) ? '' : placeholder\"\r\n [attr.tabIndex]=\"tabIndex\"\r\n [attr.type]=\"'text'\"\r\n [class.focused]=\"focused\"\r\n [class.invalid]=\"showError\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"true\"\r\n [(ngModel)]=\"inputValue\"\r\n [title]=\"inputValue || ''\"\r\n class=\"text-select select-block\" />\r\n\r\n @if (multiCountValue) {\r\n <div class=\"selected-items-container\"\r\n id=\"selected-{{selectId}}\">\r\n\r\n <dd-lib-horizontal-scroll>\r\n @for (item of checkedItems; track item) {\r\n <div class=\"selected-items__item\">\r\n @if (stringArray()) {\r\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"selected-items__item-title\"></div>\r\n }\r\n @if (keyTitle && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"selected-items__item-title\"></div>\r\n }\r\n @if (keyDesc && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n [title]=\"item[keyDesc]\"\r\n class=\"selected-items__item-desc\"></div>\r\n }\r\n <dd-lib-svg-icon id=\"selected-clear-{{selectId}}\" icon=\"clear\" class=\"cup\"\r\n (click)=\"selectItem(item)\"></dd-lib-svg-icon>\r\n </div>\r\n }\r\n </dd-lib-horizontal-scroll>\r\n </div>\r\n\r\n }\r\n <!-- (blur)=\"notifyFocusEvent($event)\"-->\r\n @if (!checkedItem) {\r\n <dd-lib-svg-icon\r\n (click)=\"notifyFocusEvent()\"\r\n [class.black-svg]=\"isShownList\"\r\n [class.disabled]=\"disabled\"\r\n [class.gray-svg]=\"!isShownList\"\r\n [class.up]=\"isShownList\"\r\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\r\n\r\n } @else if (clearable && !searchValue) {\r\n <dd-lib-svg-icon\r\n (click)=\"onClear(checkedItem)\"\r\n class=\"clear\"\r\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\r\n }\r\n </div>\r\n\r\n @if (errorTexts.length && showError) {\r\n @for (error of errorTexts; track error) {\r\n <div class=\"lib-select__error\">{{ error }}</div>\r\n }\r\n }\r\n @if (errorText && showSelfError && showError) {\r\n <div class=\"lib-select__error\">{{ errorText }}</div>\r\n }\r\n\r\n @if (isShownList) {\r\n <div\r\n id=\"dropdown\"\r\n [style.max-height]=\"searchOn ? '342px' : '300px'\"\r\n data-child=\"list\"\r\n (ddClickOutside)=\"notifyFocusEvent();fullBlur.emit($event)\"\r\n [elements]=\"['lib-select-' + selectId, 'chevron-' + selectId, 'selected-' + selectId, 'selected-clear-' + selectId]\"\r\n ddListKeyboardNavigation\r\n class=\"select-list-wrapper\">\r\n @if (_data()) {\r\n <!-- \u0415\u0441\u043B\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0434\u043B\u044F \u0441\u0435\u0434\u0435\u043A\u0442\u0430 \u043D\u0435 \u043F\u0440\u0438\u0448\u043B\u043E-->\r\n @if (!_data()?.length && noDataError) {\r\n <div class=\"info-container\">\r\n <div class=\"b2-title no-wrap-text\">\r\n {{ noDataError }}\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- \u043F\u043E\u0438\u0441\u043A-->\r\n @if (_data()?.length && _data()!.length > 5 && searchOn) {\r\n <div class=\"search-block\">\r\n <dd-lib-svg-icon\r\n class=\"search-icon\"\r\n id=\"chevron-{{ selectId }}\" icon=\"search\"></dd-lib-svg-icon>\r\n <input class=\"search-block__input\" #searchInputEl [attr.name]=\"name\"\r\n [readOnly]=\"readOnly\"\r\n (input)=\"searchInput()\"\r\n [placeholder]=\"searchPlaceholder\"\r\n (blur)=\"handleBlur()\"\r\n (focus)=\"handleFocus()\"\r\n [(ngModel)]=\"searchValue\" type=\"text\">\r\n <dd-lib-svg-icon\r\n [style.display]=\"searchValue ? 'block' : 'none'\"\r\n class=\"cup\"\r\n (click)=\"searchValue=''\"\r\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\r\n\r\n </div>\r\n }\r\n <!-- \u0415\u0441\u043B\u0438 \u043F\u043E\u0438\u0441\u043A \u043D\u0435 \u0434\u0430\u043B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432-->\r\n @if (_data()?.length && (_data() | filterByKey: filterList.bind(this))?.length === 0) {\r\n <div class=\"info-container\">\r\n <div class=\"b2-title no-wrap-text\">\r\n \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\r\n </div>\r\n </div>\r\n }\r\n @if (virtualScroll) {\r\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" [style.height]=\"(_data()?.length || 0) * itemSize + 'px'\">\r\n <div *cdkVirtualFor=\"let item of _data() | filterByKey: filterList.bind(this)\">\r\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (item of _data() | filterByKey: filterList.bind(this); track item) {\r\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\r\n }\r\n }\r\n } @else {\r\n <div class=\"info-container\">\r\n <div class=\"d-flex gap-12 align-center\">\r\n <div class=\"b2-title no-wrap-text\">\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445</div>\r\n <dd-lib-loader></dd-lib-loader>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #rowItem let-item=item>\r\n <div ddSelectableItem [ddTooltip]=\"item.tooltip ? item.tooltip : ''\" [position]=\"tooltipPosition\"\r\n (click)=\"selectItem(item)\"\r\n (itemSelected)=\"selectItem(item)\"\r\n [class.s-item-active]=\"checkSelected(item) && !item.disabled\"\r\n [class.s-item-disabled]=\"item.disabled\"\r\n class=\"select-data\">\r\n @if (stringArray()) {\r\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"select-data__title\"></div>\r\n }\r\n @if (keyTitle && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n class=\"select-data__title\"></div>\r\n }\r\n @if (keyDesc && !stringArray()) {\r\n <div\r\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\r\n [title]=\"item[keyDesc]\"\r\n class=\"select-data__desc\"></div>\r\n }\r\n @if (checkSelected(item)) {\r\n <dd-lib-svg-icon\r\n (click)=\"selectItem(checkedItem)\"\r\n class=\"checked\"\r\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".lib-select{position:relative}.lib-select .select-block{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select .select-block:hover{border-color:var(--input-active-border-colort)}.lib-select .select-block:hover~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select .select-block:focus~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select .select-block:disabled::placeholder{color:var(--input-placeholder)}.lib-select .select-block:disabled~.selected-items-container .selected-items__item{background:var(--gray-blue-300);color:var(--second-gray-color)}.lib-select .select-block.invalid,.lib-select .select-block.invalid:hover{border-color:var(--input-error-border-color)}.lib-select .select-block.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .select-block:invalid~.selected-items-container .selected-items__item{background:var(--red-light-color);color:var(--font-light-black-color)}.lib-select .multi-count{position:absolute;top:10px;right:42px;white-space:nowrap}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper cdk-virtual-scroll-viewport{max-height:300px}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative;min-height:40px}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data.key-down-active,.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.s-item-active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.s-item-active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-data.s-item-disabled{cursor:auto;background:var(--disabled-bgc);color:var(--disabled-color)}.lib-select .select-list-wrapper .select-no-data{padding:12px 42px 12px 16px;cursor:auto;position:relative;color:var(--disabled-color)}.lib-select .select-list-wrapper .info-container{padding:36px;display:flex;align-items:center;justify-content:center}.search-block{position:relative;padding:12px;z-index:1;display:flex;gap:4px;align-items:center;border-bottom:1px solid var(--gray-bgc)}.search-block__input{border:none;background:transparent;width:100%;padding-left:40px}.search-block .search-icon{position:absolute;left:20px;top:0;bottom:0}.data-loader{position:absolute;right:0;left:0;bottom:12px}.selected-items-container{overflow:hidden;border-radius:8px;top:0;bottom:0;position:absolute;max-width:calc(100% - 60px);left:6px;margin:8px;align-items:center}.selected-items-container .selected-items__item{background:var(--blue-card);color:var(--font-light-black-color);padding:4px;border-radius:8px;display:flex;gap:4px;align-items:center}.selected-items-container .selected-items__item:hover{background:var(--light-green-color);color:var(--font-light-black-color)}.selected-items-container .selected-items__item-title{white-space:nowrap}\n"] }]
3819
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"lib-select\" id=\"lib-select-{{ selectId }}\" [destroyedItem]=\"isShownList\" ddFixedPosition>\n @if (label) {\n <label [for]=\"id\" class=\"lib-select__title\">\n {{ label }}\n @if (required) {\n <dd-lib-svg-icon icon=\"error_hint\"></dd-lib-svg-icon>\n }\n </label>\n }\n\n <div class=\"pos-relative\" data-child=\"input\">\n <input\n #select\n (change)=\"handleChange()\"\n (click)=\"notifyFocusEvent()\"\n (input)=\"handleInput($event)\"\n (blur)=\"handleBlur()\"\n (focus)=\"handleFocus()\"\n [attr.id]=\"selectId\"\n [attr.placeholder]=\"(multiCountValue || searchValue) ? '' : placeholder\"\n [attr.tabIndex]=\"tabIndex\"\n [attr.type]=\"'text'\"\n [class.focused]=\"focused\"\n [class.invalid]=\"showError\"\n [disabled]=\"disabled\"\n [readOnly]=\"true\"\n [(ngModel)]=\"inputValue\"\n [title]=\"inputValue || ''\"\n class=\"text-select select-block\" />\n\n @if (multiCountValue) {\n <div class=\"selected-items-container\" id=\"selected-{{selectId}}\">\n <dd-lib-horizontal-scroll>\n @for (item of checkedItems; track item) {\n <div class=\"selected-items__item\">\n @if (stringArray()) {\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"selected-items__item-title\"></div>\n }\n @if (keyTitle && !stringArray()) {\n <div\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"selected-items__item-title\"></div>\n }\n @if (keyDesc && !stringArray()) {\n <div\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n [title]=\"item[keyDesc]\"\n class=\"selected-items__item-desc\"></div>\n }\n <dd-lib-svg-icon id=\"selected-clear-{{selectId}}\" icon=\"clear\" class=\"cup\"\n (click)=\"selectItem(item);deleteMultiItem.emit(item)\"></dd-lib-svg-icon>\n </div>\n }\n </dd-lib-horizontal-scroll>\n </div>\n }\n\n @if (!checkedItem) {\n <dd-lib-svg-icon\n (click)=\"notifyFocusEvent()\"\n [class.black-svg]=\"isShownList\"\n [class.disabled]=\"disabled\"\n [class.gray-svg]=\"!isShownList\"\n [class.up]=\"isShownList\"\n id=\"chevron-{{ selectId }}\" class=\"chevron\" icon=\"down_chevron\"></dd-lib-svg-icon>\n } @else if (clearable && !searchValue) {\n <dd-lib-svg-icon\n (click)=\"onClear(checkedItem)\"\n class=\"clear\"\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\n }\n </div>\n\n @if (errorTexts.length && showError) {\n @for (error of errorTexts; track error) {\n <div class=\"lib-select__error\">{{ error }}</div>\n }\n }\n @if (errorText && showSelfError && showError) {\n <div class=\"lib-select__error\">{{ errorText }}</div>\n }\n\n @if (isShownList) {\n <div\n id=\"dropdown\"\n [style.max-height]=\"searchOn ? '342px' : '300px'\"\n data-child=\"list\"\n (ddClickOutside)=\"notifyFocusEvent();fullBlur.emit($event)\"\n [elements]=\"['lib-select-' + selectId, 'chevron-' + selectId, 'selected-' + selectId, 'selected-clear-' + selectId]\"\n ddListKeyboardNavigation\n class=\"select-list-wrapper\">\n @if (initialized) {\n @if (!_data()?.length && noDataError) {\n <div class=\"info-container\">\n <div class=\"b2-title no-wrap-text\">\n {{ noDataError }}\n </div>\n </div>\n }\n\n @if (_data()?.length && _data()!.length > 5 && searchOn) {\n <div class=\"search-block\">\n <dd-lib-svg-icon class=\"search-icon\" id=\"chevron-{{ selectId }}\" icon=\"search\"></dd-lib-svg-icon>\n <input class=\"search-block__input\" #searchInputEl [attr.name]=\"name\"\n [readOnly]=\"readOnly\"\n (input)=\"searchInput()\"\n [placeholder]=\"searchPlaceholder\"\n (blur)=\"handleBlur()\"\n (focus)=\"handleFocus()\"\n [(ngModel)]=\"searchValue\" type=\"text\">\n <dd-lib-svg-icon\n [style.display]=\"searchValue ? 'block' : 'none'\"\n class=\"cup\"\n (click)=\"searchValue=''\"\n id=\"chevron-{{ selectId }}\" icon=\"clear\"></dd-lib-svg-icon>\n </div>\n }\n\n @if (_data()?.length && (_data() | filterByKey: filterList.bind(this))?.length === 0) {\n <div class=\"info-container\">\n <div class=\"b2-title no-wrap-text\">\n \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\n </div>\n </div>\n }\n\n @if (virtualScroll) {\n <cdk-virtual-scroll-viewport [itemSize]=\"itemSize\" [style.height]=\"(_data()?.length || 0) * itemSize + 'px'\">\n <div *cdkVirtualFor=\"let item of _data() | filterByKey: filterList.bind(this)\">\n <ng-container [ngTemplateOutlet]=\"itemsList\" [ngTemplateOutletContext]=\"{items: [item]}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n <ng-container [ngTemplateOutlet]=\"itemsList\" [ngTemplateOutletContext]=\"{items: _data() | filterByKey: filterList.bind(this)}\"></ng-container>\n }\n } @else {\n <div class=\"info-container\">\n <div class=\"d-flex gap-12 align-center\">\n <div class=\"b2-title no-wrap-text\">\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445</div>\n <dd-lib-loader></dd-lib-loader>\n </div>\n </div>\n }\n </div>\n }\n</div>\n\n<ng-template #rowItem let-item=\"item\">\n <div ddSelectableItem [ddTooltip]=\"item.tooltip ? item.tooltip : ''\" [position]=\"tooltipPosition\"\n (click)=\"selectItem(item)\"\n (itemSelected)=\"selectItem(item)\"\n [class.s-item-active]=\"checkSelected(item) && !item.disabled\"\n [class.s-item-disabled]=\"item.disabled\"\n class=\"select-data\">\n @if (stringArray()) {\n <div [innerHTML]=\"item | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"select-data__title\"></div>\n }\n @if (keyTitle && !stringArray()) {\n <div\n [innerHTML]=\"item[keyTitle!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n class=\"select-data__title\"></div>\n }\n @if (keyDesc && !stringArray()) {\n <div\n [innerHTML]=\"item[keyDesc!] | highlight: (highlight ? searchValue : '') | safe: 'html'\"\n [title]=\"item[keyDesc]\"\n class=\"select-data__desc\"></div>\n }\n @if (checkSelected(item)) {\n <dd-lib-svg-icon\n (click)=\"selectItem(checkedItem)\"\n class=\"checked\"\n id=\"chevron-{{ selectId }}\" icon=\"check_green\"></dd-lib-svg-icon>\n }\n </div>\n</ng-template>\n\n<ng-template #itemsList let-items=\"items\">\n @for (item of items | filterByKey: filterList.bind(this); track item) {\n @if (isGroup(item)) {\n <div class=\"group-header\" [class.select-all-enabled]=\"selectAllInGroup\"\n (click)=\"selectAllInGroup ? handleGroupClick(item) : null\">\n <div class=\"group-title\">{{ getGroupTitle(item) }}</div>\n @if (isGroupSelected(item)) {\n <dd-lib-svg-icon\n [class.checked]=\"isGroupSelected(item)\"\n icon=\"check_green\"></dd-lib-svg-icon>\n }\n </div>\n <div class=\"group-items\">\n @for (child of item[keyGroupChildren] | filterByKey: filterList.bind(this); track child) {\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item: child}\"></ng-container>\n }\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"rowItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n }\n }\n</ng-template>\n", styles: [".lib-select{position:relative}.lib-select .select-block{width:100%;height:48px;padding:15px 28px 15px 16px;overflow:hidden;text-overflow:ellipsis;border-radius:8px;border:1px solid var(--input-border-color);background-color:transparent;position:relative}.lib-select .select-block:hover{border-color:var(--input-active-border-colort)}.lib-select .select-block:hover~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:focus{border-color:var(--input-active-border-colort);box-shadow:var(--input-active-border-shadow)}.lib-select .select-block:focus~.selected-items-container .selected-items__item{background:var(--light-green-color);color:var(--font-light-black-color)}.lib-select .select-block:disabled{border:none;background-color:var(--input-disable-input);color:var(--input-disable-text);pointer-events:none}.lib-select .select-block:disabled::placeholder{color:var(--input-placeholder)}.lib-select .select-block:disabled~.selected-items-container .selected-items__item{background:var(--gray-blue-300);color:var(--second-gray-color)}.lib-select .select-block.invalid,.lib-select .select-block.invalid:hover{border-color:var(--input-error-border-color)}.lib-select .select-block.invalid:focus{border-color:var(--input-error-border-color);box-shadow:var(--input-error-border-shadow)}.lib-select .select-block:invalid~.selected-items-container .selected-items__item{background:var(--red-light-color);color:var(--font-light-black-color)}.lib-select .multi-count{position:absolute;top:10px;right:42px;white-space:nowrap}.lib-select .clear{cursor:pointer;position:absolute;right:8px;top:12px}.lib-select .chevron{cursor:pointer;position:absolute;right:16px;top:10px}.lib-select .chevron.up{transform:rotate(180deg)}.lib-select__title{margin-bottom:4px;font-size:14px;line-height:24px;display:flex;align-items:flex-start;color:var(--light-black-color)}.lib-select__error{color:var(--primary-red-color);font-size:12px;font-weight:400;line-height:10px;margin-top:2px;position:absolute}.lib-select .select-list-wrapper{position:absolute;display:block;z-index:100;width:100%;max-height:300px;overflow:auto;border-radius:8px;box-shadow:var(--main-card-shadow);background-color:var(--main-card-color)}.lib-select .select-list-wrapper cdk-virtual-scroll-viewport{max-height:300px}.lib-select .select-list-wrapper.top{bottom:50px;top:unset}.lib-select .select-list-wrapper .select-data{padding:12px 42px 12px 16px;cursor:pointer;position:relative;min-height:40px}.lib-select .select-list-wrapper .select-data__desc{font-size:14px;font-weight:400;line-height:24px;text-overflow:ellipsis;text-wrap:nowrap;padding-top:2px;overflow:hidden;color:var(--second-gray-color)}.lib-select .select-list-wrapper .select-data.key-down-active,.lib-select .select-list-wrapper .select-data:hover,.lib-select .select-list-wrapper .select-data.s-item-active{background:var(--select-act-hov-bgc)}.lib-select .select-list-wrapper .select-data.s-item-active .checked{position:absolute;right:16px;top:10px}.lib-select .select-list-wrapper .select-data.s-item-disabled{cursor:auto;background:var(--disabled-bgc);color:var(--disabled-color)}.lib-select .select-list-wrapper .group-items{padding-left:16px}.lib-select .select-list-wrapper .group-items .select-data{margin-left:-16px;padding-left:32px}.lib-select .select-list-wrapper .select-no-data{padding:12px 42px 12px 16px;cursor:auto;position:relative;color:var(--disabled-color)}.lib-select .select-list-wrapper .info-container{padding:36px;display:flex;align-items:center;justify-content:center}.search-block{position:relative;padding:12px;z-index:1;display:flex;gap:4px;align-items:center;border-bottom:1px solid var(--gray-bgc)}.search-block__input{border:none;background:transparent;width:100%;padding-left:40px}.search-block .search-icon{position:absolute;left:20px;top:0;bottom:0}.data-loader{position:absolute;right:0;left:0;bottom:12px}.selected-items-container{overflow:hidden;border-radius:8px;top:0;bottom:0;position:absolute;max-width:calc(100% - 60px);left:6px;margin:8px;align-items:center}.selected-items-container .selected-items__item{background:var(--blue-card);color:var(--font-light-black-color);padding:4px;border-radius:8px;display:flex;gap:4px;align-items:center}.selected-items-container .selected-items__item:hover{background:var(--light-green-color);color:var(--font-light-black-color)}.selected-items-container .selected-items__item-title{white-space:nowrap}.group-header{height:48px;padding:8px 16px;font-weight:600;color:var(--font-light-black-color);border-bottom:1px solid var(--gray-bgc);display:flex;justify-content:space-between;align-items:center}.group-header.select-all-enabled{cursor:pointer}.group-header.select-all-enabled:hover{background-color:var(--gray-color-300)}.group-title{flex-grow:1}\n"] }]
3754
3820
  }], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i0.ChangeDetectorRef }, { type: i1$4.ControlContainer, decorators: [{
3755
3821
  type: Optional
3756
3822
  }, {
@@ -3791,10 +3857,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
3791
3857
  type: Input
3792
3858
  }], placeholder: [{
3793
3859
  type: Input
3860
+ }], keyGroupTitle: [{
3861
+ type: Input
3862
+ }], keyGroupChildren: [{
3863
+ type: Input
3864
+ }], selectAllInGroup: [{
3865
+ type: Input
3794
3866
  }], selectedItem: [{
3795
3867
  type: Output
3796
3868
  }], selectedItems: [{
3797
3869
  type: Output
3870
+ }], deleteMultiItem: [{
3871
+ type: Output
3798
3872
  }] } });
3799
3873
 
3800
3874
  const DefaultSort = [
@@ -3984,14 +4058,17 @@ class LibTabsFragmentComponent {
3984
4058
  const activeFragment = window.location.hash.split('#')[1];
3985
4059
  this.activeFragment = this.tabs?.[0]?.id || 0;
3986
4060
  if (this.tabsFragment?.includes(activeFragment)) {
3987
- this.activeFragment = this.tabs?.find(f => f.fragment === activeFragment)?.id;
4061
+ this.activeFragment = this.tabs?.length ? this.tabs.find(f => f.fragment === activeFragment)?.id : 0;
3988
4062
  if (this.needInitEvent) {
3989
4063
  this.setActiveTab.emit(this.activeFragment);
3990
4064
  }
3991
4065
  }
3992
4066
  else if (this.needInitEvent) {
3993
- this.setActiveTab.emit(this.activeFragment);
4067
+ if (this.noFragment && this.tabs?.[0].path) {
4068
+ this.activeFragment = this.tabs?.length ? this.tabs.find(f => (this.rout ? this.rout + '/' : '/') + f.path === this.location.path())?.id : 0;
4069
+ }
3994
4070
  }
4071
+ this.setActiveTab.emit(this.activeFragment);
3995
4072
  }
3996
4073
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: LibTabsFragmentComponent, deps: [{ token: i1$2.Location }, { token: i2.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3997
4074
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: LibTabsFragmentComponent, isStandalone: true, selector: "dd-lib-tabs-fragment", inputs: { rout: "rout", tabs: "tabs", tabsFragment: "tabsFragment", needInitEvent: "needInitEvent", noFragment: "noFragment" }, outputs: { setActiveTab: "setActiveTab" }, ngImport: i0, template: "@if (tabs?.length) {\r\n<div class=\"tabs-fragment\">\r\n <swiper-container speed=\"500\" slides-per-view=\"auto\">\r\n @for (tab of tabs; track tab) {\r\n <swiper-slide>\r\n <div class=\"tabs-fragment__item\"\r\n [class.active]=\"tab.id === activeFragment\"\r\n (click)=\"checkActiveTab(tab)\">\r\n {{ tab.title }}\r\n </div>\r\n </swiper-slide>\r\n }\r\n </swiper-container>\r\n</div>\r\n}\r\n", styles: [".tabs-fragment__item{display:inline-block;padding:0 8px 16px;font-size:16px;line-height:24px;color:var(--menu-item-color);border-bottom:1px solid var(--disabled-bgc);cursor:pointer}.tabs-fragment__item:hover,.tabs-fragment__item.active{color:var(--primary-green-color)}.tabs-fragment__item.active{padding-bottom:15px;border-width:2px;border-color:var(--primary-green-color);cursor:default}.tabs-fragment swiper-slide{width:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -5269,5 +5346,5 @@ const t = true;
5269
5346
  * Generated bundle index. Do not edit.
5270
5347
  */
5271
5348
 
5272
- export { API_URL, AutoHeightDirective, ClickOutsideDirective, CounterDirective, DDDialogRef, DEFAULT_FORMAT, DIALOG_CONFIG, DataEmptyComponent, DateService, Debounce, DeclensionDirective, DestroyService, DialogConfig, DialogService, DisableAfterNCall, Disabled, DropDownPositionDirective, ErrorPageComponent, FetcherService, FilterByKeyPipe, FilterPipe, FilterTabsPipe, FixedPositionDirective, FooterComponent, FooterLinkComponent, FooterLinksBlockComponent, HighlightPipe, ITab, InterceptorsService, LibAccordionComponent, LibBackButtonComponent, LibButtonComponent, LibCalendarComponent, LibCardComponent, LibCheckboxComponent, LibCommentInputComponent, LibCommonButtonComponent, LibCommonInputTextComponent, LibDateInputComponent, LibDateRangeComponent, LibDisclaimerComponent, LibFileLoaderComponent, LibFileUploadComponent, LibFilterButtonComponent, LibFilterComponent, LibHorizontalScrollComponent, LibImageLoaderComponent, LibInfoCardComponent, LibInputComponent, LibLoaderComponent, LibPeriodComponent, LibRadioComponent, LibSearchInputComponent, LibSelectComponent, LibSkeletonComponent, LibSortComponent, LibStepComponent, LibSvgComponent, LibSvgIconComponent, LibSvgViewerComponent, LibTabsFragmentComponent, LibTextareaComponent, ListKeyboardNavigationDirective, MainSharedComponent, ModalBaseComponent, ModalCommonComponent, NotFoundComponent, PhoneMaskDirective, ResizeTextareaDirective, ReversePipe, SafePipe, SelectableItemDirective, SvgIconsService, TOAST_CONFIG_TOKEN, TOOLTIP_DATA, TechWorksComponent, ThemeConfigurator, ThemeConstructorService, Throttle, ToastComponent, ToastConfig, ToastData, ToastRef, ToastService, ToastTypeData, TooltipComponent, TooltipDirective, TriangleDirective, ValidatorsService, completeIconSet, defaultToastConfig, provideToast, svgIconActogoneAccept, svgIconAll, svgIconAppgalery, svgIconAppstore, svgIconArrowDownRed, svgIconArrowUpGreen, svgIconBackArrow, svgIconBurger, svgIconCalendar, svgIconCheckGreen, svgIconCheckWhite, svgIconCircleNo, svgIconClear, svgIconClose, svgIconDangerT, svgIconDd, svgIconDdM, svgIconDobrodel, svgIconDownChevron, svgIconDownload, svgIconEds, svgIconEds2, svgIconEds2M, svgIconEdsM, svgIconEntry, svgIconErrorHint, svgIconEsia, svgIconEye, svgIconEyeOff, svgIconFile, svgIconFilter, svgIconGoogleapp, svgIconGrid, svgIconHealth, svgIconHealthM, svgIconInfoCircle, svgIconInfoT, svgIconLeftChevron, svgIconListSearch, svgIconLogout, svgIconMailExclamation, svgIconMaxFilter, svgIconMoon, svgIconMy, svgIconMyM, svgIconNews, svgIconNext, svgIconPaperclip, svgIconPenEdit, svgIconPguMo, svgIconPguMoM, svgIconPlug, svgIconPlugD, svgIconPlus, svgIconPreset, svgIconPrev, svgIconPrint, svgIconPrinter, svgIconQuestion, svgIconQuestionWhiteG, svgIconRedClose, svgIconReload, svgIconRightChevron, svgIconRustore, svgIconSearch, svgIconSend, svgIconSetAvatar, svgIconSharedLogo, svgIconSmallRoundLoader, svgIconSort, svgIconStar, svgIconSuccessT, svgIconSun, svgIconTg, svgIconToggleArrowLeft, svgIconToggleArrowRight, svgIconTrash, svgIconTrophy, svgIconUser, svgIconUserEmpty, svgIconUserEmptyD, svgIconVk, svgIconWarningT, t };
5349
+ export { API_URL, AutoHeightDirective, ClickOutsideDirective, CounterDirective, DDDialogRef, DEFAULT_FORMAT, DIALOG_CONFIG, DataEmptyComponent, DateService, Debounce, DeclensionDirective, DestroyService, DialogConfig, DialogService, DisableAfterNCall, Disabled, DropDownPositionDirective, ErrorPageComponent, FetcherService, FilterByKeyPipe, FilterPipe, FixedPositionDirective, FooterComponent, FooterLinkComponent, FooterLinksBlockComponent, HighlightPipe, ITab, InterceptorsService, LibAccordionComponent, LibBackButtonComponent, LibButtonComponent, LibCalendarComponent, LibCardComponent, LibCheckboxComponent, LibCommentInputComponent, LibCommonButtonComponent, LibCommonInputTextComponent, LibDateInputComponent, LibDateRangeComponent, LibDisclaimerComponent, LibFileLoaderComponent, LibFileUploadComponent, LibFilterButtonComponent, LibFilterComponent, LibHorizontalScrollComponent, LibImageLoaderComponent, LibInfoCardComponent, LibInputComponent, LibLoaderComponent, LibPeriodComponent, LibRadioComponent, LibSearchInputComponent, LibSelectComponent, LibSkeletonComponent, LibSortComponent, LibStepComponent, LibSvgComponent, LibSvgIconComponent, LibSvgViewerComponent, LibTabsFragmentComponent, LibTextareaComponent, ListKeyboardNavigationDirective, MainSharedComponent, ModalBaseComponent, ModalCommonComponent, NotFoundComponent, PhoneMaskDirective, ResizeTextareaDirective, ReversePipe, SafePipe, SelectableItemDirective, SvgIconsService, TOAST_CONFIG_TOKEN, TOOLTIP_DATA, TechWorksComponent, ThemeConfigurator, ThemeConstructorService, Throttle, ToastComponent, ToastConfig, ToastData, ToastRef, ToastService, ToastTypeData, TooltipComponent, TooltipDirective, TriangleDirective, ValidatorsService, completeIconSet, defaultToastConfig, provideToast, svgIconActogoneAccept, svgIconAll, svgIconAppgalery, svgIconAppstore, svgIconArrowDownRed, svgIconArrowUpGreen, svgIconBackArrow, svgIconBurger, svgIconCalendar, svgIconCheckGreen, svgIconCheckWhite, svgIconCircleNo, svgIconClear, svgIconClose, svgIconDangerT, svgIconDd, svgIconDdM, svgIconDobrodel, svgIconDownChevron, svgIconDownload, svgIconEds, svgIconEds2, svgIconEds2M, svgIconEdsM, svgIconEntry, svgIconErrorHint, svgIconEsia, svgIconEye, svgIconEyeOff, svgIconFile, svgIconFilter, svgIconGoogleapp, svgIconGrid, svgIconHealth, svgIconHealthM, svgIconInfoCircle, svgIconInfoT, svgIconLeftChevron, svgIconListSearch, svgIconLogout, svgIconMailExclamation, svgIconMaxFilter, svgIconMoon, svgIconMy, svgIconMyM, svgIconNews, svgIconNext, svgIconPaperclip, svgIconPenEdit, svgIconPguMo, svgIconPguMoM, svgIconPlug, svgIconPlugD, svgIconPlus, svgIconPreset, svgIconPrev, svgIconPrint, svgIconPrinter, svgIconQuestion, svgIconQuestionWhiteG, svgIconRedClose, svgIconReload, svgIconRightChevron, svgIconRustore, svgIconSearch, svgIconSend, svgIconSetAvatar, svgIconSharedLogo, svgIconSmallRoundLoader, svgIconSort, svgIconStar, svgIconSuccessT, svgIconSun, svgIconTg, svgIconToggleArrowLeft, svgIconToggleArrowRight, svgIconTrash, svgIconTrophy, svgIconUser, svgIconUserEmpty, svgIconUserEmptyD, svgIconVk, svgIconWarningT, t };
5273
5350
  //# sourceMappingURL=morozeckiy-dd-lib.mjs.map