@c10t/nice-component-library 0.0.12 → 0.0.16

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.
@@ -18,7 +18,7 @@ import * as i4 from '@angular/material/input';
18
18
  import { MAT_INPUT_VALUE_ACCESSOR, MatInputModule } from '@angular/material/input';
19
19
  import * as i8 from '@angular/flex-layout/flex';
20
20
  import * as i3$1 from 'ngx-toastr';
21
- import { BehaviorSubject, Subject, of, forkJoin, throwError } from 'rxjs';
21
+ import { BehaviorSubject, Subject, of, forkJoin, debounceTime, distinctUntilChanged, filter, tap, switchMap, throwError } from 'rxjs';
22
22
  import * as i5 from '@angular/material/table';
23
23
  import { MatTableDataSource, MatTableModule } from '@angular/material/table';
24
24
  import * as i1$4 from '@angular/router';
@@ -46,19 +46,21 @@ import * as i10 from '@angular/cdk/scrolling';
46
46
  import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
47
47
  import * as i9$1 from '@angular/material/select';
48
48
  import { MatSelectModule } from '@angular/material/select';
49
- import * as i3$2 from '@angular/material/card';
49
+ import * as i3$2 from '@angular/material/autocomplete';
50
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
51
+ import * as i7$1 from '@angular/material/progress-spinner';
52
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
53
+ import * as i3$3 from '@angular/material/card';
50
54
  import { MatCardModule } from '@angular/material/card';
51
- import * as i3$3 from '@angular/material/progress-bar';
55
+ import * as i3$4 from '@angular/material/progress-bar';
52
56
  import { MatProgressBarModule } from '@angular/material/progress-bar';
53
- import * as i4$3 from '@angular/material/progress-spinner';
54
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
55
57
  import { NestedTreeControl, FlatTreeControl, CdkTreeModule, CdkTree, CdkTreeNode } from '@angular/cdk/tree';
56
58
  import * as i6$1 from '@angular/material/tree';
57
59
  import { MatTreeNestedDataSource, MatTreeFlattener, MatTreeFlatDataSource, MatTreeModule } from '@angular/material/tree';
58
- import * as i4$4 from '@angular/material/radio';
60
+ import * as i4$3 from '@angular/material/radio';
59
61
  import { MatRadioModule } from '@angular/material/radio';
60
62
  import * as i6$2 from '@angular/material/divider';
61
- import * as i4$5 from 'ngx-quill';
63
+ import * as i4$4 from 'ngx-quill';
62
64
  import { QuillModule } from 'ngx-quill';
63
65
  import * as i1$6 from 'jsog-typescript';
64
66
  import { OverlayModule } from '@angular/cdk/overlay';
@@ -76,7 +78,6 @@ import { MatChipsModule } from '@angular/material/chips';
76
78
  import { MatSnackBarModule } from '@angular/material/snack-bar';
77
79
  import { MatTabsModule } from '@angular/material/tabs';
78
80
  import { MatToolbarModule } from '@angular/material/toolbar';
79
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
80
81
  import { MatSortModule } from '@angular/material/sort';
81
82
  import { MatStepperModule } from '@angular/material/stepper';
82
83
  import { ScrollingModule as ScrollingModule$1 } from '@angular/cdk-experimental/scrolling';
@@ -154,6 +155,7 @@ var ColumnTypeEnum;
154
155
  ColumnTypeEnum["INPUT"] = "INPUT";
155
156
  ColumnTypeEnum["LINK"] = "LINK";
156
157
  ColumnTypeEnum["STYLE_CSS"] = "STYLE_CSS";
158
+ ColumnTypeEnum["LIVE_SEARCHING"] = "LIVE_SEARCHING";
157
159
  })(ColumnTypeEnum || (ColumnTypeEnum = {}));
158
160
 
159
161
  var AlignEnum;
@@ -196,6 +198,10 @@ class ColumnModel {
196
198
  footer;
197
199
  footers = [];
198
200
  button;
201
+ // Dùng cho cva-live-searching
202
+ displayKey;
203
+ mappingConfig = {};
204
+ searchFn;
199
205
  title = (e) => `${e}`;
200
206
  cell = (e) => `${e}`;
201
207
  }
@@ -238,6 +244,15 @@ class OAuth2AuthenticationDto {
238
244
  userAuthentication = null;
239
245
  authorities = null;
240
246
  name = null;
247
+ orgId = null;
248
+ orgCode = null;
249
+ orgName = null;
250
+ orgType = null;
251
+ orgForm = null;
252
+ orgPath = null;
253
+ orgIsApproveVo = null;
254
+ sapId = null;
255
+ voAuthentication = null;
241
256
  }
242
257
 
243
258
  class Authority {
@@ -1611,6 +1626,13 @@ class ValidatorService {
1611
1626
  }
1612
1627
  return validationFns;
1613
1628
  }
1629
+ static generateNsAutocompleteValidators(conditions) {
1630
+ const validationFns = [];
1631
+ if (conditions.required) {
1632
+ validationFns.push(Validators.required);
1633
+ }
1634
+ return validationFns;
1635
+ }
1614
1636
  static getMinMaxDynamic(minOrMax) {
1615
1637
  return minOrMax !== null ? typeof (minOrMax) === 'function' ? minOrMax() : minOrMax : null;
1616
1638
  }
@@ -3939,19 +3961,13 @@ class CvaMultiSelectAutocomplete {
3939
3961
  valueOptionRef = [];
3940
3962
  // Chỉ bằng false khi trong NsSmartTable thôi nhé @@
3941
3963
  isFormControl = true;
3964
+ searchInputRef;
3942
3965
  // Cái này là để gắn khi nó là FormControl trong 1 FormGroup
3943
3966
  formControl;
3944
3967
  filteredOptions = [];
3945
3968
  selectAllChecked = false;
3946
- _displayString = '';
3947
- get displayString() {
3948
- return this._displayString;
3949
- }
3950
3969
  labelCount = 1;
3951
3970
  cdkVirtualScrollViewPort;
3952
- get NsValidator() {
3953
- return ValidatorService;
3954
- }
3955
3971
  constructor(translateService, injector, ngControl) {
3956
3972
  this.translateService = translateService;
3957
3973
  this.injector = injector;
@@ -3959,6 +3975,19 @@ class CvaMultiSelectAutocomplete {
3959
3975
  ngControl.valueAccessor = this;
3960
3976
  }
3961
3977
  }
3978
+ _displayString = '';
3979
+ get displayString() {
3980
+ return this._displayString;
3981
+ }
3982
+ get NsValidator() {
3983
+ return ValidatorService;
3984
+ }
3985
+ get selectedValue() {
3986
+ return this.value;
3987
+ }
3988
+ set selectedValue(val) {
3989
+ // this.writeValue(val); // Đọc comment bên dưới matSelectionChange
3990
+ }
3962
3991
  ngOnInit() {
3963
3992
  this.callValidator();
3964
3993
  }
@@ -3988,27 +4017,8 @@ class CvaMultiSelectAutocomplete {
3988
4017
  this.formControl.setValue(this.value);
3989
4018
  }
3990
4019
  this.formControl.updateValueAndValidity();
3991
- // const ngControl = this.injector.get(NgControl);
3992
- // if (ngControl && ngControl.control && this.formControl.errors) {
3993
- // ngControl.control.setErrors(this.formControl.errors);
3994
- // }
3995
- // if (this.formControl.valid) {
3996
- // if (this.getRequired()) {
3997
- // if (this.value === undefined || this.value === null || this.value === '' || (this.multiple && this.value.length === 0)){
3998
- // this.formControl.setErrors({required: true});
3999
- // }
4000
- // }
4001
- //
4002
- // this.formControl.markAllAsTouched();
4003
- // }
4004
4020
  }
