valtech-components 2.0.398 → 2.0.400
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.
- package/esm2022/lib/components/molecules/action-header/types.mjs +1 -1
- package/esm2022/lib/components/molecules/command-display/types.mjs +1 -1
- package/esm2022/lib/components/molecules/content-loader/types.mjs +1 -1
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +1 -1
- package/esm2022/lib/components/molecules/info/types.mjs +1 -1
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +302 -296
- package/esm2022/lib/components/molecules/pill/types.mjs +1 -1
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +1 -1
- package/esm2022/lib/components/organisms/form/form.component.mjs +6 -3
- package/esm2022/lib/components/types.mjs +1 -1
- package/fesm2022/valtech-components.mjs +307 -296
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/action-header/types.d.ts +2 -2
- package/lib/components/molecules/info/types.d.ts +4 -4
- package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +32 -32
- package/lib/components/molecules/pill/types.d.ts +1 -1
- package/lib/components/organisms/article/article.component.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, ChangeDetectorRef, HostListener, Pipe, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, ChangeDetectorRef, HostListener, Pipe, ChangeDetectionStrategy, ViewChild, forwardRef } from '@angular/core';
|
|
3
3
|
import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonModal, IonHeader, IonToolbar, IonContent, IonButtons, IonTitle, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonTextarea, IonDatetime, IonDatetimeButton, IonInput, IonSelect, IonSelectOption, IonLabel, IonRadioGroup, IonRadio, IonSearchbar, IonMenuButton, IonFooter, IonList, IonListHeader, IonNote, IonItem } from '@ionic/angular/standalone';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule, NgStyle, Location, AsyncPipe, NgFor, NgClass } from '@angular/common';
|
|
@@ -10,7 +10,7 @@ import { Router, RouterLink } from '@angular/router';
|
|
|
10
10
|
import { Browser } from '@capacitor/browser';
|
|
11
11
|
import * as i1$1 from '@angular/platform-browser';
|
|
12
12
|
import * as i1$2 from '@angular/forms';
|
|
13
|
-
import { ReactiveFormsModule, FormsModule, Validators } from '@angular/forms';
|
|
13
|
+
import { ReactiveFormsModule, FormsModule, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
14
14
|
import { map as map$1 } from 'rxjs/operators';
|
|
15
15
|
import * as i1$3 from 'ng-otp-input';
|
|
16
16
|
import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
|
|
@@ -7517,351 +7517,361 @@ class MultiSelectSearchComponent {
|
|
|
7517
7517
|
constructor() {
|
|
7518
7518
|
this.labelProperty = 'name';
|
|
7519
7519
|
this.valueProperty = 'id';
|
|
7520
|
+
this.placeholder = '';
|
|
7520
7521
|
this.langService = inject(LangService);
|
|
7521
|
-
this.icon = inject(IconService);
|
|
7522
7522
|
this.changeDetector = inject(ChangeDetectorRef);
|
|
7523
|
+
// Component state
|
|
7524
|
+
this.isOpen = false;
|
|
7523
7525
|
this.searchTerm = '';
|
|
7524
|
-
this.
|
|
7525
|
-
this.selectedItems = [];
|
|
7526
|
+
this.selectedValues = [];
|
|
7526
7527
|
this.displayValue = '';
|
|
7527
|
-
this.
|
|
7528
|
-
this.
|
|
7529
|
-
|
|
7528
|
+
this.filteredOptions = [];
|
|
7529
|
+
this.searchPlaceholder = '';
|
|
7530
|
+
// ControlValueAccessor
|
|
7531
|
+
this.onChange = (_value) => { };
|
|
7532
|
+
this.onTouched = () => { };
|
|
7530
7533
|
this.placeholder = this.langService.getText('_global', 'selectOptions', 'Seleccione opciones');
|
|
7534
|
+
this.searchPlaceholder = this.langService.getText('_global', 'search', 'Buscar');
|
|
7535
|
+
// Close dropdown when clicking outside
|
|
7536
|
+
document.addEventListener('click', this.handleClickOutside.bind(this));
|
|
7531
7537
|
}
|
|
7532
7538
|
ngOnInit() {
|
|
7533
7539
|
this.applyDefaultValue();
|
|
7534
|
-
this.
|
|
7535
|
-
this.
|
|
7540
|
+
this.initializeOptions();
|
|
7541
|
+
this.syncSelectedValues();
|
|
7536
7542
|
this.updateDisplayValue();
|
|
7537
|
-
this.subscribeToValueChanges();
|
|
7538
7543
|
}
|
|
7539
7544
|
ngOnDestroy() {
|
|
7540
|
-
|
|
7541
|
-
this.valueChangesSubscription.unsubscribe();
|
|
7542
|
-
}
|
|
7545
|
+
document.removeEventListener('click', this.handleClickOutside.bind(this));
|
|
7543
7546
|
}
|
|
7544
7547
|
ngOnChanges(changes) {
|
|
7545
|
-
if (this.
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
if (changes['props']) {
|
|
7549
|
-
try {
|
|
7550
|
-
this.isProcessingChanges = true;
|
|
7551
|
-
if (this.valueChangesSubscription) {
|
|
7552
|
-
this.valueChangesSubscription.unsubscribe();
|
|
7553
|
-
}
|
|
7554
|
-
if (this.props?.options) {
|
|
7555
|
-
const optionsChanged = !this.areOptionsEqual(this.previousOptions, this.props.options);
|
|
7556
|
-
if (optionsChanged) {
|
|
7557
|
-
this.previousOptions = [...this.props.options];
|
|
7558
|
-
this.initializeItems();
|
|
7559
|
-
}
|
|
7560
|
-
}
|
|
7561
|
-
this.syncControlValueWithSelectedItems();
|
|
7562
|
-
this.updateDisplayValue();
|
|
7563
|
-
this.subscribeToValueChanges();
|
|
7564
|
-
}
|
|
7565
|
-
finally {
|
|
7566
|
-
this.isProcessingChanges = false;
|
|
7567
|
-
}
|
|
7568
|
-
}
|
|
7569
|
-
}
|
|
7570
|
-
ionViewWillEnter() {
|
|
7571
|
-
if (this.isProcessingChanges) {
|
|
7572
|
-
return;
|
|
7573
|
-
}
|
|
7574
|
-
try {
|
|
7575
|
-
this.isProcessingChanges = true;
|
|
7576
|
-
this.initializeItems();
|
|
7577
|
-
this.syncControlValueWithSelectedItems();
|
|
7548
|
+
if (changes['props'] && this.props) {
|
|
7549
|
+
this.initializeOptions();
|
|
7550
|
+
this.syncSelectedValues();
|
|
7578
7551
|
this.updateDisplayValue();
|
|
7579
|
-
this.
|
|
7580
|
-
}
|
|
7581
|
-
finally {
|
|
7582
|
-
this.isProcessingChanges = false;
|
|
7552
|
+
this.changeDetector.detectChanges();
|
|
7583
7553
|
}
|
|
7584
7554
|
}
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
this.
|
|
7589
|
-
|
|
7590
|
-
return;
|
|
7591
|
-
try {
|
|
7592
|
-
this.isProcessingChanges = true;
|
|
7593
|
-
this.syncControlValueWithSelectedItems();
|
|
7594
|
-
this.updateDisplayValue();
|
|
7595
|
-
}
|
|
7596
|
-
finally {
|
|
7597
|
-
this.isProcessingChanges = false;
|
|
7598
|
-
}
|
|
7599
|
-
});
|
|
7555
|
+
// ControlValueAccessor implementation
|
|
7556
|
+
writeValue(value) {
|
|
7557
|
+
const valueArray = this.parseValue(value);
|
|
7558
|
+
this.selectedValues = valueArray;
|
|
7559
|
+
this.updateDisplayValue();
|
|
7600
7560
|
}
|
|
7601
|
-
|
|
7602
|
-
|
|
7603
|
-
return true;
|
|
7604
|
-
if (!prevOptions || !newOptions)
|
|
7605
|
-
return prevOptions === newOptions;
|
|
7606
|
-
if (prevOptions.length !== newOptions.length)
|
|
7607
|
-
return false;
|
|
7608
|
-
for (let i = 0; i < prevOptions.length; i++) {
|
|
7609
|
-
if (prevOptions[i][this.valueProperty] !== newOptions[i][this.valueProperty]) {
|
|
7610
|
-
return false;
|
|
7611
|
-
}
|
|
7612
|
-
}
|
|
7613
|
-
return true;
|
|
7561
|
+
registerOnChange(fn) {
|
|
7562
|
+
this.onChange = fn;
|
|
7614
7563
|
}
|
|
7615
|
-
|
|
7616
|
-
this.
|
|
7564
|
+
registerOnTouched(fn) {
|
|
7565
|
+
this.onTouched = fn;
|
|
7617
7566
|
}
|
|
7618
|
-
|
|
7619
|
-
if
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
else {
|
|
7635
|
-
this.selectedItems = [];
|
|
7567
|
+
setDisabledState(_isDisabled) {
|
|
7568
|
+
// Handle disabled state if needed
|
|
7569
|
+
}
|
|
7570
|
+
// Component methods
|
|
7571
|
+
toggleDropdown(event) {
|
|
7572
|
+
event.stopPropagation();
|
|
7573
|
+
this.isOpen = !this.isOpen;
|
|
7574
|
+
if (this.isOpen) {
|
|
7575
|
+
this.onTouched();
|
|
7576
|
+
// Focus search bar when opening
|
|
7577
|
+
setTimeout(() => {
|
|
7578
|
+
const searchbar = this.dropdownRef?.nativeElement?.querySelector('ion-searchbar');
|
|
7579
|
+
if (searchbar) {
|
|
7580
|
+
searchbar.setFocus();
|
|
7581
|
+
}
|
|
7582
|
+
}, 100);
|
|
7636
7583
|
}
|
|
7637
7584
|
}
|
|
7638
|
-
|
|
7639
|
-
|
|
7585
|
+
onSearch(event) {
|
|
7586
|
+
this.searchTerm = event.detail.value || '';
|
|
7587
|
+
this.filterOptions();
|
|
7640
7588
|
}
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7645
|
-
|
|
7589
|
+
toggleOption(option) {
|
|
7590
|
+
const value = String(option[this.valueProperty]);
|
|
7591
|
+
if (this.isSelected(option)) {
|
|
7592
|
+
// Remove from selection
|
|
7593
|
+
this.selectedValues = this.selectedValues.filter(v => v !== value);
|
|
7646
7594
|
}
|
|
7647
|
-
|
|
7648
|
-
|
|
7649
|
-
this.
|
|
7650
|
-
return;
|
|
7595
|
+
else {
|
|
7596
|
+
// Add to selection
|
|
7597
|
+
this.selectedValues = [...this.selectedValues, value];
|
|
7651
7598
|
}
|
|
7652
|
-
|
|
7653
|
-
this.
|
|
7654
|
-
const label = element[this.labelProperty]
|
|
7655
|
-
? replaceSpecialChars(String(element[this.labelProperty]).toLowerCase())
|
|
7656
|
-
: '';
|
|
7657
|
-
const value = element[this.valueProperty]
|
|
7658
|
-
? replaceSpecialChars(String(element[this.valueProperty]).toLowerCase())
|
|
7659
|
-
: '';
|
|
7660
|
-
return label.includes(search) || value.includes(search);
|
|
7661
|
-
});
|
|
7662
|
-
this.changeDetector.detectChanges();
|
|
7599
|
+
this.updateDisplayValue();
|
|
7600
|
+
this.emitValue();
|
|
7663
7601
|
}
|
|
7664
|
-
|
|
7665
|
-
|
|
7602
|
+
selectAll() {
|
|
7603
|
+
const allValues = this.filteredOptions.map(option => String(option[this.valueProperty]));
|
|
7604
|
+
// Add only new values to avoid duplicates
|
|
7605
|
+
const newValues = allValues.filter(value => !this.selectedValues.includes(value));
|
|
7606
|
+
this.selectedValues = [...this.selectedValues, ...newValues];
|
|
7607
|
+
this.updateDisplayValue();
|
|
7608
|
+
this.emitValue();
|
|
7666
7609
|
}
|
|
7667
|
-
|
|
7668
|
-
|
|
7610
|
+
clearAll() {
|
|
7611
|
+
this.selectedValues = [];
|
|
7612
|
+
this.updateDisplayValue();
|
|
7613
|
+
this.emitValue();
|
|
7669
7614
|
}
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
this.modal.present();
|
|
7673
|
-
}
|
|
7615
|
+
isSelected(option) {
|
|
7616
|
+
return this.selectedValues.includes(String(option[this.valueProperty]));
|
|
7674
7617
|
}
|
|
7675
|
-
|
|
7676
|
-
|
|
7677
|
-
event.stopPropagation();
|
|
7678
|
-
this.openModal();
|
|
7618
|
+
trackByFn(_index, option) {
|
|
7619
|
+
return option[this.valueProperty];
|
|
7679
7620
|
}
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
|
|
7683
|
-
|
|
7684
|
-
|
|
7685
|
-
|
|
7686
|
-
this.
|
|
7621
|
+
handleClickOutside(event) {
|
|
7622
|
+
if (this.isOpen &&
|
|
7623
|
+
!this.mainInputRef?.nativeElement?.contains(event.target) &&
|
|
7624
|
+
!this.dropdownRef?.nativeElement?.contains(event.target)) {
|
|
7625
|
+
this.isOpen = false;
|
|
7626
|
+
this.searchTerm = '';
|
|
7627
|
+
this.initializeOptions();
|
|
7687
7628
|
}
|
|
7688
7629
|
}
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7630
|
+
parseValue(value) {
|
|
7631
|
+
if (!value)
|
|
7632
|
+
return [];
|
|
7633
|
+
if (Array.isArray(value))
|
|
7634
|
+
return value.map(v => String(v));
|
|
7635
|
+
if (typeof value === 'string') {
|
|
7636
|
+
return value
|
|
7637
|
+
.split(',')
|
|
7638
|
+
.map(v => v.trim())
|
|
7639
|
+
.filter(v => v !== '');
|
|
7640
|
+
}
|
|
7641
|
+
return [String(value)];
|
|
7642
|
+
}
|
|
7643
|
+
emitValue() {
|
|
7644
|
+
const value = this.selectedValues.join(',');
|
|
7645
|
+
this.onChange(value);
|
|
7646
|
+
if (this.props?.control) {
|
|
7647
|
+
this.props.control.setValue(value);
|
|
7648
|
+
this.props.control.markAsDirty();
|
|
7649
|
+
this.props.control.markAsTouched();
|
|
7696
7650
|
}
|
|
7697
|
-
this.updateDisplayValue();
|
|
7698
7651
|
}
|
|
7699
|
-
|
|
7700
|
-
return this.
|
|
7652
|
+
getOptionByValue(value) {
|
|
7653
|
+
return this.filteredOptions.find(option => String(option[this.valueProperty]) === String(value));
|
|
7701
7654
|
}
|
|
7702
|
-
|
|
7703
|
-
this.
|
|
7704
|
-
|
|
7655
|
+
applyDefaultValue() {
|
|
7656
|
+
if (this.props) {
|
|
7657
|
+
applyDefaultValueToControl(this.props);
|
|
7658
|
+
}
|
|
7705
7659
|
}
|
|
7706
|
-
|
|
7707
|
-
this.
|
|
7708
|
-
this.cancelModal();
|
|
7660
|
+
initializeOptions() {
|
|
7661
|
+
this.filteredOptions = this.props?.options || [];
|
|
7709
7662
|
}
|
|
7710
|
-
|
|
7711
|
-
if (this.
|
|
7712
|
-
this.
|
|
7663
|
+
filterOptions() {
|
|
7664
|
+
if (!this.searchTerm) {
|
|
7665
|
+
this.initializeOptions();
|
|
7713
7666
|
return;
|
|
7714
7667
|
}
|
|
7715
|
-
|
|
7716
|
-
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7668
|
+
const search = replaceSpecialChars(this.searchTerm.toLowerCase());
|
|
7669
|
+
this.filteredOptions = (this.props?.options || []).filter(option => {
|
|
7670
|
+
const label = option[this.labelProperty]
|
|
7671
|
+
? replaceSpecialChars(String(option[this.labelProperty]).toLowerCase())
|
|
7672
|
+
: '';
|
|
7673
|
+
const value = option[this.valueProperty]
|
|
7674
|
+
? replaceSpecialChars(String(option[this.valueProperty]).toLowerCase())
|
|
7675
|
+
: '';
|
|
7676
|
+
return label.includes(search) || value.includes(search);
|
|
7677
|
+
});
|
|
7721
7678
|
}
|
|
7722
|
-
|
|
7723
|
-
if (
|
|
7679
|
+
updateDisplayValue() {
|
|
7680
|
+
if (this.selectedValues.length === 0) {
|
|
7681
|
+
this.displayValue = '';
|
|
7724
7682
|
return;
|
|
7725
7683
|
}
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
this.props.control.setValue(values);
|
|
7730
|
-
this.props.control.markAsDirty();
|
|
7731
|
-
this.props.control.updateValueAndValidity();
|
|
7684
|
+
if (this.selectedValues.length === 1) {
|
|
7685
|
+
const option = this.getOptionByValue(this.selectedValues[0]);
|
|
7686
|
+
this.displayValue = option ? option[this.labelProperty] : '';
|
|
7732
7687
|
}
|
|
7733
|
-
|
|
7734
|
-
this.
|
|
7688
|
+
else {
|
|
7689
|
+
this.displayValue = `${this.selectedValues.length} elementos seleccionados`;
|
|
7735
7690
|
}
|
|
7736
7691
|
}
|
|
7737
|
-
|
|
7738
|
-
this.
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
this.props.control.setValue([]);
|
|
7692
|
+
syncSelectedValues() {
|
|
7693
|
+
if (this.props?.control?.value) {
|
|
7694
|
+
const valueArray = this.parseValue(this.props.control.value);
|
|
7695
|
+
this.selectedValues = valueArray;
|
|
7742
7696
|
}
|
|
7743
|
-
this.changeDetector.detectChanges();
|
|
7744
7697
|
}
|
|
7745
7698
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiSelectSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7746
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiSelectSearchComponent, isStandalone: true, selector: "val-multi-select-search", inputs: {
|
|
7747
|
-
|
|
7748
|
-
|
|
7749
|
-
|
|
7750
|
-
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
|
|
7699
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiSelectSearchComponent, isStandalone: true, selector: "val-multi-select-search", inputs: { props: "props", labelProperty: "labelProperty", valueProperty: "valueProperty", placeholder: "placeholder" }, providers: [
|
|
7700
|
+
{
|
|
7701
|
+
provide: NG_VALUE_ACCESSOR,
|
|
7702
|
+
useExisting: forwardRef(() => MultiSelectSearchComponent),
|
|
7703
|
+
multi: true,
|
|
7704
|
+
},
|
|
7705
|
+
], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "mainInputRef", first: true, predicate: ["mainInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
7706
|
+
<div class="multi-select-container" (click)="toggleDropdown($event)">
|
|
7707
|
+
<!-- Main input display -->
|
|
7708
|
+
<ion-input
|
|
7709
|
+
#mainInput
|
|
7710
|
+
type="text"
|
|
7711
|
+
[value]="displayValue"
|
|
7712
|
+
[placeholder]="props?.placeholder || placeholder"
|
|
7713
|
+
readonly
|
|
7714
|
+
class="main-input"
|
|
7715
|
+
[class.is-open]="isOpen"
|
|
7716
|
+
/>
|
|
7717
|
+
|
|
7718
|
+
<!-- Dropdown icon -->
|
|
7719
|
+
<ion-icon name="chevron-down-outline" class="dropdown-icon" [class.rotated]="isOpen"></ion-icon>
|
|
7720
|
+
|
|
7721
|
+
<!-- Hidden input for form control -->
|
|
7722
|
+
<ion-input
|
|
7723
|
+
style="position: absolute; opacity: 0; pointer-events: none;"
|
|
7724
|
+
[formControl]="props?.control"
|
|
7725
|
+
type="hidden"
|
|
7726
|
+
/>
|
|
7727
|
+
</div>
|
|
7754
7728
|
|
|
7755
|
-
|
|
7729
|
+
<!-- Dropdown overlay -->
|
|
7730
|
+
<div class="dropdown-overlay" [class.visible]="isOpen" #dropdown>
|
|
7731
|
+
<!-- Search bar -->
|
|
7732
|
+
<div class="search-container" *ngIf="props?.options && props.options.length > 5">
|
|
7733
|
+
<ion-searchbar
|
|
7734
|
+
#searchbar
|
|
7735
|
+
[placeholder]="searchPlaceholder"
|
|
7736
|
+
(ionInput)="onSearch($event)"
|
|
7737
|
+
[value]="searchTerm"
|
|
7738
|
+
show-clear-button="focus"
|
|
7739
|
+
[debounce]="200"
|
|
7740
|
+
></ion-searchbar>
|
|
7741
|
+
</div>
|
|
7756
7742
|
|
|
7757
|
-
|
|
7758
|
-
|
|
7759
|
-
|
|
7760
|
-
|
|
7761
|
-
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7775
|
-
|
|
7776
|
-
|
|
7777
|
-
|
|
7778
|
-
|
|
7779
|
-
|
|
7780
|
-
|
|
7781
|
-
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
</ion-buttons>
|
|
7797
|
-
</ion-toolbar>
|
|
7798
|
-
</ion-footer>
|
|
7799
|
-
</ng-template>
|
|
7800
|
-
</ion-modal>
|
|
7801
|
-
`, isInline: true, styles: ["ion-header{padding:8px 8px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal" }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["disabled"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
7743
|
+
<!-- Action buttons -->
|
|
7744
|
+
<div class="actions-container" *ngIf="filteredOptions.length > 0">
|
|
7745
|
+
<ion-button fill="clear" size="small" (click)="selectAll()" [disabled]="filteredOptions.length === 0">
|
|
7746
|
+
Seleccionar todos
|
|
7747
|
+
</ion-button>
|
|
7748
|
+
<ion-button
|
|
7749
|
+
fill="clear"
|
|
7750
|
+
size="small"
|
|
7751
|
+
color="medium"
|
|
7752
|
+
(click)="clearAll()"
|
|
7753
|
+
[disabled]="selectedValues.length === 0"
|
|
7754
|
+
>
|
|
7755
|
+
Limpiar
|
|
7756
|
+
</ion-button>
|
|
7757
|
+
</div>
|
|
7758
|
+
|
|
7759
|
+
<!-- Options list -->
|
|
7760
|
+
<div class="options-container">
|
|
7761
|
+
<ion-list class="options-list">
|
|
7762
|
+
<ion-item
|
|
7763
|
+
*ngFor="let option of filteredOptions; trackBy: trackByFn"
|
|
7764
|
+
button
|
|
7765
|
+
(click)="toggleOption(option)"
|
|
7766
|
+
class="option-item"
|
|
7767
|
+
>
|
|
7768
|
+
<ion-checkbox slot="start" [checked]="isSelected(option)"></ion-checkbox>
|
|
7769
|
+
<ion-label>{{ option[labelProperty] }}</ion-label>
|
|
7770
|
+
</ion-item>
|
|
7771
|
+
|
|
7772
|
+
<!-- No results message -->
|
|
7773
|
+
<ion-item *ngIf="filteredOptions.length === 0" class="no-results">
|
|
7774
|
+
<ion-label color="medium">
|
|
7775
|
+
{{ searchTerm ? 'No se encontraron resultados' : 'No hay opciones disponibles' }}
|
|
7776
|
+
</ion-label>
|
|
7777
|
+
</ion-item>
|
|
7778
|
+
</ion-list>
|
|
7779
|
+
</div>
|
|
7780
|
+
</div>
|
|
7781
|
+
`, isInline: true, styles: [".multi-select-container{position:relative;display:flex;align-items:center;width:100%}.multi-select-container .main-input{flex:1;cursor:pointer}.multi-select-container .main-input.is-open{border-color:var(--ion-color-primary)}.multi-select-container .dropdown-icon{position:absolute;right:12px;font-size:16px;color:var(--ion-color-medium);transition:transform .2s ease;pointer-events:none}.multi-select-container .dropdown-icon.rotated{transform:rotate(180deg)}.dropdown-overlay{position:absolute;top:100%;left:0;right:0;z-index:1000;background:var(--ion-color-light);border:1px solid var(--ion-color-medium);border-radius:8px;box-shadow:0 4px 16px #00000026;max-height:300px;overflow:hidden;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease}.dropdown-overlay.visible{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-overlay .search-container{padding:8px;border-bottom:1px solid var(--ion-color-light-shade)}.dropdown-overlay .search-container ion-searchbar{--background: var(--ion-color-light);--border-radius: 6px;--box-shadow: none;padding:0}.dropdown-overlay .actions-container{display:flex;justify-content:space-between;padding:8px;border-bottom:1px solid var(--ion-color-light-shade);background:var(--ion-color-light-tint)}.dropdown-overlay .actions-container ion-button{--padding-start: 8px;--padding-end: 8px;font-size:12px;height:28px}.dropdown-overlay .options-container{max-height:200px;overflow-y:auto}.dropdown-overlay .options-container .options-list{padding:0;margin:0}.dropdown-overlay .options-container .options-list .option-item{--padding-start: 12px;--padding-end: 12px;--inner-padding-end: 0;cursor:pointer;transition:background-color .2s ease}.dropdown-overlay .options-container .options-list .option-item:hover{--background: var(--ion-color-light-shade)}.dropdown-overlay .options-container .options-list .option-item ion-checkbox{margin-right:12px}.dropdown-overlay .options-container .options-list .option-item ion-label{font-size:14px;color:var(--ion-color-dark)}.dropdown-overlay .options-container .options-list .no-results{--padding-start: 12px;--padding-end: 12px;cursor:default}.dropdown-overlay .options-container .options-list .no-results ion-label{font-size:14px;font-style:italic}@media (prefers-color-scheme: dark){.dropdown-overlay{background:var(--ion-color-dark);border-color:var(--ion-color-medium-shade)}.dropdown-overlay .search-container{border-bottom-color:var(--ion-color-dark-shade)}.dropdown-overlay .search-container ion-searchbar{--background: var(--ion-color-dark-tint)}.dropdown-overlay .actions-container{border-bottom-color:var(--ion-color-dark-shade);background:var(--ion-color-dark-tint)}.dropdown-overlay .options-list .option-item:hover{--background: var(--ion-color-dark-shade)}.dropdown-overlay .options-list .option-item ion-label{color:var(--ion-color-light)}}@media (max-width: 768px){.dropdown-overlay .options-container{max-height:180px}.dropdown-overlay .actions-container ion-button{font-size:11px;height:26px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
7802
7782
|
}
|
|
7803
7783
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiSelectSearchComponent, decorators: [{
|
|
7804
7784
|
type: Component,
|
|
7805
|
-
args: [{ selector: 'val-multi-select-search', standalone: true, imports: [CommonModule, IonicModule, FormsModule,
|
|
7806
|
-
|
|
7807
|
-
|
|
7808
|
-
|
|
7809
|
-
|
|
7810
|
-
|
|
7811
|
-
|
|
7812
|
-
|
|
7785
|
+
args: [{ selector: 'val-multi-select-search', standalone: true, imports: [CommonModule, IonicModule, FormsModule, ReactiveFormsModule], providers: [
|
|
7786
|
+
{
|
|
7787
|
+
provide: NG_VALUE_ACCESSOR,
|
|
7788
|
+
useExisting: forwardRef(() => MultiSelectSearchComponent),
|
|
7789
|
+
multi: true,
|
|
7790
|
+
},
|
|
7791
|
+
], template: `
|
|
7792
|
+
<div class="multi-select-container" (click)="toggleDropdown($event)">
|
|
7793
|
+
<!-- Main input display -->
|
|
7794
|
+
<ion-input
|
|
7795
|
+
#mainInput
|
|
7796
|
+
type="text"
|
|
7797
|
+
[value]="displayValue"
|
|
7798
|
+
[placeholder]="props?.placeholder || placeholder"
|
|
7799
|
+
readonly
|
|
7800
|
+
class="main-input"
|
|
7801
|
+
[class.is-open]="isOpen"
|
|
7802
|
+
/>
|
|
7803
|
+
|
|
7804
|
+
<!-- Dropdown icon -->
|
|
7805
|
+
<ion-icon name="chevron-down-outline" class="dropdown-icon" [class.rotated]="isOpen"></ion-icon>
|
|
7806
|
+
|
|
7807
|
+
<!-- Hidden input for form control -->
|
|
7808
|
+
<ion-input
|
|
7809
|
+
style="position: absolute; opacity: 0; pointer-events: none;"
|
|
7810
|
+
[formControl]="props?.control"
|
|
7811
|
+
type="hidden"
|
|
7812
|
+
/>
|
|
7813
|
+
</div>
|
|
7813
7814
|
|
|
7814
|
-
|
|
7815
|
+
<!-- Dropdown overlay -->
|
|
7816
|
+
<div class="dropdown-overlay" [class.visible]="isOpen" #dropdown>
|
|
7817
|
+
<!-- Search bar -->
|
|
7818
|
+
<div class="search-container" *ngIf="props?.options && props.options.length > 5">
|
|
7819
|
+
<ion-searchbar
|
|
7820
|
+
#searchbar
|
|
7821
|
+
[placeholder]="searchPlaceholder"
|
|
7822
|
+
(ionInput)="onSearch($event)"
|
|
7823
|
+
[value]="searchTerm"
|
|
7824
|
+
show-clear-button="focus"
|
|
7825
|
+
[debounce]="200"
|
|
7826
|
+
></ion-searchbar>
|
|
7827
|
+
</div>
|
|
7815
7828
|
|
|
7816
|
-
|
|
7817
|
-
|
|
7818
|
-
|
|
7819
|
-
|
|
7820
|
-
|
|
7821
|
-
|
|
7822
|
-
|
|
7823
|
-
|
|
7824
|
-
|
|
7825
|
-
|
|
7826
|
-
|
|
7827
|
-
|
|
7828
|
-
|
|
7829
|
-
|
|
7830
|
-
|
|
7831
|
-
|
|
7832
|
-
|
|
7833
|
-
|
|
7834
|
-
|
|
7835
|
-
|
|
7836
|
-
|
|
7837
|
-
|
|
7838
|
-
|
|
7839
|
-
|
|
7840
|
-
|
|
7841
|
-
|
|
7842
|
-
|
|
7843
|
-
|
|
7844
|
-
|
|
7845
|
-
|
|
7846
|
-
|
|
7847
|
-
|
|
7848
|
-
|
|
7849
|
-
|
|
7850
|
-
|
|
7851
|
-
|
|
7852
|
-
|
|
7853
|
-
|
|
7854
|
-
|
|
7855
|
-
|
|
7856
|
-
</ion-toolbar>
|
|
7857
|
-
</ion-footer>
|
|
7858
|
-
</ng-template>
|
|
7859
|
-
</ion-modal>
|
|
7860
|
-
`, styles: ["ion-header{padding:8px 8px 0}\n"] }]
|
|
7861
|
-
}], ctorParameters: () => [], propDecorators: { modal: [{
|
|
7829
|
+
<!-- Action buttons -->
|
|
7830
|
+
<div class="actions-container" *ngIf="filteredOptions.length > 0">
|
|
7831
|
+
<ion-button fill="clear" size="small" (click)="selectAll()" [disabled]="filteredOptions.length === 0">
|
|
7832
|
+
Seleccionar todos
|
|
7833
|
+
</ion-button>
|
|
7834
|
+
<ion-button
|
|
7835
|
+
fill="clear"
|
|
7836
|
+
size="small"
|
|
7837
|
+
color="medium"
|
|
7838
|
+
(click)="clearAll()"
|
|
7839
|
+
[disabled]="selectedValues.length === 0"
|
|
7840
|
+
>
|
|
7841
|
+
Limpiar
|
|
7842
|
+
</ion-button>
|
|
7843
|
+
</div>
|
|
7844
|
+
|
|
7845
|
+
<!-- Options list -->
|
|
7846
|
+
<div class="options-container">
|
|
7847
|
+
<ion-list class="options-list">
|
|
7848
|
+
<ion-item
|
|
7849
|
+
*ngFor="let option of filteredOptions; trackBy: trackByFn"
|
|
7850
|
+
button
|
|
7851
|
+
(click)="toggleOption(option)"
|
|
7852
|
+
class="option-item"
|
|
7853
|
+
>
|
|
7854
|
+
<ion-checkbox slot="start" [checked]="isSelected(option)"></ion-checkbox>
|
|
7855
|
+
<ion-label>{{ option[labelProperty] }}</ion-label>
|
|
7856
|
+
</ion-item>
|
|
7857
|
+
|
|
7858
|
+
<!-- No results message -->
|
|
7859
|
+
<ion-item *ngIf="filteredOptions.length === 0" class="no-results">
|
|
7860
|
+
<ion-label color="medium">
|
|
7861
|
+
{{ searchTerm ? 'No se encontraron resultados' : 'No hay opciones disponibles' }}
|
|
7862
|
+
</ion-label>
|
|
7863
|
+
</ion-item>
|
|
7864
|
+
</ion-list>
|
|
7865
|
+
</div>
|
|
7866
|
+
</div>
|
|
7867
|
+
`, styles: [".multi-select-container{position:relative;display:flex;align-items:center;width:100%}.multi-select-container .main-input{flex:1;cursor:pointer}.multi-select-container .main-input.is-open{border-color:var(--ion-color-primary)}.multi-select-container .dropdown-icon{position:absolute;right:12px;font-size:16px;color:var(--ion-color-medium);transition:transform .2s ease;pointer-events:none}.multi-select-container .dropdown-icon.rotated{transform:rotate(180deg)}.dropdown-overlay{position:absolute;top:100%;left:0;right:0;z-index:1000;background:var(--ion-color-light);border:1px solid var(--ion-color-medium);border-radius:8px;box-shadow:0 4px 16px #00000026;max-height:300px;overflow:hidden;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease}.dropdown-overlay.visible{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-overlay .search-container{padding:8px;border-bottom:1px solid var(--ion-color-light-shade)}.dropdown-overlay .search-container ion-searchbar{--background: var(--ion-color-light);--border-radius: 6px;--box-shadow: none;padding:0}.dropdown-overlay .actions-container{display:flex;justify-content:space-between;padding:8px;border-bottom:1px solid var(--ion-color-light-shade);background:var(--ion-color-light-tint)}.dropdown-overlay .actions-container ion-button{--padding-start: 8px;--padding-end: 8px;font-size:12px;height:28px}.dropdown-overlay .options-container{max-height:200px;overflow-y:auto}.dropdown-overlay .options-container .options-list{padding:0;margin:0}.dropdown-overlay .options-container .options-list .option-item{--padding-start: 12px;--padding-end: 12px;--inner-padding-end: 0;cursor:pointer;transition:background-color .2s ease}.dropdown-overlay .options-container .options-list .option-item:hover{--background: var(--ion-color-light-shade)}.dropdown-overlay .options-container .options-list .option-item ion-checkbox{margin-right:12px}.dropdown-overlay .options-container .options-list .option-item ion-label{font-size:14px;color:var(--ion-color-dark)}.dropdown-overlay .options-container .options-list .no-results{--padding-start: 12px;--padding-end: 12px;cursor:default}.dropdown-overlay .options-container .options-list .no-results ion-label{font-size:14px;font-style:italic}@media (prefers-color-scheme: dark){.dropdown-overlay{background:var(--ion-color-dark);border-color:var(--ion-color-medium-shade)}.dropdown-overlay .search-container{border-bottom-color:var(--ion-color-dark-shade)}.dropdown-overlay .search-container ion-searchbar{--background: var(--ion-color-dark-tint)}.dropdown-overlay .actions-container{border-bottom-color:var(--ion-color-dark-shade);background:var(--ion-color-dark-tint)}.dropdown-overlay .options-list .option-item:hover{--background: var(--ion-color-dark-shade)}.dropdown-overlay .options-list .option-item ion-label{color:var(--ion-color-light)}}@media (max-width: 768px){.dropdown-overlay .options-container{max-height:180px}.dropdown-overlay .actions-container ion-button{font-size:11px;height:26px}}\n"] }]
|
|
7868
|
+
}], ctorParameters: () => [], propDecorators: { dropdownRef: [{
|
|
7862
7869
|
type: ViewChild,
|
|
7863
|
-
args: ['
|
|
7864
|
-
}],
|
|
7870
|
+
args: ['dropdown']
|
|
7871
|
+
}], mainInputRef: [{
|
|
7872
|
+
type: ViewChild,
|
|
7873
|
+
args: ['mainInput']
|
|
7874
|
+
}], props: [{
|
|
7865
7875
|
type: Input
|
|
7866
7876
|
}], labelProperty: [{
|
|
7867
7877
|
type: Input
|
|
@@ -7869,8 +7879,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
7869
7879
|
type: Input
|
|
7870
7880
|
}], placeholder: [{
|
|
7871
7881
|
type: Input
|
|
7872
|
-
}], props: [{
|
|
7873
|
-
type: Input
|
|
7874
7882
|
}] } });
|
|
7875
7883
|
|
|
7876
7884
|
class FormComponent {
|
|
@@ -7900,7 +7908,10 @@ class FormComponent {
|
|
|
7900
7908
|
this.form = this.fb.group(formControls);
|
|
7901
7909
|
this.props.sections.forEach(section => {
|
|
7902
7910
|
section.fields
|
|
7903
|
-
.filter(x => x.type === this.types.SELECT ||
|
|
7911
|
+
.filter(x => x.type === this.types.SELECT ||
|
|
7912
|
+
x.type === this.types.TEXT ||
|
|
7913
|
+
x.type === this.types.SEARCH_SELECT ||
|
|
7914
|
+
x.type === this.types.MULTI_SELECT)
|
|
7904
7915
|
.forEach(field => {
|
|
7905
7916
|
this.trackSelectChanges(field.name);
|
|
7906
7917
|
});
|
|
@@ -8062,7 +8073,7 @@ class FormComponent {
|
|
|
8062
8073
|
></val-button-group>
|
|
8063
8074
|
</form>
|
|
8064
8075
|
</div>
|
|
8065
|
-
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input" }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: HourInputComponent, selector: "val-hour-input", inputs: ["props"] }, { kind: "component", type: EmailInputComponent, selector: "val-email-input", inputs: ["props"] }, { kind: "component", type: NumberInputComponent, selector: "val-number-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["
|
|
8076
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input" }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: HourInputComponent, selector: "val-hour-input", inputs: ["props"] }, { kind: "component", type: EmailInputComponent, selector: "val-email-input", inputs: ["props"] }, { kind: "component", type: NumberInputComponent, selector: "val-number-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["props", "labelProperty", "valueProperty", "placeholder"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["props"] }] }); }
|
|
8066
8077
|
}
|
|
8067
8078
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormComponent, decorators: [{
|
|
8068
8079
|
type: Component,
|