@fovestta2/web-angular 1.0.22 → 1.0.23
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/add-update-form/add-update-form.component.mjs +33 -5
- package/esm2022/lib/fv-controls.module.mjs +10 -4
- package/esm2022/lib/fv-name-code/fv-name-code.component.mjs +20 -7
- package/esm2022/lib/fv-time-field/fv-time-field.component.mjs +166 -0
- package/esm2022/lib/query-form/query-form.component.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/fovestta2-web-angular.mjs +220 -15
- package/fesm2022/fovestta2-web-angular.mjs.map +1 -1
- package/lib/add-update-form/add-update-form.component.d.ts +1 -1
- package/lib/fv-controls.module.d.ts +2 -1
- package/lib/fv-name-code/fv-name-code.component.d.ts +5 -4
- package/lib/fv-time-field/fv-time-field.component.d.ts +40 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1554,7 +1554,7 @@ class FvNameCodeComponent {
|
|
|
1554
1554
|
schema;
|
|
1555
1555
|
control;
|
|
1556
1556
|
disabled = false;
|
|
1557
|
-
|
|
1557
|
+
valueChange = new EventEmitter();
|
|
1558
1558
|
searchControl = new FormControl('');
|
|
1559
1559
|
filteredOptions = [];
|
|
1560
1560
|
isOpen = false;
|
|
@@ -1562,13 +1562,21 @@ class FvNameCodeComponent {
|
|
|
1562
1562
|
onChange = () => { };
|
|
1563
1563
|
onTouched = () => { };
|
|
1564
1564
|
value = null;
|
|
1565
|
+
ngOnChanges(changes) {
|
|
1566
|
+
if (changes['options']) {
|
|
1567
|
+
this.filteredOptions = this.options;
|
|
1568
|
+
if (this.value !== null && this.value !== undefined) {
|
|
1569
|
+
this.writeValue(this.value);
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1565
1573
|
ngOnInit() {
|
|
1566
1574
|
this.filteredOptions = this.options;
|
|
1567
1575
|
this.searchControl.valueChanges.subscribe(term => {
|
|
1568
1576
|
this.filterOptions(term || '');
|
|
1569
1577
|
});
|
|
1570
1578
|
if (this.control) {
|
|
1571
|
-
if (this.control.value) {
|
|
1579
|
+
if (this.control.value !== null && this.control.value !== undefined) {
|
|
1572
1580
|
this.writeValue(this.control.value);
|
|
1573
1581
|
}
|
|
1574
1582
|
this.control.valueChanges.subscribe(val => {
|
|
@@ -1617,8 +1625,13 @@ class FvNameCodeComponent {
|
|
|
1617
1625
|
return;
|
|
1618
1626
|
this.value = option.value;
|
|
1619
1627
|
this.onChange(this.value);
|
|
1628
|
+
if (this.control) {
|
|
1629
|
+
this.control.setValue(this.value);
|
|
1630
|
+
this.control.markAsDirty();
|
|
1631
|
+
this.control.markAsTouched();
|
|
1632
|
+
}
|
|
1620
1633
|
this.searchControl.setValue(`${option.code} - ${option.name}`, { emitEvent: false });
|
|
1621
|
-
this.
|
|
1634
|
+
this.valueChange.emit(this.value);
|
|
1622
1635
|
this.isOpen = false;
|
|
1623
1636
|
this.highlightedIndex = -1;
|
|
1624
1637
|
}
|
|
@@ -1734,13 +1747,13 @@ class FvNameCodeComponent {
|
|
|
1734
1747
|
}
|
|
1735
1748
|
}
|
|
1736
1749
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvNameCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1737
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvNameCodeComponent, isStandalone: true, selector: "fv-name-code", inputs: { label: "label", placeholder: "placeholder", options: "options", schema: "schema", control: "control", disabled: "disabled" }, outputs: {
|
|
1750
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvNameCodeComponent, isStandalone: true, selector: "fv-name-code", inputs: { label: "label", placeholder: "placeholder", options: "options", schema: "schema", control: "control", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:click": "onClickOutside($event)", "keydown": "onKeyDown($event)" } }, providers: [
|
|
1738
1751
|
{
|
|
1739
1752
|
provide: NG_VALUE_ACCESSOR,
|
|
1740
1753
|
useExisting: forwardRef(() => FvNameCodeComponent),
|
|
1741
1754
|
multi: true
|
|
1742
1755
|
}
|
|
1743
|
-
], ngImport: i0, template: `
|
|
1756
|
+
], usesOnChanges: true, ngImport: i0, template: `
|
|
1744
1757
|
<div class="fv-name-code-container">
|
|
1745
1758
|
<label *ngIf="label" class="fv-label">
|
|
1746
1759
|
{{ label }}
|
|
@@ -1839,7 +1852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1839
1852
|
type: Input
|
|
1840
1853
|
}], disabled: [{
|
|
1841
1854
|
type: Input
|
|
1842
|
-
}],
|
|
1855
|
+
}], valueChange: [{
|
|
1843
1856
|
type: Output
|
|
1844
1857
|
}], onClickOutside: [{
|
|
1845
1858
|
type: HostListener,
|
|
@@ -2904,6 +2917,166 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2904
2917
|
args: ['fileInput']
|
|
2905
2918
|
}] } });
|
|
2906
2919
|
|
|
2920
|
+
class FvTimeFieldComponent {
|
|
2921
|
+
label = '';
|
|
2922
|
+
schema;
|
|
2923
|
+
control;
|
|
2924
|
+
disabled = false;
|
|
2925
|
+
readonly = false;
|
|
2926
|
+
placeholder = '--:--';
|
|
2927
|
+
valueChange = new EventEmitter();
|
|
2928
|
+
blur = new EventEmitter();
|
|
2929
|
+
focus = new EventEmitter();
|
|
2930
|
+
errorMessage = null;
|
|
2931
|
+
subscription;
|
|
2932
|
+
showPicker = false;
|
|
2933
|
+
hours = [];
|
|
2934
|
+
minutes = [];
|
|
2935
|
+
selectedHour = null;
|
|
2936
|
+
selectedMinute = null;
|
|
2937
|
+
ngOnInit() {
|
|
2938
|
+
if (!this.control) {
|
|
2939
|
+
console.error('FvTimeField: control is required');
|
|
2940
|
+
return;
|
|
2941
|
+
}
|
|
2942
|
+
// Generate hours (00-23) and minutes (00-59)
|
|
2943
|
+
this.hours = Array.from({ length: 24 }, (_, i) => i);
|
|
2944
|
+
this.minutes = Array.from({ length: 60 }, (_, i) => i);
|
|
2945
|
+
// Subscribe to value changes
|
|
2946
|
+
this.subscription = this.control.valueChanges.subscribe((value) => {
|
|
2947
|
+
this.validateValue(value);
|
|
2948
|
+
this.parseTimeValue(value);
|
|
2949
|
+
this.valueChange.emit(value);
|
|
2950
|
+
});
|
|
2951
|
+
// Validate and parse initial value
|
|
2952
|
+
this.validateValue(this.control.value);
|
|
2953
|
+
this.parseTimeValue(this.control.value);
|
|
2954
|
+
}
|
|
2955
|
+
ngOnDestroy() {
|
|
2956
|
+
this.subscription?.unsubscribe();
|
|
2957
|
+
}
|
|
2958
|
+
ngOnChanges(changes) {
|
|
2959
|
+
if (changes['disabled'] && this.control) {
|
|
2960
|
+
if (this.disabled) {
|
|
2961
|
+
this.control.disable({ emitEvent: false });
|
|
2962
|
+
}
|
|
2963
|
+
else {
|
|
2964
|
+
this.control.enable({ emitEvent: false });
|
|
2965
|
+
}
|
|
2966
|
+
}
|
|
2967
|
+
}
|
|
2968
|
+
parseTimeValue(value) {
|
|
2969
|
+
if (!value || typeof value !== 'string') {
|
|
2970
|
+
this.selectedHour = null;
|
|
2971
|
+
this.selectedMinute = null;
|
|
2972
|
+
return;
|
|
2973
|
+
}
|
|
2974
|
+
const parts = value.split(':');
|
|
2975
|
+
if (parts.length === 2) {
|
|
2976
|
+
const hour = parseInt(parts[0], 10);
|
|
2977
|
+
const minute = parseInt(parts[1], 10);
|
|
2978
|
+
if (!isNaN(hour) && hour >= 0 && hour <= 23) {
|
|
2979
|
+
this.selectedHour = hour;
|
|
2980
|
+
}
|
|
2981
|
+
if (!isNaN(minute) && minute >= 0 && minute <= 59) {
|
|
2982
|
+
this.selectedMinute = minute;
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
}
|
|
2986
|
+
validateValue(value) {
|
|
2987
|
+
if (!this.schema)
|
|
2988
|
+
return;
|
|
2989
|
+
const result = Validator.validate(value, this.schema);
|
|
2990
|
+
this.errorMessage = result.errorKey;
|
|
2991
|
+
if (!result.isValid && result.errorKey) {
|
|
2992
|
+
this.control.setErrors({ [result.errorKey]: true });
|
|
2993
|
+
}
|
|
2994
|
+
else {
|
|
2995
|
+
this.control.setErrors(null);
|
|
2996
|
+
}
|
|
2997
|
+
}
|
|
2998
|
+
togglePicker() {
|
|
2999
|
+
if (!this.disabled && !this.readonly) {
|
|
3000
|
+
this.showPicker = !this.showPicker;
|
|
3001
|
+
}
|
|
3002
|
+
}
|
|
3003
|
+
selectHour(hour) {
|
|
3004
|
+
this.selectedHour = hour;
|
|
3005
|
+
this.updateTimeValue();
|
|
3006
|
+
}
|
|
3007
|
+
selectMinute(minute) {
|
|
3008
|
+
this.selectedMinute = minute;
|
|
3009
|
+
this.updateTimeValue();
|
|
3010
|
+
}
|
|
3011
|
+
updateTimeValue() {
|
|
3012
|
+
if (this.selectedHour !== null && this.selectedMinute !== null) {
|
|
3013
|
+
const timeValue = `${this.padZero(this.selectedHour)}:${this.padZero(this.selectedMinute)}`;
|
|
3014
|
+
this.control.setValue(timeValue, { emitEvent: true });
|
|
3015
|
+
this.showPicker = false;
|
|
3016
|
+
}
|
|
3017
|
+
}
|
|
3018
|
+
padZero(num) {
|
|
3019
|
+
return num.toString().padStart(2, '0');
|
|
3020
|
+
}
|
|
3021
|
+
getDisplayValue() {
|
|
3022
|
+
if (this.selectedHour !== null && this.selectedMinute !== null) {
|
|
3023
|
+
return `${this.padZero(this.selectedHour)}:${this.padZero(this.selectedMinute)}`;
|
|
3024
|
+
}
|
|
3025
|
+
return this.placeholder;
|
|
3026
|
+
}
|
|
3027
|
+
onBlur(event) {
|
|
3028
|
+
// Delay to allow click on picker
|
|
3029
|
+
setTimeout(() => {
|
|
3030
|
+
if (!this.showPicker) {
|
|
3031
|
+
this.validateValue(this.control.value);
|
|
3032
|
+
this.blur.emit();
|
|
3033
|
+
}
|
|
3034
|
+
}, 200);
|
|
3035
|
+
}
|
|
3036
|
+
onFocus(event) {
|
|
3037
|
+
this.focus.emit();
|
|
3038
|
+
}
|
|
3039
|
+
isRequired() {
|
|
3040
|
+
return (this.schema?.rules?.some((r) => r.name === 'required' && r.params?.['enabled']) || false);
|
|
3041
|
+
}
|
|
3042
|
+
getErrorMessage() {
|
|
3043
|
+
if (!this.errorMessage)
|
|
3044
|
+
return '';
|
|
3045
|
+
const errorMessages = {
|
|
3046
|
+
ERR_REQUIRED: 'Time is required',
|
|
3047
|
+
ERR_INVALID_TIME: 'Invalid time format',
|
|
3048
|
+
};
|
|
3049
|
+
return errorMessages[this.errorMessage] || this.errorMessage;
|
|
3050
|
+
}
|
|
3051
|
+
closePicker() {
|
|
3052
|
+
this.showPicker = false;
|
|
3053
|
+
}
|
|
3054
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvTimeFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3055
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FvTimeFieldComponent, isStandalone: true, selector: "fv-time-field", inputs: { label: "label", schema: "schema", control: "control", disabled: "disabled", readonly: "readonly", placeholder: "placeholder" }, outputs: { valueChange: "valueChange", blur: "blur", focus: "focus" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fv-field-container\">\r\n <label *ngIf=\"label\" class=\"fv-label\">\r\n {{ label }} <span *ngIf=\"isRequired()\" class=\"fv-required-asterisk\">*</span>\r\n </label>\r\n\r\n <div class=\"time-input-wrapper\">\r\n <div class=\"time-input\" [class.error]=\"errorMessage && control?.touched\" [class.disabled]=\"disabled\"\r\n (click)=\"togglePicker()\" tabindex=\"0\" (blur)=\"onBlur($event)\" (focus)=\"onFocus($event)\">\r\n <span class=\"time-display\">{{ getDisplayValue() }}</span>\r\n <svg class=\"clock-icon\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\" />\r\n </svg>\r\n </div>\r\n\r\n <div *ngIf=\"showPicker\" class=\"time-picker-dropdown\">\r\n <div class=\"time-picker-header\">\r\n <span class=\"selected-time\">\r\n {{ selectedHour !== null ? padZero(selectedHour) : '--' }}:{{ selectedMinute !== null ?\r\n padZero(selectedMinute) : '--' }}\r\n </span>\r\n <button type=\"button\" class=\"close-btn\" (click)=\"closePicker()\">\u00D7</button>\r\n </div>\r\n\r\n <div class=\"time-picker-body\">\r\n <div class=\"time-column\">\r\n <div class=\"column-header\">Hour</div>\r\n <div class=\"time-list\">\r\n <div *ngFor=\"let hour of hours\" class=\"time-item\" [class.selected]=\"selectedHour === hour\"\r\n (click)=\"selectHour(hour)\">\r\n {{ padZero(hour) }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-column\">\r\n <div class=\"column-header\">Minute</div>\r\n <div class=\"time-list\">\r\n <div *ngFor=\"let minute of minutes\" class=\"time-item\"\r\n [class.selected]=\"selectedMinute === minute\" (click)=\"selectMinute(minute)\">\r\n {{ padZero(minute) }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errorMessage && control?.touched\" class=\"fv-error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";*{font-family:Poppins,sans-serif}.fv-field-container{display:flex;flex-direction:column;margin-bottom:16px;width:100%;position:relative}.fv-label{margin-bottom:6px;font-size:14px;font-weight:600;color:#151d48;display:flex;align-items:center;gap:4px}.fv-required-asterisk{color:#e74c3c;font-weight:700}.time-input-wrapper{position:relative;width:100%}.time-input{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border:1px solid #8CBBA8;border-radius:8px;font-size:14px;font-weight:400;font-family:Poppins,sans-serif;transition:all .2s ease-in-out;background-color:#fff;color:#1f2b41;box-sizing:border-box;width:100%;height:34px;cursor:pointer;-webkit-user-select:none;user-select:none}.time-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.time-input:hover:not(.disabled){border-color:#3498db}.time-input.error{border-color:#dc3545!important}.time-input.error:focus{box-shadow:0 0 0 3px #dc35451a}.time-input.disabled{background-color:#ecf0f1;cursor:not-allowed;opacity:.6}.time-display{flex:1;color:#1f2b41}.clock-icon{color:#666;flex-shrink:0}.time-picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #8CBBA8;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:1000;min-width:200px;overflow:hidden}.time-picker-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.selected-time{font-size:18px;font-weight:600;color:#151d48}.close-btn{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color .2s}.close-btn:hover{color:#e74c3c}.time-picker-body{display:flex;gap:1px;background:#e0e0e0}.time-column{flex:1;background:#fff;display:flex;flex-direction:column}.column-header{padding:8px;text-align:center;font-weight:600;font-size:12px;color:#666;background:#f8f9fa;border-bottom:1px solid #e0e0e0;text-transform:uppercase;letter-spacing:.5px}.time-list{max-height:200px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#8CBBA8 #f0f0f0}.time-list::-webkit-scrollbar{width:6px}.time-list::-webkit-scrollbar-track{background:#f0f0f0}.time-list::-webkit-scrollbar-thumb{background:#8cbba8;border-radius:3px}.time-list::-webkit-scrollbar-thumb:hover{background:#7aaa98}.time-item{padding:8px 12px;text-align:center;cursor:pointer;transition:all .2s;font-size:14px;color:#1f2b41}.time-item:hover{background:#e8f4f0}.time-item.selected{background:#8cbba8;color:#fff;font-weight:600}.fv-error-message{margin-top:4px;font-size:12px;color:#e74c3c;display:flex;align-items:center;gap:4px}.fv-error-message:before{content:\"\\26a0\";font-size:14px}\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 }] });
|
|
3056
|
+
}
|
|
3057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvTimeFieldComponent, decorators: [{
|
|
3058
|
+
type: Component,
|
|
3059
|
+
args: [{ standalone: true, imports: [CommonModule, ReactiveFormsModule], selector: 'fv-time-field', template: "<div class=\"fv-field-container\">\r\n <label *ngIf=\"label\" class=\"fv-label\">\r\n {{ label }} <span *ngIf=\"isRequired()\" class=\"fv-required-asterisk\">*</span>\r\n </label>\r\n\r\n <div class=\"time-input-wrapper\">\r\n <div class=\"time-input\" [class.error]=\"errorMessage && control?.touched\" [class.disabled]=\"disabled\"\r\n (click)=\"togglePicker()\" tabindex=\"0\" (blur)=\"onBlur($event)\" (focus)=\"onFocus($event)\">\r\n <span class=\"time-display\">{{ getDisplayValue() }}</span>\r\n <svg class=\"clock-icon\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\r\n <path\r\n d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\" />\r\n </svg>\r\n </div>\r\n\r\n <div *ngIf=\"showPicker\" class=\"time-picker-dropdown\">\r\n <div class=\"time-picker-header\">\r\n <span class=\"selected-time\">\r\n {{ selectedHour !== null ? padZero(selectedHour) : '--' }}:{{ selectedMinute !== null ?\r\n padZero(selectedMinute) : '--' }}\r\n </span>\r\n <button type=\"button\" class=\"close-btn\" (click)=\"closePicker()\">\u00D7</button>\r\n </div>\r\n\r\n <div class=\"time-picker-body\">\r\n <div class=\"time-column\">\r\n <div class=\"column-header\">Hour</div>\r\n <div class=\"time-list\">\r\n <div *ngFor=\"let hour of hours\" class=\"time-item\" [class.selected]=\"selectedHour === hour\"\r\n (click)=\"selectHour(hour)\">\r\n {{ padZero(hour) }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"time-column\">\r\n <div class=\"column-header\">Minute</div>\r\n <div class=\"time-list\">\r\n <div *ngFor=\"let minute of minutes\" class=\"time-item\"\r\n [class.selected]=\"selectedMinute === minute\" (click)=\"selectMinute(minute)\">\r\n {{ padZero(minute) }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errorMessage && control?.touched\" class=\"fv-error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";*{font-family:Poppins,sans-serif}.fv-field-container{display:flex;flex-direction:column;margin-bottom:16px;width:100%;position:relative}.fv-label{margin-bottom:6px;font-size:14px;font-weight:600;color:#151d48;display:flex;align-items:center;gap:4px}.fv-required-asterisk{color:#e74c3c;font-weight:700}.time-input-wrapper{position:relative;width:100%}.time-input{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border:1px solid #8CBBA8;border-radius:8px;font-size:14px;font-weight:400;font-family:Poppins,sans-serif;transition:all .2s ease-in-out;background-color:#fff;color:#1f2b41;box-sizing:border-box;width:100%;height:34px;cursor:pointer;-webkit-user-select:none;user-select:none}.time-input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.time-input:hover:not(.disabled){border-color:#3498db}.time-input.error{border-color:#dc3545!important}.time-input.error:focus{box-shadow:0 0 0 3px #dc35451a}.time-input.disabled{background-color:#ecf0f1;cursor:not-allowed;opacity:.6}.time-display{flex:1;color:#1f2b41}.clock-icon{color:#666;flex-shrink:0}.time-picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:#fff;border:1px solid #8CBBA8;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:1000;min-width:200px;overflow:hidden}.time-picker-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.selected-time{font-size:18px;font-weight:600;color:#151d48}.close-btn{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color .2s}.close-btn:hover{color:#e74c3c}.time-picker-body{display:flex;gap:1px;background:#e0e0e0}.time-column{flex:1;background:#fff;display:flex;flex-direction:column}.column-header{padding:8px;text-align:center;font-weight:600;font-size:12px;color:#666;background:#f8f9fa;border-bottom:1px solid #e0e0e0;text-transform:uppercase;letter-spacing:.5px}.time-list{max-height:200px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#8CBBA8 #f0f0f0}.time-list::-webkit-scrollbar{width:6px}.time-list::-webkit-scrollbar-track{background:#f0f0f0}.time-list::-webkit-scrollbar-thumb{background:#8cbba8;border-radius:3px}.time-list::-webkit-scrollbar-thumb:hover{background:#7aaa98}.time-item{padding:8px 12px;text-align:center;cursor:pointer;transition:all .2s;font-size:14px;color:#1f2b41}.time-item:hover{background:#e8f4f0}.time-item.selected{background:#8cbba8;color:#fff;font-weight:600}.fv-error-message{margin-top:4px;font-size:12px;color:#e74c3c;display:flex;align-items:center;gap:4px}.fv-error-message:before{content:\"\\26a0\";font-size:14px}\n"] }]
|
|
3060
|
+
}], propDecorators: { label: [{
|
|
3061
|
+
type: Input
|
|
3062
|
+
}], schema: [{
|
|
3063
|
+
type: Input
|
|
3064
|
+
}], control: [{
|
|
3065
|
+
type: Input
|
|
3066
|
+
}], disabled: [{
|
|
3067
|
+
type: Input
|
|
3068
|
+
}], readonly: [{
|
|
3069
|
+
type: Input
|
|
3070
|
+
}], placeholder: [{
|
|
3071
|
+
type: Input
|
|
3072
|
+
}], valueChange: [{
|
|
3073
|
+
type: Output
|
|
3074
|
+
}], blur: [{
|
|
3075
|
+
type: Output
|
|
3076
|
+
}], focus: [{
|
|
3077
|
+
type: Output
|
|
3078
|
+
}] } });
|
|
3079
|
+
|
|
2907
3080
|
// add-update-form.component.ts
|
|
2908
3081
|
class AddUpdateFormComponent {
|
|
2909
3082
|
fb;
|
|
@@ -3435,8 +3608,8 @@ class AddUpdateFormComponent {
|
|
|
3435
3608
|
}
|
|
3436
3609
|
mapSearchOptions(options) {
|
|
3437
3610
|
return options.map(opt => ({
|
|
3438
|
-
code: opt.code || opt.value,
|
|
3439
|
-
name: opt.name || opt.label || opt.value,
|
|
3611
|
+
code: String(opt.code || opt.value || ''),
|
|
3612
|
+
name: String(opt.name || opt.label || opt.value || ''),
|
|
3440
3613
|
value: opt.value
|
|
3441
3614
|
}));
|
|
3442
3615
|
}
|
|
@@ -3737,6 +3910,7 @@ class AddUpdateFormComponent {
|
|
|
3737
3910
|
[control]="control"
|
|
3738
3911
|
[schema]="getSchema(column)"
|
|
3739
3912
|
[disabled]="column.disabled || false"
|
|
3913
|
+
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3740
3914
|
>
|
|
3741
3915
|
</fv-name-code>
|
|
3742
3916
|
</ng-container>
|
|
@@ -3791,6 +3965,18 @@ class AddUpdateFormComponent {
|
|
|
3791
3965
|
>
|
|
3792
3966
|
</fv-document-field>
|
|
3793
3967
|
</ng-container>
|
|
3968
|
+
|
|
3969
|
+
<ng-container *ngIf="column.type === 'time' && !column.hidden">
|
|
3970
|
+
<fv-time-field
|
|
3971
|
+
[label]="column.label"
|
|
3972
|
+
[placeholder]="column.placeholder || '--:--'"
|
|
3973
|
+
[control]="control"
|
|
3974
|
+
[schema]="getSchema(column)"
|
|
3975
|
+
[disabled]="column.disabled || false"
|
|
3976
|
+
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
3977
|
+
>
|
|
3978
|
+
</fv-time-field>
|
|
3979
|
+
</ng-container>
|
|
3794
3980
|
</div>
|
|
3795
3981
|
|
|
3796
3982
|
</ng-template>
|
|
@@ -3817,7 +4003,7 @@ class AddUpdateFormComponent {
|
|
|
3817
4003
|
</div>
|
|
3818
4004
|
</form>
|
|
3819
4005
|
</div>
|
|
3820
|
-
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins!important}.form-container{background:#f5f5f5;padding:5px 10px 10px;border-radius:8px;margin:0 auto;max-width:100%;box-sizing:border-box}.error-border{border-color:red!important}.hidden{display:none!important}.form-header{margin-bottom:5px}.form-header h2{margin:0;font-size:20px;font-weight:700;color:#303030}.dynamic-form{background:#fff;padding:10px;border-radius:6px;box-shadow:0 1px 3px #0000001a;max-width:100%;box-sizing:border-box}.form-section{margin-bottom:10px}.section-title{font-size:16px;font-weight:700;color:#303030;margin:0 0 16px;text-transform:uppercase;letter-spacing:.5px}.fields-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;width:100%;box-sizing:border-box;overflow:visible}.form-field-wrapper{display:flex;position:relative;flex-direction:column;min-width:0;width:100%;box-sizing:border-box;overflow:visible}.password-toggle-btn{position:absolute;right:10px;top:32px;background:none;border:none;cursor:pointer;padding:4px;color:#666}.password-toggle-btn:hover{color:#333}.password-toggle-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}@media (min-width: 1200px) and (max-width: 1400px){.fields-row{grid-template-columns:repeat(5,1fr)}.form-control{width:180px;max-width:180px}}@media (max-width: 1200px){.fields-row{grid-template-columns:repeat(3,1fr)}.form-control{width:100%;max-width:100%}}@media (max-width: 992px){.fields-row{grid-template-columns:repeat(2,1fr);gap:12px}}@media (max-width: 768px){.fields-row{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 640px){.fields-row{grid-template-columns:1fr;gap:12px}.form-field-wrapper{width:100%}}label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px}.required{color:#e74c3c;margin-left:2px}.form-control{padding:5px 10px;width:100%;max-width:100%;height:34px;border:1px solid #8CBBA8;border-radius:8px;background-color:#fff;font-size:14px;font-weight:400;font-family:inherit;color:#1f2b41;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.form-control:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-control:disabled{background-color:#ecf0f1;cursor:not-allowed}textarea.form-control{resize:vertical;min-height:100px}select.form-control{cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 8px center;padding-right:40px}.checkbox-wrapper{display:flex;align-items:center;gap:8px}input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-label{cursor:pointer;margin:0}.file-upload-container{display:flex;align-items:center;gap:20px;padding:20px;background:#fff;max-width:100%;box-sizing:border-box;flex-wrap:wrap}.material-icons{font-family:Material Icons!important;border-radius:4px;display:inline-block;width:40px;padding:8px;height:40px}.file-field-wrapper{width:100%;margin-top:16px;max-width:100%;box-sizing:border-box}.photo-preview-circle{width:100px;height:100px;border-radius:50%;overflow:hidden;border:2px solid #ddd;cursor:pointer;transition:border-color .2s}.photo-preview-circle:hover{border-color:#3498db}.preview-image,.default-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-image img{width:100%;height:100%;object-fit:cover}.default-photo{background:#f0f0f0;color:#999;font-size:40px}.file-info{display:flex;flex-direction:column;gap:8px}.btn-delete{border:none;border-radius:4px;cursor:pointer;font-size:14px;padding:0}.upload-btn-group{display:flex;align-items:center;border:1px solid #d3d3d3;border-radius:8px;background:#fff;overflow:hidden;width:fit-content}.btn-upload{background:#fff;color:#222;border:none;padding:0 18px;font-size:16px;border-right:1px solid #e0e0e0;border-radius:8px 0 0 8px;outline:none;box-shadow:none;cursor:pointer;height:40px;transition:background .2s}.btn-upload-icon{background:#f5f5f5;border:none;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;width:48px;height:40px;cursor:pointer;transition:background .2s}.btn-upload-icon i.material-icons{font-size:22px;color:#222}.btn-upload:hover,.btn-upload-icon:hover{background:#f0f0f0}.btn-delete{background:#fff;color:red}.btn-delete:hover{background:#f0f0f0}.file-name{font-size:12px;color:#666;margin:10px 8px 8px}.file-label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px;display:block}.radio-label{font-weight:600;margin-bottom:15px;color:#151d48;font-size:14px;display:block}.radio-group{display:flex;gap:20px;align-items:center}.radio-item{display:flex;align-items:center;gap:6px}input[type=radio]{width:18px;height:18px;cursor:pointer;accent-color:#3498db}.radio-option-label{cursor:pointer;margin:0;font-weight:400}.hint{font-size:12px;color:#7f8c8d;margin-top:4px}.error-message{color:#e74c3c;font-size:12px;margin-top:4px}.form-actions{display:flex;gap:8px;align-items:center;justify-content:space-between;gap:12px;padding-top:5px}.btn{padding:8px 20px;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background-color:#006aff;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2980b9}.btn-primary:disabled{background-color:#bdc3c7;cursor:not-allowed}.btn-secondary{background-color:#95a5a6;color:#fff}.btn-secondary:hover{background-color:#7f8c8d}.btn-outline{background-color:#303030;color:#fff}.btn-outline:hover{background-color:#2b2b2b;color:#fff}.month-year-wrapper{position:relative;display:flex;align-items:center;width:100%}.month-year-wrapper .form-control{padding-right:45px}.month-picker-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0;border:none;padding:0;margin:0}.month-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.month-picker-btn:hover:not(:disabled){color:#3498db}.month-picker-btn:disabled{cursor:not-allowed;opacity:.5}.month-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}.search-select-wrapper{position:relative;width:100%}.search-select-input{padding-right:10px}.search-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:auto;min-width:100%;max-width:calc(100vw - 16px);background:#fff;border:1px solid #d3d3d3;border-radius:8px;max-height:220px;overflow-y:auto;box-shadow:0 4px 10px #00000014;z-index:5;padding:6px 0;transform:translate(0);transition:transform .1s ease-out}.search-select-option{padding:8px 12px;cursor:pointer;display:flex;gap:8px;align-items:center;border-bottom:1px solid #f2f2f2}.search-select-option:last-child{border-bottom:none}.search-select-option:hover{background:#f5f9ff}.repeatable-group-wrapper{position:relative;background:#fff;border:1px solid #eee;border-radius:8px;padding:20px 100px 20px 20px;margin-bottom:15px;box-shadow:0 1px 2px #0000000d}.repeatable-actions{position:absolute;top:45px;right:15px;display:flex;gap:8px;z-index:10}.btn-icon{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.btn-icon:hover{background:#f0f0f0}.option-code{color:#0052cc;font-weight:700;min-width:90px}.option-name{color:#151d48;font-weight:500}.time-picker-wrapper{position:relative;display:flex;align-items:center;width:100%}.time-input{padding-right:45px;flex:1}.time-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.time-picker-btn:hover:not(:disabled){color:#3498db}.time-picker-btn:disabled{cursor:not-allowed;opacity:.5}.time-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}input[type=time]{cursor:pointer}input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:0;position:absolute;right:0;width:100%;height:100%}.date-picker-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-form-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-text-field-wrapper{background-color:#fff}.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3498db}.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:red!important}.date-picker-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.date-picker-field ::ng-deep .mat-mdc-form-field-input-control input{font-family:Poppins!important;font-size:14px;font-weight:400;color:#1f2b41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvRadioGroupComponent, selector: "fv-radio-group", inputs: ["label", "control", "options", "disabled", "required", "name", "layout"], outputs: ["valueChange"] }, { kind: "component", type: FvCheckboxComponent, selector: "fv-checkbox", inputs: ["label", "control", "disabled", "required"], outputs: ["valueChange"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvImageSelectorComponent, selector: "fv-image-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvRichTextEditorComponent, selector: "fv-rich-text-editor", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "minHeight", "showToolbar"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: FvPhoneFieldComponent, selector: "fv-phone-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvUanFieldComponent, selector: "fv-uan-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvPfFieldComponent, selector: "fv-pf-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEsiFieldComponent, selector: "fv-esi-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIfscFieldComponent, selector: "fv-ifsc-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvMicrFieldComponent, selector: "fv-micr-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIbanFieldComponent, selector: "fv-iban-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEmailFieldComponent, selector: "fv-email-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvPasswordFieldComponent, selector: "fv-password-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvServicePeriodComponent, selector: "fv-service-period", inputs: ["label", "group", "startField", "endField", "control"] }, { kind: "component", type: FvDocumentFieldComponent, selector: "fv-document-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange"] }] });
|
|
4006
|
+
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins!important}.form-container{background:#f5f5f5;padding:5px 10px 10px;border-radius:8px;margin:0 auto;max-width:100%;box-sizing:border-box}.error-border{border-color:red!important}.hidden{display:none!important}.form-header{margin-bottom:5px}.form-header h2{margin:0;font-size:20px;font-weight:700;color:#303030}.dynamic-form{background:#fff;padding:10px;border-radius:6px;box-shadow:0 1px 3px #0000001a;max-width:100%;box-sizing:border-box}.form-section{margin-bottom:10px}.section-title{font-size:16px;font-weight:700;color:#303030;margin:0 0 16px;text-transform:uppercase;letter-spacing:.5px}.fields-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;width:100%;box-sizing:border-box;overflow:visible}.form-field-wrapper{display:flex;position:relative;flex-direction:column;min-width:0;width:100%;box-sizing:border-box;overflow:visible}.password-toggle-btn{position:absolute;right:10px;top:32px;background:none;border:none;cursor:pointer;padding:4px;color:#666}.password-toggle-btn:hover{color:#333}.password-toggle-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}@media (min-width: 1200px) and (max-width: 1400px){.fields-row{grid-template-columns:repeat(5,1fr)}.form-control{width:180px;max-width:180px}}@media (max-width: 1200px){.fields-row{grid-template-columns:repeat(3,1fr)}.form-control{width:100%;max-width:100%}}@media (max-width: 992px){.fields-row{grid-template-columns:repeat(2,1fr);gap:12px}}@media (max-width: 768px){.fields-row{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 640px){.fields-row{grid-template-columns:1fr;gap:12px}.form-field-wrapper{width:100%}}label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px}.required{color:#e74c3c;margin-left:2px}.form-control{padding:5px 10px;width:100%;max-width:100%;height:34px;border:1px solid #8CBBA8;border-radius:8px;background-color:#fff;font-size:14px;font-weight:400;font-family:inherit;color:#1f2b41;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.form-control:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.form-control:disabled{background-color:#ecf0f1;cursor:not-allowed}textarea.form-control{resize:vertical;min-height:100px}select.form-control{cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 8px center;padding-right:40px}.checkbox-wrapper{display:flex;align-items:center;gap:8px}input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-label{cursor:pointer;margin:0}.file-upload-container{display:flex;align-items:center;gap:20px;padding:20px;background:#fff;max-width:100%;box-sizing:border-box;flex-wrap:wrap}.material-icons{font-family:Material Icons!important;border-radius:4px;display:inline-block;width:40px;padding:8px;height:40px}.file-field-wrapper{width:100%;margin-top:16px;max-width:100%;box-sizing:border-box}.photo-preview-circle{width:100px;height:100px;border-radius:50%;overflow:hidden;border:2px solid #ddd;cursor:pointer;transition:border-color .2s}.photo-preview-circle:hover{border-color:#3498db}.preview-image,.default-photo{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-image img{width:100%;height:100%;object-fit:cover}.default-photo{background:#f0f0f0;color:#999;font-size:40px}.file-info{display:flex;flex-direction:column;gap:8px}.btn-delete{border:none;border-radius:4px;cursor:pointer;font-size:14px;padding:0}.upload-btn-group{display:flex;align-items:center;border:1px solid #d3d3d3;border-radius:8px;background:#fff;overflow:hidden;width:fit-content}.btn-upload{background:#fff;color:#222;border:none;padding:0 18px;font-size:16px;border-right:1px solid #e0e0e0;border-radius:8px 0 0 8px;outline:none;box-shadow:none;cursor:pointer;height:40px;transition:background .2s}.btn-upload-icon{background:#f5f5f5;border:none;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;width:48px;height:40px;cursor:pointer;transition:background .2s}.btn-upload-icon i.material-icons{font-size:22px;color:#222}.btn-upload:hover,.btn-upload-icon:hover{background:#f0f0f0}.btn-delete{background:#fff;color:red}.btn-delete:hover{background:#f0f0f0}.file-name{font-size:12px;color:#666;margin:10px 8px 8px}.file-label{font-weight:600;margin-bottom:6px;color:#151d48;font-size:14px;display:block}.radio-label{font-weight:600;margin-bottom:15px;color:#151d48;font-size:14px;display:block}.radio-group{display:flex;gap:20px;align-items:center}.radio-item{display:flex;align-items:center;gap:6px}input[type=radio]{width:18px;height:18px;cursor:pointer;accent-color:#3498db}.radio-option-label{cursor:pointer;margin:0;font-weight:400}.hint{font-size:12px;color:#7f8c8d;margin-top:4px}.error-message{color:#e74c3c;font-size:12px;margin-top:4px}.form-actions{display:flex;gap:8px;align-items:center;justify-content:space-between;gap:12px;padding-top:5px}.btn{padding:8px 20px;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background-color:#006aff;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2980b9}.btn-primary:disabled{background-color:#bdc3c7;cursor:not-allowed}.btn-secondary{background-color:#95a5a6;color:#fff}.btn-secondary:hover{background-color:#7f8c8d}.btn-outline{background-color:#303030;color:#fff}.btn-outline:hover{background-color:#2b2b2b;color:#fff}.month-year-wrapper{position:relative;display:flex;align-items:center;width:100%}.month-year-wrapper .form-control{padding-right:45px}.month-picker-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0;border:none;padding:0;margin:0}.month-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.month-picker-btn:hover:not(:disabled){color:#3498db}.month-picker-btn:disabled{cursor:not-allowed;opacity:.5}.month-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}.search-select-wrapper{position:relative;width:100%}.search-select-input{padding-right:10px}.search-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:auto;min-width:100%;max-width:calc(100vw - 16px);background:#fff;border:1px solid #d3d3d3;border-radius:8px;max-height:220px;overflow-y:auto;box-shadow:0 4px 10px #00000014;z-index:5;padding:6px 0;transform:translate(0);transition:transform .1s ease-out}.search-select-option{padding:8px 12px;cursor:pointer;display:flex;gap:8px;align-items:center;border-bottom:1px solid #f2f2f2}.search-select-option:last-child{border-bottom:none}.search-select-option:hover{background:#f5f9ff}.repeatable-group-wrapper{position:relative;background:#fff;border:1px solid #eee;border-radius:8px;padding:20px 100px 20px 20px;margin-bottom:15px;box-shadow:0 1px 2px #0000000d}.repeatable-actions{position:absolute;top:45px;right:15px;display:flex;gap:8px;z-index:10}.btn-icon{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.btn-icon:hover{background:#f0f0f0}.option-code{color:#0052cc;font-weight:700;min-width:90px}.option-name{color:#151d48;font-weight:500}.time-picker-wrapper{position:relative;display:flex;align-items:center;width:100%}.time-input{padding-right:45px;flex:1}.time-picker-btn{position:absolute;right:5px;background:transparent;border:none;cursor:pointer;padding:5px;display:flex;align-items:center;justify-content:center;color:#666;transition:color .2s;z-index:1}.time-picker-btn:hover:not(:disabled){color:#3498db}.time-picker-btn:disabled{cursor:not-allowed;opacity:.5}.time-picker-btn .material-icons{font-size:20px;width:auto;height:auto;padding:0}input[type=time]{cursor:pointer}input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:0;position:absolute;right:0;width:100%;height:100%}.date-picker-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-form-field{width:100%}.date-picker-field ::ng-deep .mat-mdc-text-field-wrapper{background-color:#fff}.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#8cbba8}.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__leading,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__notch,.date-picker-field ::ng-deep .mdc-text-field--outlined.mdc-text-field--focused .mdc-notched-outline__trailing{border-color:#3498db}.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__leading,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__notch,.date-picker-field.error-border ::ng-deep .mdc-text-field--outlined .mdc-notched-outline__trailing{border-color:red!important}.date-picker-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.date-picker-field ::ng-deep .mat-mdc-form-field-input-control input{font-family:Poppins!important;font-size:14px;font-weight:400;color:#1f2b41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvRadioGroupComponent, selector: "fv-radio-group", inputs: ["label", "control", "options", "disabled", "required", "name", "layout"], outputs: ["valueChange"] }, { kind: "component", type: FvCheckboxComponent, selector: "fv-checkbox", inputs: ["label", "control", "disabled", "required"], outputs: ["valueChange"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvImageSelectorComponent, selector: "fv-image-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvRichTextEditorComponent, selector: "fv-rich-text-editor", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "minHeight", "showToolbar"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: FvPhoneFieldComponent, selector: "fv-phone-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvUanFieldComponent, selector: "fv-uan-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvPfFieldComponent, selector: "fv-pf-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEsiFieldComponent, selector: "fv-esi-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIfscFieldComponent, selector: "fv-ifsc-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvMicrFieldComponent, selector: "fv-micr-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIbanFieldComponent, selector: "fv-iban-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEmailFieldComponent, selector: "fv-email-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvPasswordFieldComponent, selector: "fv-password-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvServicePeriodComponent, selector: "fv-service-period", inputs: ["label", "group", "startField", "endField", "control"] }, { kind: "component", type: FvDocumentFieldComponent, selector: "fv-document-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange"] }, { kind: "component", type: FvTimeFieldComponent, selector: "fv-time-field", inputs: ["label", "schema", "control", "disabled", "readonly", "placeholder"], outputs: ["valueChange", "blur", "focus"] }] });
|
|
3821
4007
|
}
|
|
3822
4008
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AddUpdateFormComponent, decorators: [{
|
|
3823
4009
|
type: Component,
|
|
@@ -3845,7 +4031,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3845
4031
|
FvEmailFieldComponent,
|
|
3846
4032
|
FvPasswordFieldComponent,
|
|
3847
4033
|
FvServicePeriodComponent,
|
|
3848
|
-
FvDocumentFieldComponent
|
|
4034
|
+
FvDocumentFieldComponent,
|
|
4035
|
+
FvTimeFieldComponent
|
|
3849
4036
|
], template: `
|
|
3850
4037
|
<div class="form-container">
|
|
3851
4038
|
<div class="form-header" *ngIf="config.formTitle">
|
|
@@ -4072,6 +4259,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4072
4259
|
[control]="control"
|
|
4073
4260
|
[schema]="getSchema(column)"
|
|
4074
4261
|
[disabled]="column.disabled || false"
|
|
4262
|
+
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4075
4263
|
>
|
|
4076
4264
|
</fv-name-code>
|
|
4077
4265
|
</ng-container>
|
|
@@ -4126,6 +4314,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4126
4314
|
>
|
|
4127
4315
|
</fv-document-field>
|
|
4128
4316
|
</ng-container>
|
|
4317
|
+
|
|
4318
|
+
<ng-container *ngIf="column.type === 'time' && !column.hidden">
|
|
4319
|
+
<fv-time-field
|
|
4320
|
+
[label]="column.label"
|
|
4321
|
+
[placeholder]="column.placeholder || '--:--'"
|
|
4322
|
+
[control]="control"
|
|
4323
|
+
[schema]="getSchema(column)"
|
|
4324
|
+
[disabled]="column.disabled || false"
|
|
4325
|
+
(valueChange)="handleFieldChange(column.name, $event, control)"
|
|
4326
|
+
>
|
|
4327
|
+
</fv-time-field>
|
|
4328
|
+
</ng-container>
|
|
4129
4329
|
</div>
|
|
4130
4330
|
|
|
4131
4331
|
</ng-template>
|
|
@@ -4524,7 +4724,7 @@ class QueryFormComponent {
|
|
|
4524
4724
|
</form>
|
|
4525
4725
|
</div>
|
|
4526
4726
|
</div>
|
|
4527
|
-
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins}.material-icons{font-family:Material Icons!important;font-size:22px;display:inline-block}.cont{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.validation-message{background-color:#fee;color:#c33;padding:12px 16px;border-radius:8px;margin:10px 0;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;border:1px solid #fcc}.export-buttons{display:flex;gap:10px}.export-btn{cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .3s ease;border:none;padding:8px 16px;border-radius:7px;background:#006aff;color:#fff}.export-btn:hover{background:#0045a6;box-shadow:0 4px 8px #00000026}.export-menu-container{position:relative;border-radius:7px}.export-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:4px;box-shadow:0 4px 12px #00000026;margin-top:5px;min-width:180px;z-index:1000}.menu-item{width:100%;color:#000;text-align:left;background:#fff;border:none;cursor:pointer;font-size:14px;transition:background .2s;padding:12px 16px;display:flex;align-items:center;gap:10px}.menu-item:hover{background:#f5f5f5}.query-form-container{background:#f2f2f2;border-radius:8px;padding:5px 10px 10px;margin:auto;box-shadow:0 2px 5px #0000001a;margin-bottom:1rem;overflow:visible}.form-title{font-size:20px;font-weight:700;color:#303030;margin:0;font-family:Poppins}.form-content{display:flex;flex-direction:column;gap:5px;background-color:#fff;padding:10px;border:.5px solid #cfcfcf;border-radius:12px;overflow:visible}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;width:100%;box-sizing:border-box;overflow:visible}.form-field{display:flex;flex-direction:column;min-width:0;width:100%;position:relative;overflow:visible;box-sizing:border-box}.view-button{padding:8px 20px;background:#006aff;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background-color .2s}.view-button:hover{background:#0045a6}.button-row{display:flex;justify-content:space-between;gap:12px;padding-top:5px;margin-top:5px}.back-button{padding:8px 20px;background-color:#303030;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background-color .2s}.back-button:hover{background-color:#2b2b2b}@media (min-width: 1200px) and (max-width: 1400px){.form-row{grid-template-columns:repeat(5,1fr)}}@media (max-width: 1200px){.form-row{grid-template-columns:repeat(3,1fr)}}@media (max-width: 992px){.form-row{grid-template-columns:repeat(2,1fr);gap:12px}}@media (max-width: 768px){.form-row{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 640px){.form-row{grid-template-columns:1fr;gap:12px}.form-field{width:100%}}\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["
|
|
4727
|
+
`, isInline: true, styles: ["@import\"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";*{font-family:Poppins}.material-icons{font-family:Material Icons!important;font-size:22px;display:inline-block}.cont{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.validation-message{background-color:#fee;color:#c33;padding:12px 16px;border-radius:8px;margin:10px 0;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;border:1px solid #fcc}.export-buttons{display:flex;gap:10px}.export-btn{cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .3s ease;border:none;padding:8px 16px;border-radius:7px;background:#006aff;color:#fff}.export-btn:hover{background:#0045a6;box-shadow:0 4px 8px #00000026}.export-menu-container{position:relative;border-radius:7px}.export-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:4px;box-shadow:0 4px 12px #00000026;margin-top:5px;min-width:180px;z-index:1000}.menu-item{width:100%;color:#000;text-align:left;background:#fff;border:none;cursor:pointer;font-size:14px;transition:background .2s;padding:12px 16px;display:flex;align-items:center;gap:10px}.menu-item:hover{background:#f5f5f5}.query-form-container{background:#f2f2f2;border-radius:8px;padding:5px 10px 10px;margin:auto;box-shadow:0 2px 5px #0000001a;margin-bottom:1rem;overflow:visible}.form-title{font-size:20px;font-weight:700;color:#303030;margin:0;font-family:Poppins}.form-content{display:flex;flex-direction:column;gap:5px;background-color:#fff;padding:10px;border:.5px solid #cfcfcf;border-radius:12px;overflow:visible}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;width:100%;box-sizing:border-box;overflow:visible}.form-field{display:flex;flex-direction:column;min-width:0;width:100%;position:relative;overflow:visible;box-sizing:border-box}.view-button{padding:8px 20px;background:#006aff;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background-color .2s}.view-button:hover{background:#0045a6}.button-row{display:flex;justify-content:space-between;gap:12px;padding-top:5px;margin-top:5px}.back-button{padding:8px 20px;background-color:#303030;color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;transition:background-color .2s}.back-button:hover{background-color:#2b2b2b}@media (min-width: 1200px) and (max-width: 1400px){.form-row{grid-template-columns:repeat(5,1fr)}}@media (max-width: 1200px){.form-row{grid-template-columns:repeat(3,1fr)}}@media (max-width: 992px){.form-row{grid-template-columns:repeat(2,1fr);gap:12px}}@media (max-width: 768px){.form-row{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 640px){.form-row{grid-template-columns:1fr;gap:12px}.form-field{width:100%}}\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FvEntryFieldComponent, selector: "fv-entry-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "type", "allowAlphabetsOnly", "maxLength"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDropdownComponent, selector: "fv-dropdown", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvNumberFieldComponent, selector: "fv-number-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly", "min", "max", "step"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvDateFieldComponent, selector: "fv-date-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvMonthYearFieldComponent, selector: "fv-month-year-field", inputs: ["label", "schema", "control", "disabled", "readonly", "min", "max"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvFileSelectorComponent, selector: "fv-file-selector", inputs: ["label", "placeholder", "schema", "control", "disabled", "accept", "maxSize"], outputs: ["valueChange", "blur"] }, { kind: "component", type: FvNameCodeComponent, selector: "fv-name-code", inputs: ["label", "placeholder", "options", "schema", "control", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: FvPhoneFieldComponent, selector: "fv-phone-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvUanFieldComponent, selector: "fv-uan-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvPfFieldComponent, selector: "fv-pf-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEsiFieldComponent, selector: "fv-esi-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIfscFieldComponent, selector: "fv-ifsc-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvMicrFieldComponent, selector: "fv-micr-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvIbanFieldComponent, selector: "fv-iban-field", inputs: ["label", "control", "disabled", "schema"], outputs: ["blur", "focus"] }, { kind: "component", type: FvEmailFieldComponent, selector: "fv-email-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }, { kind: "component", type: FvPasswordFieldComponent, selector: "fv-password-field", inputs: ["label", "placeholder", "schema", "control", "disabled", "readonly"], outputs: ["valueChange", "blur", "focus"] }] });
|
|
4528
4728
|
}
|
|
4529
4729
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueryFormComponent, decorators: [{
|
|
4530
4730
|
type: Component,
|
|
@@ -4779,7 +4979,8 @@ class FvControlsModule {
|
|
|
4779
4979
|
QueryFormComponent,
|
|
4780
4980
|
FvEmailFieldComponent,
|
|
4781
4981
|
FvPasswordFieldComponent,
|
|
4782
|
-
FvDocumentFieldComponent
|
|
4982
|
+
FvDocumentFieldComponent,
|
|
4983
|
+
FvTimeFieldComponent], exports: [FvEntryFieldComponent,
|
|
4783
4984
|
FvDateFieldComponent,
|
|
4784
4985
|
FvMonthYearFieldComponent,
|
|
4785
4986
|
FvNumberFieldComponent,
|
|
@@ -4794,7 +4995,8 @@ class FvControlsModule {
|
|
|
4794
4995
|
QueryFormComponent,
|
|
4795
4996
|
FvEmailFieldComponent,
|
|
4796
4997
|
FvPasswordFieldComponent,
|
|
4797
|
-
FvDocumentFieldComponent
|
|
4998
|
+
FvDocumentFieldComponent,
|
|
4999
|
+
FvTimeFieldComponent] });
|
|
4798
5000
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvControlsModule, imports: [CommonModule,
|
|
4799
5001
|
ReactiveFormsModule,
|
|
4800
5002
|
FvEntryFieldComponent,
|
|
@@ -4812,7 +5014,8 @@ class FvControlsModule {
|
|
|
4812
5014
|
QueryFormComponent,
|
|
4813
5015
|
FvEmailFieldComponent,
|
|
4814
5016
|
FvPasswordFieldComponent,
|
|
4815
|
-
FvDocumentFieldComponent
|
|
5017
|
+
FvDocumentFieldComponent,
|
|
5018
|
+
FvTimeFieldComponent] });
|
|
4816
5019
|
}
|
|
4817
5020
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FvControlsModule, decorators: [{
|
|
4818
5021
|
type: NgModule,
|
|
@@ -4837,6 +5040,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4837
5040
|
FvEmailFieldComponent,
|
|
4838
5041
|
FvPasswordFieldComponent,
|
|
4839
5042
|
FvDocumentFieldComponent,
|
|
5043
|
+
FvTimeFieldComponent,
|
|
4840
5044
|
],
|
|
4841
5045
|
exports: [
|
|
4842
5046
|
FvEntryFieldComponent,
|
|
@@ -4855,6 +5059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4855
5059
|
FvEmailFieldComponent,
|
|
4856
5060
|
FvPasswordFieldComponent,
|
|
4857
5061
|
FvDocumentFieldComponent,
|
|
5062
|
+
FvTimeFieldComponent,
|
|
4858
5063
|
],
|
|
4859
5064
|
}]
|
|
4860
5065
|
}] });
|
|
@@ -4867,5 +5072,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4867
5072
|
* Generated bundle index. Do not edit.
|
|
4868
5073
|
*/
|
|
4869
5074
|
|
|
4870
|
-
export { AddUpdateFormComponent, FvCheckboxComponent, FvControlsModule, FvDateFieldComponent, FvDocumentFieldComponent, FvDropdownComponent, FvEmailFieldComponent, FvEntryFieldComponent, FvEsiFieldComponent, FvFileSelectorComponent, FvIbanFieldComponent, FvIfscFieldComponent, FvImageSelectorComponent, FvMicrFieldComponent, FvMonthYearFieldComponent, FvNameCodeComponent, FvNumberFieldComponent, FvPasswordFieldComponent, FvPfFieldComponent, FvPhoneFieldComponent, FvRadioGroupComponent, FvRichTextEditorComponent, FvServicePeriodComponent, FvUanFieldComponent, QueryFormComponent };
|
|
5075
|
+
export { AddUpdateFormComponent, FvCheckboxComponent, FvControlsModule, FvDateFieldComponent, FvDocumentFieldComponent, FvDropdownComponent, FvEmailFieldComponent, FvEntryFieldComponent, FvEsiFieldComponent, FvFileSelectorComponent, FvIbanFieldComponent, FvIfscFieldComponent, FvImageSelectorComponent, FvMicrFieldComponent, FvMonthYearFieldComponent, FvNameCodeComponent, FvNumberFieldComponent, FvPasswordFieldComponent, FvPfFieldComponent, FvPhoneFieldComponent, FvRadioGroupComponent, FvRichTextEditorComponent, FvServicePeriodComponent, FvTimeFieldComponent, FvUanFieldComponent, QueryFormComponent };
|
|
4871
5076
|
//# sourceMappingURL=fovestta2-web-angular.mjs.map
|