4005
4021
  }
4006
- get selectedValue() {
4007
- return this.value;
4008
- }
4009
- set selectedValue(val) {
4010
- // this.writeValue(val); // Đọc comment bên dưới matSelectionChange
4011
- }
4012
4022
  propagateChange = (_) => {
4013
4023
  /*NON-EMPTY FOR COMPILE*/
4014
4024
  };
@@ -4034,16 +4044,7 @@ class CvaMultiSelectAutocomplete {
4034
4044
  this.selectedOptionDataChange.emit(this.valueOptionRef);
4035
4045
  }
4036
4046
  this._displayString = this.onDisplayString();
4037
- // console.log(this._displayString);
4038
- }
4039
- // private emitSelectedData(val: MatSelectChange) {
4040
- // if (val.value != null && val.value != undefined) {
4041
- // const dataArr: SelectModel[] = val.source._selectionModel.selected.map(matOption => {
4042
- // return this.options[Number(matOption._getHostElement().getAttribute('data-optionIndex'))];
4043
- // });
4044
- // this.selectedOptionDataChange.emit(dataArr);
4045
- // }
4046
- // }
4047
+ }
4047
4048
  registerOnChange(fn) {
4048
4049
  this.propagateChange = fn;
4049
4050
  }
@@ -4055,13 +4056,9 @@ class CvaMultiSelectAutocomplete {
4055
4056
  this.options = simpleChanges.options.currentValue;
4056
4057
  this.filteredOptions = this.options;
4057
4058
  }
4058
- // console.log('CvaMultiSelectAutocomplete - ngOnChanges: ', this.value, this.options);
4059
- if (this.value != null && this.value != undefined) {
4059
+ if (this.value != null) {
4060
4060
  this.writeValue(this.value);
4061
4061
  }
4062
- // else if (this.formControl.value) {
4063
- // this.writeValue(this.formControl.value);
4064
- // }
4065
4062
  }
4066
4063
  toggleSelectAll(val) {
4067
4064
  if (val.checked) {
@@ -4204,9 +4201,16 @@ class CvaMultiSelectAutocomplete {
4204
4201
  }
4205
4202
  }
4206
4203
  openChange($event) {
4207
- if ($event && this.cdkVirtualScrollViewPort) {
4208
- this.cdkVirtualScrollViewPort.scrollToIndex(0);
4209
- this.cdkVirtualScrollViewPort.checkViewportSize();
4204
+ if ($event) {
4205
+ if (this.cdkVirtualScrollViewPort) {
4206
+ this.cdkVirtualScrollViewPort.scrollToIndex(0);
4207
+ this.cdkVirtualScrollViewPort.checkViewportSize();
4208
+ }
4209
+ setTimeout(() => {
4210
+ if (this.searchInputRef?.nativeElement) {
4211
+ this.searchInputRef.nativeElement.focus();
4212
+ }
4213
+ }, 300);
4210
4214
  }
4211
4215
  }
4212
4216
  getItemSize() {
@@ -4218,7 +4222,7 @@ class CvaMultiSelectAutocomplete {
4218
4222
  return height > 200 ? 200 : height;
4219
4223
  }
4220
4224
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaMultiSelectAutocomplete, deps: [{ token: i1.TranslateService }, { token: i0.Injector }, { token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
4221
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: CvaMultiSelectAutocomplete, isStandalone: false, selector: "cva-multi-select-autocomplete", inputs: { placeholder: "placeholder", label: "label", hint: "hint", value: "value", options: "options", disabled: "disabled", errorMessages: "errorMessages", multiple: "multiple", required: "required", isTree: "isTree", treeSymbol: "treeSymbol", sizeOfItemsInListByPixels: "sizeOfItemsInListByPixels", isLabelOutside: "isLabelOutside", isFloatLabel: "isFloatLabel", percentOfLabelOutside: "percentOfLabelOutside", isFormControl: "isFormControl" }, outputs: { selectionChange: "selectionChange", selectedOptionDataChange: "selectedOptionDataChange" }, viewQueries: [{ propertyName: "cdkVirtualScrollViewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4225
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: CvaMultiSelectAutocomplete, isStandalone: false, selector: "cva-multi-select-autocomplete", inputs: { placeholder: "placeholder", label: "label", hint: "hint", value: "value", options: "options", disabled: "disabled", errorMessages: "errorMessages", multiple: "multiple", required: "required", isTree: "isTree", treeSymbol: "treeSymbol", sizeOfItemsInListByPixels: "sizeOfItemsInListByPixels", isLabelOutside: "isLabelOutside", isFloatLabel: "isFloatLabel", percentOfLabelOutside: "percentOfLabelOutside", isFormControl: "isFormControl" }, outputs: { selectionChange: "selectionChange", selectedOptionDataChange: "selectedOptionDataChange" }, viewQueries: [{ propertyName: "searchInputRef", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "cdkVirtualScrollViewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4222
4226
  <!-- css labelOutside trong base.theme-->
4223
4227
  <div class="cva-multi-select-autocomplete"
4224
4228
  [ngClass]="{'labelOutside': !!isLabelOutside, 'float_label': !!isFloatLabel && !isLabelOutside}"
@@ -4425,11 +4429,319 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
4425
4429
  type: Output
4426
4430
  }], isFormControl: [{
4427
4431
  type: Input
4432
+ }], searchInputRef: [{
4433
+ type: ViewChild,
4434
+ args: ['searchInput']
4428
4435
  }], cdkVirtualScrollViewPort: [{
4429
4436
  type: ViewChild,
4430
4437
  args: [CdkVirtualScrollViewport, { static: false }]
4431
4438
  }] } });
4432
4439
 
4440
+ class CvaLiveSearchingComponent {
4441
+ injector;
4442
+ label = '';
4443
+ placeholder = '';
4444
+ hint = '';
4445
+ required = false;
4446
+ disabled = false;
4447
+ readonly = false;
4448
+ errorMessages = new Map();
4449
+ isLabelOutside = false;
4450
+ isFloatLabel = true;
4451
+ percentOfLabelOutside = 25;
4452
+ suffixFontAwesomeClass = '';
4453
+ displayKey = '';
4454
+ mappingConfig = {};
4455
+ searchFn;
4456
+ onChange = new EventEmitter();
4457
+ // Chỉ bằng false khi trong NsSmartTable thôi nhé @@
4458
+ isFormControl = true;
4459
+ row;
4460
+ columnDef;
4461
+ control = undefined;
4462
+ textControl = new FormControl('');
4463
+ filteredOptions = [];
4464
+ selected;
4465
+ loading = false;
4466
+ searchSub;
4467
+ constructor(injector, ngControl) {
4468
+ this.injector = injector;
4469
+ if (ngControl) {
4470
+ // Hành động này thay cho provide: NG_VALUE_ACCESSOR và gắn ControlValueAccessor này vào parent FormControl
4471
+ ngControl.valueAccessor = this;
4472
+ }
4473
+ }
4474
+ get NsValidator() {
4475
+ return ValidatorService;
4476
+ }
4477
+ ngOnInit() {
4478
+ this.callValidator();
4479
+ this.textValueChangeSubscribe();
4480
+ if (!this.isFormControl && !!this.searchFn && this.row && this.columnDef) {
4481
+ this.writeValue(this.row[this.columnDef]);
4482
+ }
4483
+ }
4484
+ callValidator() {
4485
+ const ngControl = this.injector.get(NgControl);
4486
+ // Nếu parent FormControl khởi tạo xong và formControl chưa có giá trị lưu
4487
+ if (ngControl && !this.control) {
4488
+ // Nếu là NsSmartTable thì phải tự new FormControl còn không thì cứ hóng parent FormControl về ^^
4489
+ if (this.isFormControl) {
4490
+ this.control = ngControl.control ? ngControl.control : undefined;
4491
+ }
4492
+ else {
4493
+ this.control = new FormControl();
4494
+ }
4495
+ // Hành động này gắn validator vào this.formControl
4496
+ // - Nếu this.formControl là parent FormControl thì sẽ show error lên FormGroup
4497
+ // - Nếu this.formControl là new FormControl thì sẽ quét QueryList để check {errors}
4498
+ if (this.control) {
4499
+ if (this.control.validator) {
4500
+ this.control.setValidators([...ValidatorService.generateNsAutocompleteValidators({
4501
+ required: this.required,
4502
+ }), this.control.validator]);
4503
+ }
4504
+ else {
4505
+ this.control.setValidators([...ValidatorService.generateNsAutocompleteValidators({
4506
+ required: this.required,
4507
+ })]);
4508
+ }
4509
+ }
4510
+ }
4511
+ if (this.control) {
4512
+ // Nếu this.formControl thuộc NsSmartTable thì setValue lại
4513
+ if (!this.isFormControl) {
4514
+ this.control.setValue(this.selected);
4515
+ }
4516
+ // Nếu là parent FormControl rồi thì kệ
4517
+ this.control.updateValueAndValidity();
4518
+ }
4519
+ }
4520
+ propagateChange = (_) => {
4521
+ /*NON-EMPTY FOR COMPILE*/
4522
+ };
4523
+ /**
4524
+ * Set the function to be called
4525
+ * when the formControl receives a change event.
4526
+ */
4527
+ registerOnChange(fn) {
4528
+ this.propagateChange = fn;
4529
+ }
4530
+ /**
4531
+ * Set the function to be called
4532
+ * when the formControl receives a touch event.
4533
+ */
4534
+ registerOnTouched() {
4535
+ /*NON-EMPTY FOR COMPILE*/
4536
+ }
4537
+ /**
4538
+ * Write a new value to the element.
4539
+ */
4540
+ writeValue(obj) {
4541
+ if (!obj || typeof obj !== 'string') {
4542
+ this.selected = {};
4543
+ this.textControl.setValue('', { emitEvent: false });
4544
+ this.updateRowOrFormGroup();
4545
+ return;
4546
+ }
4547
+ const matched = this.filteredOptions.find(opt => {
4548
+ return JSON.stringify(opt[this.displayKey] ?? '') === JSON.stringify(obj ?? '');
4549
+ });
4550
+ if (!matched) {
4551
+ if (!this.searchFn) {
4552
+ return;
4553
+ }
4554
+ // Khi textValueChange chưa chạy không tìm thấy
4555
+ this.searchFn(obj).subscribe(values => {
4556
+ if (values && values.length > 0) {
4557
+ const emptyObj = {};
4558
+ emptyObj[this.displayKey] = '';
4559
+ this.filteredOptions = [emptyObj, ...values];
4560
+ this.onOptionSelect(obj);
4561
+ }
4562
+ });
4563
+ return;
4564
+ }
4565
+ this.selected = matched;
4566
+ this.textControl.setValue(matched[this.displayKey], { emitEvent: false });
4567
+ this.updateRowOrFormGroup();
4568
+ }
4569
+ onOptionSelect(displayValue) {
4570
+ this.searchSub?.unsubscribe();
4571
+ this.writeValue(displayValue);
4572
+ setTimeout(() => this.textValueChangeSubscribe(), 100);
4573
+ }
4574
+ textValueChangeSubscribe() {
4575
+ this.searchSub = this.textControl.valueChanges.pipe(debounceTime(300), distinctUntilChanged(), filter(text => typeof text === 'string' && text.trim().length > 0), tap(() => this.loading = true), switchMap((text) => {
4576
+ if (typeof text !== 'string' || !text || !text.trim())
4577
+ return of([]);
4578
+ return this.searchFn ? this.searchFn(text) : of([]);
4579
+ }), tap(() => this.loading = false)).subscribe((data) => {
4580
+ const emptyObj = {};
4581
+ emptyObj[this.displayKey] = '';
4582
+ this.filteredOptions = this.selected
4583
+ ? [this.selected, emptyObj, ...data.filter((x) => x[this.displayKey] !== this.selected[this.displayKey])]
4584
+ : data;
4585
+ });
4586
+ }
4587
+ updateRowOrFormGroup() {
4588
+ if (!this.isFormControl && this.row) {
4589
+ for (const targetKey in this.mappingConfig) {
4590
+ const sourceKey = this.mappingConfig[targetKey];
4591
+ this.row[targetKey] = this.selected[sourceKey];
4592
+ }
4593
+ }
4594
+ if (this.isFormControl && this.control?.parent) {
4595
+ for (const targetKey in this.mappingConfig) {
4596
+ const sourceKey = this.mappingConfig[targetKey];
4597
+ const formControl = this.control.parent.get(targetKey);
4598
+ if (formControl)
4599
+ formControl.setValue(this.selected[sourceKey]);
4600
+ }
4601
+ }
4602
+ this.propagateChange(this.selected[this.displayKey]);
4603
+ this.onChange.emit(this.selected[this.displayKey]);
4604
+ }
4605
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaLiveSearchingComponent, deps: [{ token: i0.Injector }, { token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
4606
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: CvaLiveSearchingComponent, isStandalone: false, selector: "cva-live-searching", inputs: { label: "label", placeholder: "placeholder", hint: "hint", required: "required", disabled: "disabled", readonly: "readonly", errorMessages: "errorMessages", isLabelOutside: "isLabelOutside", isFloatLabel: "isFloatLabel", percentOfLabelOutside: "percentOfLabelOutside", suffixFontAwesomeClass: "suffixFontAwesomeClass", displayKey: "displayKey", mappingConfig: "mappingConfig", searchFn: "searchFn", isFormControl: "isFormControl", row: "row", columnDef: "columnDef" }, outputs: { onChange: "onChange" }, ngImport: i0, template: `
4607
+ <div class="cva-live-searching"
4608
+ [ngClass]="{'labelOutside': !!isLabelOutside,
4609
+ 'float_label': !!isFloatLabel && !isLabelOutside}"
4610
+ fxLayout="row" fxLayout.lt-sm="row wrap">
4611
+ <mat-label *ngIf="isLabelOutside" class="label_width"
4612
+ fxLayout="column" fxFlex="auto" fxFlex.lt-md="100%">
4613
+ <div class="label">
4614
+ <div>
4615
+ {{ (label ? label : placeholder) | translate }}<span
4616
+ class="required-label-outside">{{ !!required ? '*' : '' }}</span>
4617
+ </div>
4618
+ </div>
4619
+ </mat-label>
4620
+ <mat-form-field appearance="outline" [floatLabel]="!!isFloatLabel ? 'always' : 'auto'"
4621
+ [hideRequiredMarker]="!isFloatLabel"
4622
+ fxLayout="column" fxFlex="auto" fxFlex.lt-md="100%">
4623
+ <mat-label *ngIf="!isLabelOutside && !!isFloatLabel">
4624
+ {{ (label ? label : placeholder) | translate }}
4625
+ </mat-label>
4626
+ <input type="text"
4627
+ matInput
4628
+ [required]="required"
4629
+ [disabled]="disabled"
4630
+ [placeholder]="placeholder"
4631
+ [formControl]="textControl"
4632
+ [matAutocomplete]="auto"
4633
+ readonly="{{readonly}}" />
4634
+ <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption
4635
+ (optionSelected)="onOptionSelect($event.option.value)">
4636
+ <mat-option *ngIf="loading" class="loading-option">
4637
+ <mat-spinner diameter="20"></mat-spinner>
4638
+ </mat-option>
4639
+ <mat-option *ngFor="let option of filteredOptions" [value]="option[displayKey]">
4640
+ {{ option[displayKey] }}
4641
+ </mat-option>
4642
+ </mat-autocomplete>
4643
+ <i *ngIf="!!suffixFontAwesomeClass" class="input-suffix {{suffixFontAwesomeClass}}" matSuffix></i>
4644
+ <mat-hint align="start" *ngIf="!NsValidator.invalid(control)">{{ hint | translate }}</mat-hint>
4645
+ <mat-hint style="color: red" align="start" *ngIf="NsValidator.invalid(control)">
4646
+ {{ NsValidator.getErrorMessageV1(control, errorMessages).msg | translate: NsValidator.getErrorMessageV1(control, errorMessages).params }}
4647
+ </mat-hint>
4648
+ </mat-form-field>
4649
+ </div>
4650
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i7$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
4651
+ }
4652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaLiveSearchingComponent, decorators: [{
4653
+ type: Component,
4654
+ args: [{
4655
+ selector: 'cva-live-searching',
4656
+ standalone: false,
4657
+ template: `
4658
+ <div class="cva-live-searching"
4659
+ [ngClass]="{'labelOutside': !!isLabelOutside,
4660
+ 'float_label': !!isFloatLabel && !isLabelOutside}"
4661
+ fxLayout="row" fxLayout.lt-sm="row wrap">
4662
+ <mat-label *ngIf="isLabelOutside" class="label_width"
4663
+ fxLayout="column" fxFlex="auto" fxFlex.lt-md="100%">
4664
+ <div class="label">
4665
+ <div>
4666
+ {{ (label ? label : placeholder) | translate }}<span
4667
+ class="required-label-outside">{{ !!required ? '*' : '' }}</span>
4668
+ </div>
4669
+ </div>
4670
+ </mat-label>
4671
+ <mat-form-field appearance="outline" [floatLabel]="!!isFloatLabel ? 'always' : 'auto'"
4672
+ [hideRequiredMarker]="!isFloatLabel"
4673
+ fxLayout="column" fxFlex="auto" fxFlex.lt-md="100%">
4674
+ <mat-label *ngIf="!isLabelOutside && !!isFloatLabel">
4675
+ {{ (label ? label : placeholder) | translate }}
4676
+ </mat-label>
4677
+ <input type="text"
4678
+ matInput
4679
+ [required]="required"
4680
+ [disabled]="disabled"
4681
+ [placeholder]="placeholder"
4682
+ [formControl]="textControl"
4683
+ [matAutocomplete]="auto"
4684
+ readonly="{{readonly}}" />
4685
+ <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption
4686
+ (optionSelected)="onOptionSelect($event.option.value)">
4687
+ <mat-option *ngIf="loading" class="loading-option">
4688
+ <mat-spinner diameter="20"></mat-spinner>
4689
+ </mat-option>
4690
+ <mat-option *ngFor="let option of filteredOptions" [value]="option[displayKey]">
4691
+ {{ option[displayKey] }}
4692
+ </mat-option>
4693
+ </mat-autocomplete>
4694
+ <i *ngIf="!!suffixFontAwesomeClass" class="input-suffix {{suffixFontAwesomeClass}}" matSuffix></i>
4695
+ <mat-hint align="start" *ngIf="!NsValidator.invalid(control)">{{ hint | translate }}</mat-hint>
4696
+ <mat-hint style="color: red" align="start" *ngIf="NsValidator.invalid(control)">
4697
+ {{ NsValidator.getErrorMessageV1(control, errorMessages).msg | translate: NsValidator.getErrorMessageV1(control, errorMessages).params }}
4698
+ </mat-hint>
4699
+ </mat-form-field>
4700
+ </div>
4701
+ `,
4702
+ }]
4703
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$2.NgControl, decorators: [{
4704
+ type: Self
4705
+ }, {
4706
+ type: Optional
4707
+ }] }], propDecorators: { label: [{
4708
+ type: Input
4709
+ }], placeholder: [{
4710
+ type: Input
4711
+ }], hint: [{
4712
+ type: Input
4713
+ }], required: [{
4714
+ type: Input
4715
+ }], disabled: [{
4716
+ type: Input
4717
+ }], readonly: [{
4718
+ type: Input
4719
+ }], errorMessages: [{
4720
+ type: Input
4721
+ }], isLabelOutside: [{
4722
+ type: Input
4723
+ }], isFloatLabel: [{
4724
+ type: Input
4725
+ }], percentOfLabelOutside: [{
4726
+ type: Input
4727
+ }], suffixFontAwesomeClass: [{
4728
+ type: Input
4729
+ }], displayKey: [{
4730
+ type: Input
4731
+ }], mappingConfig: [{
4732
+ type: Input
4733
+ }], searchFn: [{
4734
+ type: Input
4735
+ }], onChange: [{
4736
+ type: Output
4737
+ }], isFormControl: [{
4738
+ type: Input
4739
+ }], row: [{
4740
+ type: Input
4741
+ }], columnDef: [{
4742
+ type: Input
4743
+ }] } });
4744
+
4433
4745
  class CvaSmartTableComponent {
4434
4746
  ref;
4435
4747
  config;
@@ -4804,6 +5116,8 @@ class CvaSmartTableComponent {
4804
5116
  [isFormControl]="false"
4805
5117
  [disabled]="column.disabled ? column.disabled(result) : false"
4806
5118
  [text]="result[column.columnDef]"
5119
+ [minLength]="column.min ? column.min(result) : undefined"
5120
+ [maxLength]="column.max ? column.max(result) : undefined"
4807
5121
  [required]="getRequired(column)"
4808
5122
  [errorMessages]="getErrorMessageMap(column)"
4809
5123
  (onChange)="onCellValueChange(result, column, $event);">
@@ -4840,6 +5154,15 @@ class CvaSmartTableComponent {
4840
5154
  (change)="toggleSelect($event,result, column)">
4841
5155
  </mat-checkbox>
4842
5156
  </div>
5157
+ <cva-live-searching *ngSwitchCase="ColumnTypes.LIVE_SEARCHING"
5158
+ [isFormControl]="false" [required]="getRequired(column)"
5159
+ [row]="result" [columnDef]="column.columnDef"
5160
+ [searchFn]="column.searchFn"
5161
+ [mappingConfig]="column.mappingConfig"
5162
+ [displayKey]="column.displayKey"
5163
+ [errorMessages]="getErrorMessageMap(column)"
5164
+ (onChange)="onCellValueChange(result, column, $event)">
5165
+ </cva-live-searching>
4843
5166
  </td>
4844
5167
  </ng-container>
4845
5168
  </ng-container>
@@ -4920,7 +5243,7 @@ class CvaSmartTableComponent {
4920
5243
  </ng-container>
4921
5244
  </table>
4922
5245
  </div>
4923
- `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i5.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i5.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1$4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: CvaInputComponent, selector: "cva-input", inputs: ["label", "name", "placeholder", "hint", "required", "disabled", "text", "type", "pattern", "readonly", "errorMessages", "multiline", "isLabelOutside", "isFloatLabel", "minLength", "maxLength", "maxLengthDisplay", "percentOfLabelOutside", "suffixFontAwesomeClass", "patternFilter", "isFormControl", "formatFunc"], outputs: ["onChange"] }, { kind: "component", type: CvaCounterInputComponent, selector: "cva-counter-input", inputs: ["label", "placeholder", "suffixText", "hint", "value", "disabled", "required", "errorMessages", "min", "max", "error", "isDecimal", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "alignNumber", "isFormControl"], outputs: ["onChange", "onEnter"] }, { kind: "component", type: CvaDatePickerComponent, selector: "cva-date-picker", inputs: ["label", "placeholder", "value", "disabled", "required", "minDate", "maxDate", "errorMessages", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "isFormControl"], outputs: ["onChange"] }, { kind: "component", type: CvaMultiSelectAutocomplete, selector: "cva-multi-select-autocomplete", inputs: ["placeholder", "label", "hint", "value", "options", "disabled", "errorMessages", "multiple", "required", "isTree", "treeSymbol", "sizeOfItemsInListByPixels", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "isFormControl"], outputs: ["selectionChange", "selectedOptionDataChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SecureImgPipe, name: "secure" }] });
5246
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i5.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i5.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1$4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: CvaInputComponent, selector: "cva-input", inputs: ["label", "name", "placeholder", "hint", "required", "disabled", "text", "type", "pattern", "readonly", "errorMessages", "multiline", "isLabelOutside", "isFloatLabel", "minLength", "maxLength", "maxLengthDisplay", "percentOfLabelOutside", "suffixFontAwesomeClass", "patternFilter", "isFormControl", "formatFunc"], outputs: ["onChange"] }, { kind: "component", type: CvaCounterInputComponent, selector: "cva-counter-input", inputs: ["label", "placeholder", "suffixText", "hint", "value", "disabled", "required", "errorMessages", "min", "max", "error", "isDecimal", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "alignNumber", "isFormControl"], outputs: ["onChange", "onEnter"] }, { kind: "component", type: CvaDatePickerComponent, selector: "cva-date-picker", inputs: ["label", "placeholder", "value", "disabled", "required", "minDate", "maxDate", "errorMessages", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "isFormControl"], outputs: ["onChange"] }, { kind: "component", type: CvaMultiSelectAutocomplete, selector: "cva-multi-select-autocomplete", inputs: ["placeholder", "label", "hint", "value", "options", "disabled", "errorMessages", "multiple", "required", "isTree", "treeSymbol", "sizeOfItemsInListByPixels", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "isFormControl"], outputs: ["selectionChange", "selectedOptionDataChange"] }, { kind: "component", type: CvaLiveSearchingComponent, selector: "cva-live-searching", inputs: ["label", "placeholder", "hint", "required", "disabled", "readonly", "errorMessages", "isLabelOutside", "isFloatLabel", "percentOfLabelOutside", "suffixFontAwesomeClass", "displayKey", "mappingConfig", "searchFn", "isFormControl", "row", "columnDef"], outputs: ["onChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SecureImgPipe, name: "secure" }] });
4924
5247
  }
4925
5248
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaSmartTableComponent, decorators: [{
4926
5249
  type: Component,
@@ -5026,6 +5349,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
5026
5349
  [isFormControl]="false"
5027
5350
  [disabled]="column.disabled ? column.disabled(result) : false"
5028
5351
  [text]="result[column.columnDef]"
5352
+ [minLength]="column.min ? column.min(result) : undefined"
5353
+ [maxLength]="column.max ? column.max(result) : undefined"
5029
5354
  [required]="getRequired(column)"
5030
5355
  [errorMessages]="getErrorMessageMap(column)"
5031
5356
  (onChange)="onCellValueChange(result, column, $event);">
@@ -5062,6 +5387,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
5062
5387
  (change)="toggleSelect($event,result, column)">
5063
5388
  </mat-checkbox>
5064
5389
  </div>
5390
+ <cva-live-searching *ngSwitchCase="ColumnTypes.LIVE_SEARCHING"
5391
+ [isFormControl]="false" [required]="getRequired(column)"
5392
+ [row]="result" [columnDef]="column.columnDef"
5393
+ [searchFn]="column.searchFn"
5394
+ [mappingConfig]="column.mappingConfig"
5395
+ [displayKey]="column.displayKey"
5396
+ [errorMessages]="getErrorMessageMap(column)"
5397
+ (onChange)="onCellValueChange(result, column, $event)">
5398
+ </cva-live-searching>
5065
5399
  </td>
5066
5400
  </ng-container>
5067
5401
  </ng-container>
@@ -5791,7 +6125,7 @@ class CvaMultiUploadComponent {
5791
6125
  <mat-error *ngIf="typeError!==null">{{ typeError + ' ' + ('common.is.not-accept' | translate) }}</mat-error>
5792
6126
  </div>
5793
6127
  </div>
5794
- `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: DragDropDirective, selector: "[appDragDrop]", outputs: ["onFileDropped"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
6128
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$3.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: DragDropDirective, selector: "[appDragDrop]", outputs: ["onFileDropped"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
5795
6129
  }
5796
6130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaMultiUploadComponent, decorators: [{
5797
6131
  type: Component,
@@ -6209,7 +6543,7 @@ class CvaUploadFileComponent {
6209
6543
  <mat-error *ngIf="isRectangleError">{{ ('common.error.image.rectangle' | translate) }}</mat-error>
6210
6544
  </div>
6211
6545
  </div>
6212
- `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: DragDropDirective, selector: "[appDragDrop]", outputs: ["onFileDropped"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SecureImgPipe, name: "secure" }] });
6546
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$3.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: DragDropDirective, selector: "[appDragDrop]", outputs: ["onFileDropped"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SecureImgPipe, name: "secure" }] });
6213
6547
  }
6214
6548
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaUploadFileComponent, decorators: [{
6215
6549
  type: Component,
@@ -6520,7 +6854,7 @@ class CvaLoaderComponent {
6520
6854
  </div>
6521
6855
  <img *ngIf="!!imgSrc" [src]="imgSrc" alt=""/>
6522
6856
  </div>
6523
- `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
6857
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
6524
6858
  }
6525
6859
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaLoaderComponent, decorators: [{
6526
6860
  type: Component,
@@ -6985,7 +7319,7 @@ class CvaRadiobuttonComponent {
6985
7319
  <mat-hint align="start" *ngIf="NsValidator.invalid(control)">{{NsValidator.getErrorMessage(control, errorMessages) | translate}}</mat-hint>
6986
7320
  </div>
6987
7321
  </div>
6988
- `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$4.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$4.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
7322
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
6989
7323
  }
6990
7324
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaRadiobuttonComponent, decorators: [{
6991
7325
  type: Component,
@@ -7381,6 +7715,7 @@ class CvaFlatTreeComponent {
7381
7715
  isFormControl = true;
7382
7716
  // Cái này là để gắn khi nó là FormControl trong 1 FormGroup
7383
7717
  formControl;
7718
+ mapIndexes = new Map();
7384
7719
  chooseVirtualScroll;
7385
7720
  selectedVirtualScroll;
7386
7721
  constructor(translateService, injector, cdr, ngControl) {
@@ -7425,9 +7760,6 @@ class CvaFlatTreeComponent {
7425
7760
  ngAfterViewInit() {
7426
7761
  // this.onChangeSearchText();
7427
7762
  }
7428
- trackByValue(index, node) {
7429
- return node.value;
7430
- }
7431
7763
  getDisplayInputFunc(node) {
7432
7764
  return typeof (node._displayFuncInput) === 'function' ? node._displayFuncInput(node) : !!node._displayFuncInput;
7433
7765
  }
@@ -7550,17 +7882,31 @@ class CvaFlatTreeComponent {
7550
7882
  this.propagateChange(fn);
7551
7883
  }
7552
7884
  writeValue(obj) {
7885
+ // if (this.multiple && !obj) {
7886
+ // obj = [];
7887
+ // }
7553
7888
  if (obj) {
7889
+ // if (this.multiple) {
7554
7890
  this.value = obj;
7891
+ // }
7892
+ console.log('writeValue_0: ', new Date());
7893
+ this.mapIndexes = new Map();
7894
+ for (let i = 0; i < this.fullDataTreeControl.dataNodes.length; i++) {
7895
+ this.mapIndexes.set(this.fullDataTreeControl.dataNodes[i].value, i);
7896
+ }
7897
+ console.log('writeValue_1: ', new Date());
7555
7898
  this.checkedDefaultValue();
7899
+ console.log('writeValue_2: ', new Date());
7556
7900
  this.updateSelectAll();
7901
+ console.log('writeValue_3: ', new Date());
7557
7902
  this.updateSelectedTree();
7903
+ console.log('writeValue_4: ', new Date());
7558
7904
  this.propagateChange(this.value);
7559
7905
  this.callValidator();
7560
7906
  if (this.isView) {
7561
- requestAnimationFrame(() => this.selectedTreeControl.expandAll());
7907
+ this.selectedTreeControl.expandAll();
7562
7908
  }
7563
- this.cdr.detectChanges();
7909
+ console.log('writeValue_5: ', new Date());
7564
7910
  this.selectionChange.emit(Array.from(this.valueObjRef.values()));
7565
7911
  }
7566
7912
  }
@@ -7571,42 +7917,22 @@ class CvaFlatTreeComponent {
7571
7917
  this.expandTreeDataSource(this.selectedTreeControl, 'isExpanded');
7572
7918
  }
7573
7919
  checkedDefaultValue() {
7574
- const selectedSet = new Set(this.value);
7575
- const selectedNodes = [];
7920
+ this.valueObjRef.clear();
7921
+ const valueSet = new Set(this.value);
7576
7922
  for (const node of this.fullDataTreeControl.dataNodes) {
7577
7923
  const isLeaf = !FlatTreeService.hasChild(node);
7578
- node.checked = selectedSet.has(node.value);
7924
+ node.checked = isLeaf && valueSet.has(node.value);
7579
7925
  if (isLeaf && node.checked) {
7580
7926
  this.valueObjRef.set(node.value, node);
7581
- selectedNodes.push(node);
7582
7927
  }
7583
- else if (isLeaf && !node.checked && this.valueObjRef.has(node.value)) {
7584
- this.valueObjRef.delete(node.value);
7585
- }
7586
- }
7587
- this.bulkSelectedTreeChange(selectedNodes);
7588
- }
7589
- bulkSelectedTreeChange(nodes) {
7590
- const selectedRoot = new Set();
7591
- for (const node of nodes) {
7592
- if (node.level < 1) {
7593
- this.selectedFullValues.set(node.value, node.value);
7594
- this.selectedTreeControl.expandDescendants(node);
7595
- }
7596
- else {
7597
- const rootNode = this.getRootNode(node);
7598
- if (rootNode && !selectedRoot.has(rootNode.value)) {
7599
- this.selectedFullValues.set(rootNode.value, rootNode.value);
7600
- if (rootNode.checked) {
7601
- this.selectedTreeControl.expandDescendants(rootNode);
7602
- }
7603
- selectedRoot.add(rootNode.value);
7604
- }
7928
+ const orgNodeIndex = this.mapIndexes.get(node.value);
7929
+ if (orgNodeIndex !== undefined) {
7930
+ this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = node.checked;
7605
7931
  }
7606
7932
  }
7607
7933
  }
7608
7934
  getAllChildNode(treeControl, node) {
7609
- const index = treeControl.dataNodes.findIndex(n => node.value === n.value);
7935
+ const index = this.mapIndexes.get(node.value);
7610
7936
  let sameLevelNextIndex = -1;
7611
7937
  for (let i = index + 1; i < treeControl.dataNodes.length; i++) {
7612
7938
  if (node.level >= treeControl.dataNodes[i].level) {
@@ -7631,7 +7957,7 @@ class CvaFlatTreeComponent {
7631
7957
  node.checked = checked;
7632
7958
  let indexLeaf = -1;
7633
7959
  // update origin node
7634
- let orgNodeIndex = this.fullDataTreeControl.dataNodes.findIndex(n => n.value === node.value);
7960
+ let orgNodeIndex = this.mapIndexes.get(node.value);
7635
7961
  /*this.getNodeInFullDataSource(child)*/
7636
7962
  this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
7637
7963
  if (orgNodeIndex > -1 && !checked) {
@@ -7658,7 +7984,7 @@ class CvaFlatTreeComponent {
7658
7984
  }
7659
7985
  }
7660
7986
  else {
7661
- orgNodeIndex = this.fullDataTreeControl.dataNodes.findIndex(n => n.value === child.value);
7987
+ orgNodeIndex = this.mapIndexes.get(child.value);
7662
7988
  if (orgNodeIndex > -1) {
7663
7989
  this.fullDataTreeControl.dataNodes[orgNodeIndex].isExpanded = false;
7664
7990
  this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = this.fullDataTreeControl.dataNodes[orgNodeIndex].children?.every(n => n.checked);
@@ -7707,7 +8033,7 @@ class CvaFlatTreeComponent {
7707
8033
  if ((node.display && !this.checkDisabledNode(node)) || !!isSelectedChange) {
7708
8034
  node.checked = checked;
7709
8035
  // update origin node
7710
- const orgNodeIndex = this.fullDataTreeControl.dataNodes.findIndex(n => n.value === node.value);
8036
+ const orgNodeIndex = this.mapIndexes.get(node.value);
7711
8037
  this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
7712
8038
  if (checked) {
7713
8039
  if (this.multiple) {
@@ -7883,6 +8209,50 @@ class CvaFlatTreeComponent {
7883
8209
  this.checkParentNode(true, node);
7884
8210
  }
7885
8211
  }
8212
+ toggleNodeCheck(node, checked) {
8213
+ const isLeaf = !FlatTreeService.hasChild(node);
8214
+ console.log('1: ', new Date());
8215
+ // Gọi 1 lần duy nhất nếu là parent
8216
+ const descendants = isLeaf ? [] : this.fullDataTreeControl.getDescendants(node);
8217
+ const affectedNodes = isLeaf ? [node] : descendants.filter(n => !FlatTreeService.hasChild(n));
8218
+ console.log('2: ', new Date());
8219
+ for (const leaf of affectedNodes) {
8220
+ if (!leaf.display || this.checkDisabledNode(leaf))
8221
+ continue;
8222
+ const index = this.value.indexOf(leaf.value);
8223
+ if (checked && index < 0) {
8224
+ this.value.push(leaf.value);
8225
+ this.valueObjRef.set(leaf.value, leaf);
8226
+ leaf.checked = true;
8227
+ }
8228
+ if (!checked && index >= 0) {
8229
+ this.value.splice(index, 1);
8230
+ this.valueObjRef.delete(leaf.value);
8231
+ leaf.checked = false;
8232
+ }
8233
+ const orgNodeIndex = this.mapIndexes.get(leaf.value);
8234
+ if (orgNodeIndex !== undefined) {
8235
+ this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = leaf.checked;
8236
+ }
8237
+ }
8238
+ console.log('3: ', new Date());
8239
+ // Nếu node là cha → cập nhật isExpanded
8240
+ if (!isLeaf) {
8241
+ node.checked = checked;
8242
+ const orgNodeIndex = this.mapIndexes.get(node.value);
8243
+ if (orgNodeIndex !== undefined) {
8244
+ this.fullDataTreeControl.dataNodes[orgNodeIndex].checked = checked;
8245
+ this.fullDataTreeControl.dataNodes[orgNodeIndex].isExpanded = false;
8246
+ }
8247
+ }
8248
+ else {
8249
+ node.checked = checked;
8250
+ }
8251
+ console.log('4: ', new Date());
8252
+ this.writeValue(this.value);
8253
+ console.log('5: ', new Date());
8254
+ this.cdr.detectChanges();
8255
+ }
7886
8256
  _getLevel = (node) => node.level;
7887
8257
  _isExpandable = (node) => FlatTreeService.hasChild(node);
7888
8258
  _getChildren = (node) => of(node.children ? node.children : []);
@@ -7925,7 +8295,7 @@ class CvaFlatTreeComponent {
7925
8295
  </div>
7926
8296
  <cdk-virtual-scroll-viewport #chooseAreaScrollViewport itemSize="{{itemSize}}"
7927
8297
  [ngStyle]="{height: viewHeight + 'px'}">
7928
- <ng-container *cdkVirtualFor="let node of dataSource; trackBy: trackByValue">
8298
+ <ng-container *cdkVirtualFor="let node of dataSource">
7929
8299
  <cva-flat-tree-node-left [style.padding-left]="node.level * paddingLeft + 'px'"
7930
8300
  [attr.aria-level]="node.level"
7931
8301
  [treeControl]="treeControl"
@@ -7934,8 +8304,8 @@ class CvaFlatTreeComponent {
7934
8304
  (toggle)="toggleTreeControl(treeControl, node)"
7935
8305
  (onParentNodeClick)="onParentNodeClick(node)"
7936
8306
  (onLeafNodeClick)="onLeafNodeClick(node)"
7937
- (ngModelParentChange)="checkParentNode($event, node)"
7938
- (ngModelLeafChange)="checkLeafNode($event, node)">
8307
+ (ngModelParentChange)="toggleNodeCheck(node, $event)"
8308
+ (ngModelLeafChange)="toggleNodeCheck(node, $event)">
7939
8309
  </cva-flat-tree-node-left>
7940
8310
  </ng-container>
7941
8311
  </cdk-virtual-scroll-viewport>
@@ -7953,7 +8323,7 @@ class CvaFlatTreeComponent {
7953
8323
  <cdk-virtual-scroll-viewport #selectedScrollViewport
7954
8324
  *ngIf="!isCollapseSelected"
7955
8325
  itemSize="{{itemSize}}" [ngStyle]="{height: viewHeight + 'px'}">
7956
- <ng-container *cdkVirtualFor="let node of selectedDataSource; trackBy: trackByValue">
8326
+ <ng-container *cdkVirtualFor="let node of selectedDataSource">
7957
8327
  <cva-flat-tree-node-right [style.padding-left]="node.level * paddingLeft + 'px'"
7958
8328
  [attr.aria-level]="node.level"
7959
8329
  [treeControl]="selectedTreeControl"
@@ -8017,7 +8387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
8017
8387
  </div>
8018
8388
  <cdk-virtual-scroll-viewport #chooseAreaScrollViewport itemSize="{{itemSize}}"
8019
8389
  [ngStyle]="{height: viewHeight + 'px'}">
8020
- <ng-container *cdkVirtualFor="let node of dataSource; trackBy: trackByValue">
8390
+ <ng-container *cdkVirtualFor="let node of dataSource">
8021
8391
  <cva-flat-tree-node-left [style.padding-left]="node.level * paddingLeft + 'px'"
8022
8392
  [attr.aria-level]="node.level"
8023
8393
  [treeControl]="treeControl"
@@ -8026,8 +8396,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
8026
8396
  (toggle)="toggleTreeControl(treeControl, node)"
8027
8397
  (onParentNodeClick)="onParentNodeClick(node)"
8028
8398
  (onLeafNodeClick)="onLeafNodeClick(node)"
8029
- (ngModelParentChange)="checkParentNode($event, node)"
8030
- (ngModelLeafChange)="checkLeafNode($event, node)">
8399
+ (ngModelParentChange)="toggleNodeCheck(node, $event)"
8400
+ (ngModelLeafChange)="toggleNodeCheck(node, $event)">
8031
8401
  </cva-flat-tree-node-left>
8032
8402
  </ng-container>
8033
8403
  </cdk-virtual-scroll-viewport>
@@ -8045,7 +8415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
8045
8415
  <cdk-virtual-scroll-viewport #selectedScrollViewport
8046
8416
  *ngIf="!isCollapseSelected"
8047
8417
  itemSize="{{itemSize}}" [ngStyle]="{height: viewHeight + 'px'}">
8048
- <ng-container *cdkVirtualFor="let node of selectedDataSource; trackBy: trackByValue">
8418
+ <ng-container *cdkVirtualFor="let node of selectedDataSource">
8049
8419
  <cva-flat-tree-node-right [style.padding-left]="node.level * paddingLeft + 'px'"
8050
8420
  [attr.aria-level]="node.level"
8051
8421
  [treeControl]="selectedTreeControl"
@@ -8510,7 +8880,7 @@ class CvaQuillEditorComponent {
8510
8880
  </mat-hint>
8511
8881
  </div>
8512
8882
  </div>
8513
- `, isInline: true, styles: [".cva-quill-editor{margin-bottom:1rem}.cva-quill-editor .required-label-outside{color:red}.cva-quill-editor .ql-container.ql-snow{height:100px;overflow-y:auto}.cva-quill-editor #counter{border:1px solid #ccc;border-width:0px 1px 1px 1px;color:#aaa;padding:5px 15px;text-align:right}.cva-quill-editor quill-editor{margin-bottom:0!important;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i4$5.QuillEditorComponent, selector: "quill-editor" }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i9.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
8883
+ `, isInline: true, styles: [".cva-quill-editor{margin-bottom:1rem}.cva-quill-editor .required-label-outside{color:red}.cva-quill-editor .ql-container.ql-snow{height:100px;overflow-y:auto}.cva-quill-editor #counter{border:1px solid #ccc;border-width:0px 1px 1px 1px;color:#aaa;padding:5px 15px;text-align:right}.cva-quill-editor quill-editor{margin-bottom:0!important;word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i4$4.QuillEditorComponent, selector: "quill-editor" }, { kind: "directive", type: i8.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i9.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i9.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
8514
8884
  }
8515
8885
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: CvaQuillEditorComponent, decorators: [{
8516
8886
  type: Component,
@@ -8657,14 +9027,14 @@ class LoaderInterceptor {
8657
9027
  this.loaderService.isLoading.next(this.requests.length > 0);
8658
9028
  }
8659
9029
  intercept(request, next) {
8660
- if (!request.headers.get('is_image')) {
9030
+ if (!request.headers.get('is_image') && !request.headers.get('is_live_searching')) {
8661
9031
  this.requests.push(request);
8662
9032
  // console.log('LoaderInterceptor: wait for ' + this.requests.length + 'requests');
8663
9033
  this.loaderService.isLoading.next(true);
8664
9034
  }
8665
9035
  else {
8666
9036
  request = request.clone({
8667
- headers: request.headers.delete('is_image'),
9037
+ headers: request.headers.delete('is_image').delete('is_live_searching'),
8668
9038
  });
8669
9039
  }
8670
9040
  return next.handle(request).pipe(map((event) => {
@@ -8943,10 +9313,11 @@ class NiceComponentLibraryModule {
8943
9313
  CvaDialogImportFileComponent,
8944
9314
  BaseSearchComponent,
8945
9315
  BaseAddEditComponent,
8946
- CvaQuillEditorComponent], imports: [CommonModule,
9316
+ CvaQuillEditorComponent,
9317
+ CvaLiveSearchingComponent], imports: [CommonModule,
8947
9318
  FormsModule,
8948
9319
  ReactiveFormsModule,
8949
- AngularMaterialModule, i1$4.RouterModule, i1.TranslateModule, i4$5.QuillModule, FlexLayoutModule], exports: [CvaTableComponent,
9320
+ AngularMaterialModule, i1$4.RouterModule, i1.TranslateModule, i4$4.QuillModule, FlexLayoutModule], exports: [CvaTableComponent,
8950
9321
  CvaSmartTableComponent,
8951
9322
  CvaInputComponent,
8952
9323
  CvaCounterInputComponent,
@@ -8972,7 +9343,8 @@ class NiceComponentLibraryModule {
8972
9343
  CvaDialogImportFileComponent,
8973
9344
  BaseSearchComponent,
8974
9345
  BaseAddEditComponent,
8975
- CvaQuillEditorComponent] });
9346
+ CvaQuillEditorComponent,
9347
+ CvaLiveSearchingComponent] });
8976
9348
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NiceComponentLibraryModule, imports: [CommonModule,
8977
9349
  FormsModule,
8978
9350
  ReactiveFormsModule,
@@ -9024,6 +9396,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
9024
9396
  BaseSearchComponent,
9025
9397
  BaseAddEditComponent,
9026
9398
  CvaQuillEditorComponent,
9399
+ CvaLiveSearchingComponent,
9027
9400
  ],
9028
9401
  exports: [
9029
9402
  CvaTableComponent,
@@ -9053,6 +9426,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
9053
9426
  BaseSearchComponent,
9054
9427
  BaseAddEditComponent,
9055
9428
  CvaQuillEditorComponent,
9429
+ CvaLiveSearchingComponent,
9056
9430
  ],
9057
9431
  schemas: [
9058
9432
  NO_ERRORS_SCHEMA,
@@ -9069,5 +9443,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
9069
9443
  * Generated bundle index. Do not edit.
9070
9444
  */
9071
9445
 
9072
- export { ActionTypeEnum, AlignEnum, ApiService, AuthoritiesResolverService, AuthoritiesService, Authority, BaseAddEditComponent, BaseModel, BaseSearchComponent, BaseStatusEnum, BaseTableComponent, BreadCrumbModel, ButtonClickEvent, ButtonModel, CheckboxModel, ColumnModel, ColumnTypeEnum, CustomDialogDataConfigModel, CvaBreadcrumbComponent, CvaCounterInputComponent, CvaCustomDialogComponent, CvaDatePickerComponent, CvaDialogImportFileComponent, CvaFlatTreeComponent, CvaFlatTreeNodeLeftComponent, CvaFlatTreeNodeRightComponent, CvaInputComponent, CvaLoaderComponent, CvaMultiSelectAutocomplete, CvaMultiUploadComponent, CvaMultiUploadImgComponent, CvaQuillEditorComponent, CvaRadiobuttonComponent, CvaRangeDatePickerComponent, CvaSmartTableComponent, CvaTableComponent, CvaTreeComponent, CvaUploadFileComponent, DateUtilService, DialogImportFileConfigModel, DialogTypeEnum, DragDropDirective, FileTypeEnum, FlatTreeConfigModel, FlatTreeModel, FlatTreeNodeModel, FormStateService, FormatInputDirective, IconTypeEnum, InjectTokenNextSolutionsConfig, JsogHttpInterceptor, LoaderInterceptor, LoaderService, MenuModel, MultiTranslateHttpLoader, NavigatorModel, NiceComponentLibraryModule, OAuth2AuthenticationDto, PatternDirective, PermissionModel, Principal, RangeDatePickerModel, RoleModel, SecureImgPipe, SelectModel, SingletonTranslateService, StylePaginatorDirective, TableFooterModel, TablePagingRequestModel, TablePagingResponseModel, TableService, UIState, UploadModel, UtilsService, ValidatorService };
9446
+ export { ActionTypeEnum, AlignEnum, ApiService, AuthoritiesResolverService, AuthoritiesService, Authority, BaseAddEditComponent, BaseModel, BaseSearchComponent, BaseStatusEnum, BaseTableComponent, BreadCrumbModel, ButtonClickEvent, ButtonModel, CheckboxModel, ColumnModel, ColumnTypeEnum, CustomDialogDataConfigModel, CvaBreadcrumbComponent, CvaCounterInputComponent, CvaCustomDialogComponent, CvaDatePickerComponent, CvaDialogImportFileComponent, CvaFlatTreeComponent, CvaFlatTreeNodeLeftComponent, CvaFlatTreeNodeRightComponent, CvaInputComponent, CvaLiveSearchingComponent, CvaLoaderComponent, CvaMultiSelectAutocomplete, CvaMultiUploadComponent, CvaMultiUploadImgComponent, CvaQuillEditorComponent, CvaRadiobuttonComponent, CvaRangeDatePickerComponent, CvaSmartTableComponent, CvaTableComponent, CvaTreeComponent, CvaUploadFileComponent, DateUtilService, DialogImportFileConfigModel, DialogTypeEnum, DragDropDirective, FileTypeEnum, FlatTreeConfigModel, FlatTreeModel, FlatTreeNodeModel, FormStateService, FormatInputDirective, IconTypeEnum, InjectTokenNextSolutionsConfig, JsogHttpInterceptor, LoaderInterceptor, LoaderService, MenuModel, MultiTranslateHttpLoader, NavigatorModel, NiceComponentLibraryModule, OAuth2AuthenticationDto, PatternDirective, PermissionModel, Principal, RangeDatePickerModel, RoleModel, SecureImgPipe, SelectModel, SingletonTranslateService, StylePaginatorDirective, TableFooterModel, TablePagingRequestModel, TablePagingResponseModel, TableService, UIState, UploadModel, UtilsService, ValidatorService };
9073
9447
  //# sourceMappingURL=c10t-nice-component-library.mjs.map