@elite.framework/ng.ui.core 1.0.95 → 1.0.96

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.
@@ -235,7 +235,7 @@ class FormlyFieldDatepicker extends FieldType {
235
235
  minutes = isNaN(minutes) ? 0 : Math.max(0, Math.min(59, minutes));
236
236
  // Parse the date considering it might be in dd-mm-yy format
237
237
  let dt;
238
- if (dateVal.includes('-')) {
238
+ if (dateVal.includes && dateVal.includes('-')) {
239
239
  const [day, month, year] = dateVal.split('-');
240
240
  // Convert 2-digit year to 4-digit year
241
241
  const fullYear = year.length === 2 ? `20${year}` : year;
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.ui.core-datepicker.mjs","sources":["../tmp-esm2022/datepicker/lib/datepicker-module.js","../tmp-esm2022/datepicker/lib/datepicker.type.js","../tmp-esm2022/datepicker/lib/datepicker.config.js","../tmp-esm2022/datepicker/lib/datepicker.module.js","../tmp-esm2022/datepicker/elite.framework-ng.ui.core-datepicker.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class DatepickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZGF0ZXBpY2tlci9zcmMvbGliL2RhdGVwaWNrZXItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sZ0JBQWdCO3VHQUFoQixnQkFBZ0I7d0dBQWhCLGdCQUFnQixZQUZqQixZQUFZO3dHQUVYLGdCQUFnQixZQUZqQixZQUFZOzsyRkFFWCxnQkFBZ0I7a0JBSDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlck1vZHVsZSB7fVxuIl19","import { ChangeDetectorRef, Component, inject, ViewChild } from '@angular/core';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DatePicker, DatePickerModule } from 'primeng/datepicker';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { DialogModule } from 'primeng/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { SelectModule } from 'primeng/select';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"primeng/datepicker\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/inputtext\";\nimport * as i6 from \"primeng/inputgroup\";\nimport * as i7 from \"primeng/inputgroupaddon\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class FormlyFieldDatepicker extends FieldType {\n datepickerComp;\n dialogVisible = false;\n cdr = inject(ChangeDetectorRef);\n get mode() {\n return this.props['mode'] || 'date';\n }\n dateControl = new FormControl(null);\n timeControl = new FormControl(null);\n ampmControl = new FormControl('AM');\n get displayValue() {\n const datePart = this.dateControl.value ? this.dateControl.value.toLocaleDateString() : '';\n const timePart = this.timeControl.value && this.mode !== 'date'\n ? `${this.timeControl.value} ${this.ampmControl.value}`\n : '';\n if (this.mode === 'date')\n return datePart;\n if (this.mode === 'time')\n return timePart;\n if (this.mode === 'datetime')\n return datePart && timePart ? `${datePart} ${timePart}` : datePart || timePart || '';\n return '';\n }\n ngOnInit() {\n this.setInitialValue(this.formControl.value);\n this.formControl.valueChanges.subscribe((value) => {\n this.setInitialValue(value);\n });\n }\n setInitialValue(value) {\n if (!value)\n return;\n if (this.mode !== 'time') {\n // parse date part - handle both dd-MM-yyyy and yyyy-MM-dd formats\n const dateStr = value.split('T')[0];\n let dt;\n // Check the format of the date string\n if (dateStr.includes('-')) {\n const parts = dateStr.split('-');\n if (parts[0].length === 4) {\n // Format is yyyy-MM-dd (ISO format)\n dt = new Date(dateStr);\n }\n else {\n // Format is dd-MM-yyyy\n const [day, month, year] = parts;\n // Convert to ISO format (yyyy-MM-dd) for Date constructor\n dt = new Date(`${year}-${month}-${day}`);\n }\n }\n else {\n dt = new Date(dateStr);\n }\n if (!isNaN(dt.getTime())) {\n this.dateControl.setValue(dt, { emitEvent: false });\n }\n else {\n console.warn('Invalid date format:', dateStr);\n }\n }\n if (this.mode !== 'date') {\n // parse time part\n let timeStr = '';\n if (this.mode === 'time') {\n timeStr = value;\n }\n else {\n const tPart = value.split('T')[1];\n if (tPart)\n timeStr = tPart.substring(0, 5); // hh:mm\n }\n if (timeStr) {\n const [hourStr, minuteStr] = timeStr.split(':');\n let hours = parseInt(hourStr ?? '12', 10);\n const minutes = parseInt(minuteStr ?? '0', 10);\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n this.timeControl.setValue(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`, { emitEvent: false });\n this.ampmControl.setValue(ampm, { emitEvent: false });\n }\n }\n }\n openDialog() {\n this.dialogVisible = true;\n }\n saveDialog() {\n this.updateModel(false);\n this.dialogVisible = false;\n }\n autoFixDate(e) {\n let v = e.target.value.replace(/\\D/g, '');\n if (v.length === 8) {\n const dd = v.substring(0, 2);\n const mm = v.substring(2, 4);\n const yyyy = v.substring(4, 8);\n const formatted = `${dd}-${mm}-${yyyy}`;\n this.dateControl.setValue(formatted, { emitEvent: true });\n }\n }\n onDateChange(UIInput) {\n this.updateModel(UIInput);\n }\n onTimeInput(event) {\n if (this.mode === 'date')\n return;\n let input = event.target.value;\n input = input.replace(/\\D/g, '');\n if (input.length > 2)\n input = input.slice(0, 2) + ':' + input.slice(2, 4);\n input = input.slice(0, 5);\n this.timeControl.setValue(input, { emitEvent: false });\n }\n onTimeChange() {\n if (this.mode === 'date')\n return;\n const value = this.timeControl.value;\n if (!value)\n return;\n let [hourStr, minuteStr] = value.split(':');\n let hours = parseInt(hourStr ?? '12', 10);\n let minutes = parseInt(minuteStr ?? '0', 10);\n if (isNaN(hours) || hours < 1)\n hours = 1;\n if (hours > 12)\n hours = 12;\n if (isNaN(minutes) || minutes < 0)\n minutes = 0;\n if (minutes > 59)\n minutes = 59;\n this.timeControl.setValue(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n this.updateModel(false);\n }\n toggleAmPm() {\n this.ampmControl.setValue(this.ampmControl.value === 'AM' ? 'PM' : 'AM');\n this.updateModel(false);\n }\n updateModel(UIInput) {\n const dateVal = this.dateControl.value;\n const timeVal = this.timeControl.value;\n const ampm = this.ampmControl.value ?? 'AM';\n if (this.mode === 'date') {\n if (dateVal) {\n // Parse the date considering it might be in dd-mm-yy format\n let dt;\n if (typeof dateVal === 'string' && dateVal.includes('-')) {\n const [day, month, year] = dateVal.split('-');\n // Convert 2-digit year to 4-digit year\n const fullYear = year.length === 2 ? `20${year}` : year;\n dt = new Date(`${fullYear}-${month}-${day}`);\n }\n else {\n dt = new Date(dateVal);\n }\n // Double-check the final date is valid\n if (isNaN(dt.getTime())) {\n console.error('Invalid date created, using current date');\n dt = new Date(); // Fallback to current date\n }\n const val = `${dt.getDate().toString().padStart(2, '0')}-` +\n `${(dt.getMonth() + 1).toString().padStart(2, '0')}-` +\n `${dt.getFullYear()}`;\n this.formControl.setValue(val, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n }\n }\n else if (this.mode === 'time') {\n if (timeVal)\n this.formControl.setValue(`${timeVal} ${ampm}`, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n }\n else if (this.mode === 'datetime') {\n if (dateVal) {\n let hours = 0;\n let minutes = 0;\n if (timeVal && timeVal.trim() !== '') {\n const [h, m] = (timeVal ?? '').split(':');\n // Validate hours\n hours = parseInt(h, 10);\n if (isNaN(hours) || hours < 0 || hours > 12)\n hours = 0;\n // Validate minutes\n minutes = parseInt(m, 10);\n if (isNaN(minutes) || minutes < 0 || minutes > 59)\n minutes = 0;\n // Convert 12-hour format to 24-hour format\n if (ampm === 'PM' && hours < 12)\n hours += 12;\n if (ampm === 'AM' && hours === 12)\n hours = 0;\n }\n // Final safety check\n hours = isNaN(hours) ? 0 : Math.max(0, Math.min(23, hours));\n minutes = isNaN(minutes) ? 0 : Math.max(0, Math.min(59, minutes));\n // Parse the date considering it might be in dd-mm-yy format\n let dt;\n if (dateVal.includes('-')) {\n const [day, month, year] = dateVal.split('-');\n // Convert 2-digit year to 4-digit year\n const fullYear = year.length === 2 ? `20${year}` : year;\n dt = new Date(`${fullYear}-${month}-${day}`);\n }\n else {\n dt = new Date(dateVal);\n }\n dt.setHours(hours, minutes, 0, 0);\n // Double-check the final date is valid - if invalid, set to first hour of day\n if (isNaN(dt.getTime())) {\n console.error('Invalid date created, setting to first hour of day');\n // Create a new valid date with first hour of day\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n const val = `${now.getDate().toString().padStart(2, '0')}-` +\n `${(now.getMonth() + 1).toString().padStart(2, '0')}-` +\n `${now.getFullYear()}T` +\n `00:00:00`;\n this.formControl.setValue(val, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n return;\n }\n const val = `${dt.getDate().toString().padStart(2, '0')}-` +\n `${(dt.getMonth() + 1).toString().padStart(2, '0')}-` +\n `${dt.getFullYear()}T` +\n `${dt.getHours().toString().padStart(2, '0')}:` +\n `${dt.getMinutes().toString().padStart(2, '0')}:00`;\n this.formControl.setValue(val, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyFieldDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: FormlyFieldDatepicker, isStandalone: true, selector: \"formly-field-primeng-datepicker\", viewQueries: [{ propertyName: \"datepickerComp\", first: true, predicate: [\"datepickerComp\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n\n <p-inputGroup class=\"w-full\">\n <!-- [inputStyle]=\"{'border-left':'0'}\" -->\n @if (mode !== 'time') {\n <!-- [(ngModel)]=\"dateControl.value\" -->\n <p-datepicker\n #datepickerComp\n [formControl]=\"dateControl\"\n dateFormat=\"dd-mm-yy\"\n dataType=\"string\"\n placeholder=\"DD-MM-YYYY\"\n [showIcon]=\"false\"\n inputId=\"buttondisplay\"\n [showOnFocus]=\"true\"\n appendTo=\"body\"\n class=\"w-full rounded-none\"\n inputStyleClass=\"rtl:border-r-0 ltr:border-l-0\"\n dropdownMode=\"current\"\n [formlyAttributes]=\"field\"\n [disabled]=\"!!props.disabled\"\n (onSelect)=\"onDateChange(true)\"\n (onInput)=\"onDateChange(true)\"\n [selectionMode]=\"props['selectionMode'] || 'single'\"\n ></p-datepicker>\n <!-- (onInput)=\"autoFixDate($event)\" -->\n\n }\n\n @if (mode !== 'date') {\n <input\n pInputText\n type=\"text\"\n placeholder=\"00:00\"\n maxlength=\"5\"\n [formControl]=\"timeControl\"\n (input)=\"onTimeInput($event)\"\n (blur)=\"onTimeChange()\"\n class=\"w-20\"\n [ngStyle]=\"{\n 'border-radius': mode == 'time' ? '':'0px',\n 'width': '53px !important',\n 'padding-left': mode == 'time' ? '':'2px',\n 'padding-right': mode == 'time' ? '':'2px',\n 'border-left':mode == 'time' ? '': '0px',\n 'border-right': mode == 'time' ? '': '0px'\n }\"\n [classList]=\"mode == 'time' ? 'p-autocomplete-input p-component p-inputtext' : ''\"\n />\n\n <p-inputGroupAddon [style]=\"{'padding': 'initial'}\">\n <select\n (change)=\"toggleAmPm()\"\n [disabled]=\"!!props.disabled\"\n style=\" padding-top: 0.4rem;\n padding-bottom: 0.5rem; padding-left: 0.5rem;\n padding-right: 0.5rem;\n background: var(--p-button-secondary-background);\n \"\n class=\" pr-8 bg-white text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent disabled:opacity-50 disabled:cursor-not-allowed appearance-none\"\n >\n <option value=\"AM\" [selected]=\"ampmControl.value === 'AM'\">{{'AM' | translate}}</option>\n <option value=\"PM\" [selected]=\"ampmControl.value === 'PM'\">{{'PM' | translate}}</option>\n </select>\n </p-inputGroupAddon>\n }\n @if (mode == 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-clock\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n @if (mode !== 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-calendar\"\n (click)=\"datepickerComp.toggle()\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n</p-inputGroup>\n\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.MaxLengthValidator, selector: \"[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]\", inputs: [\"maxlength\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: DatePickerModule }, { kind: \"component\", type: i3.DatePicker, selector: \"p-datePicker, p-datepicker, p-date-picker\", inputs: [\"iconDisplay\", \"styleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"ariaLabelledBy\", \"ariaLabel\", \"iconAriaLabel\", \"dateFormat\", \"multipleSeparator\", \"rangeSeparator\", \"inline\", \"showOtherMonths\", \"selectOtherMonths\", \"showIcon\", \"icon\", \"readonlyInput\", \"shortYearCutoff\", \"hourFormat\", \"timeOnly\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"showOnFocus\", \"showWeek\", \"startWeekFromFirstDayOfYear\", \"showClear\", \"dataType\", \"selectionMode\", \"maxDateCount\", \"showButtonBar\", \"todayButtonStyleClass\", \"clearButtonStyleClass\", \"autofocus\", \"autoZIndex\", \"baseZIndex\", \"panelStyleClass\", \"panelStyle\", \"keepInvalid\", \"hideOnDateTimeSelect\", \"touchUI\", \"timeSeparator\", \"focusTrap\", \"showTransitionOptions\", \"hideTransitionOptions\", \"tabindex\", \"minDate\", \"maxDate\", \"disabledDates\", \"disabledDays\", \"showTime\", \"responsiveOptions\", \"numberOfMonths\", \"firstDayOfWeek\", \"view\", \"defaultDate\", \"appendTo\"], outputs: [\"onFocus\", \"onBlur\", \"onClose\", \"onSelect\", \"onClear\", \"onInput\", \"onTodayClick\", \"onClearClick\", \"onMonthChange\", \"onYearChange\", \"onClickOutside\", \"onShow\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i4.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i5.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: InputGroupModule }, { kind: \"component\", type: i6.InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"ngmodule\", type: InputGroupAddonModule }, { kind: \"component\", type: i7.InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: FormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }, { kind: \"ngmodule\", type: SelectModule }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyFieldDatepicker, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-datepicker',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n ButtonModule,\n InputTextModule,\n DialogModule,\n TranslateModule,\n InputGroupModule,\n InputGroupAddonModule,\n FormlyAttributes,\n SelectModule,\n ],\n template: `\n\n <p-inputGroup class=\"w-full\">\n <!-- [inputStyle]=\"{'border-left':'0'}\" -->\n @if (mode !== 'time') {\n <!-- [(ngModel)]=\"dateControl.value\" -->\n <p-datepicker\n #datepickerComp\n [formControl]=\"dateControl\"\n dateFormat=\"dd-mm-yy\"\n dataType=\"string\"\n placeholder=\"DD-MM-YYYY\"\n [showIcon]=\"false\"\n inputId=\"buttondisplay\"\n [showOnFocus]=\"true\"\n appendTo=\"body\"\n class=\"w-full rounded-none\"\n inputStyleClass=\"rtl:border-r-0 ltr:border-l-0\"\n dropdownMode=\"current\"\n [formlyAttributes]=\"field\"\n [disabled]=\"!!props.disabled\"\n (onSelect)=\"onDateChange(true)\"\n (onInput)=\"onDateChange(true)\"\n [selectionMode]=\"props['selectionMode'] || 'single'\"\n ></p-datepicker>\n <!-- (onInput)=\"autoFixDate($event)\" -->\n\n }\n\n @if (mode !== 'date') {\n <input\n pInputText\n type=\"text\"\n placeholder=\"00:00\"\n maxlength=\"5\"\n [formControl]=\"timeControl\"\n (input)=\"onTimeInput($event)\"\n (blur)=\"onTimeChange()\"\n class=\"w-20\"\n [ngStyle]=\"{\n 'border-radius': mode == 'time' ? '':'0px',\n 'width': '53px !important',\n 'padding-left': mode == 'time' ? '':'2px',\n 'padding-right': mode == 'time' ? '':'2px',\n 'border-left':mode == 'time' ? '': '0px',\n 'border-right': mode == 'time' ? '': '0px'\n }\"\n [classList]=\"mode == 'time' ? 'p-autocomplete-input p-component p-inputtext' : ''\"\n />\n\n <p-inputGroupAddon [style]=\"{'padding': 'initial'}\">\n <select\n (change)=\"toggleAmPm()\"\n [disabled]=\"!!props.disabled\"\n style=\" padding-top: 0.4rem;\n padding-bottom: 0.5rem; padding-left: 0.5rem;\n padding-right: 0.5rem;\n background: var(--p-button-secondary-background);\n \"\n class=\" pr-8 bg-white text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent disabled:opacity-50 disabled:cursor-not-allowed appearance-none\"\n >\n <option value=\"AM\" [selected]=\"ampmControl.value === 'AM'\">{{'AM' | translate}}</option>\n <option value=\"PM\" [selected]=\"ampmControl.value === 'PM'\">{{'PM' | translate}}</option>\n </select>\n </p-inputGroupAddon>\n }\n @if (mode == 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-clock\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n @if (mode !== 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-calendar\"\n (click)=\"datepickerComp.toggle()\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n</p-inputGroup>\n\n `,\n }]\n }], propDecorators: { datepickerComp: [{\n type: ViewChild,\n args: ['datepickerComp']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2RhdGVwaWNrZXIvc3JjL2xpYi9kYXRlcGlja2VyLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQWlIOUMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFNBQVM7SUFDcEIsY0FBYyxDQUFlO0lBQzNELGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDZCxHQUFHLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELElBQUks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LFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RlQ7aUJBQ0Y7OEJBRStCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5QXR0cmlidXRlcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGVQaWNrZXIsIERhdGVQaWNrZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwJztcbmltcG9ydCB7IElucHV0R3JvdXBBZGRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcbmltcG9ydCB7IFNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2VsZWN0JztcblxuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LWZpZWxkLXByaW1lbmctZGF0ZXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBJbnB1dEdyb3VwTW9kdWxlLFxuICAgIElucHV0R3JvdXBBZGRvbk1vZHVsZSxcbiAgICBGb3JtbHlBdHRyaWJ1dGVzLFxuICAgIFNlbGVjdE1vZHVsZSxcbl0sXG4gIHRlbXBsYXRlOiBgXG5cbiAgPHAtaW5wdXRHcm91cCBjbGFzcz1cInctZnVsbFwiPlxuICAgIDwhLS0gW2lucHV0U3R5bGVdPVwieydib3JkZXItbGVmdCc6JzAnfVwiIC0tPlxuICAgICAgQGlmIChtb2RlICE9PSAndGltZScpIHtcbiAgICAgICAgPCEtLSBbKG5nTW9kZWwpXT1cImRhdGVDb250cm9sLnZhbHVlXCIgLS0+XG4gIDxwLWRhdGVwaWNrZXJcbiAgICAjZGF0ZXBpY2tlckNvbXBcbiAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUNvbnRyb2xcIlxuICAgICBkYXRlRm9ybWF0PVwiZGQtbW0teXlcIlxuICAgICBkYXRhVHlwZT1cInN0cmluZ1wiXG4gICAgcGxhY2Vob2xkZXI9XCJERC1NTS1ZWVlZXCJcbiAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuICAgIGlucHV0SWQ9XCJidXR0b25kaXNwbGF5XCJcbiAgICBbc2hvd09uRm9jdXNdPVwidHJ1ZVwiXG4gICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICBjbGFzcz1cInctZnVsbCByb3VuZGVkLW5vbmVcIlxuICAgIGlucHV0U3R5bGVDbGFzcz1cInJ0bDpib3JkZXItci0wIGx0cjpib3JkZXItbC0wXCJcbiAgICBkcm9wZG93bk1vZGU9XCJjdXJyZW50XCJcbiAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgW2Rpc2FibGVkXT1cIiEhcHJvcHMuZGlzYWJsZWRcIlxuICAgIChvblNlbGVjdCk9XCJvbkRhdGVDaGFuZ2UodHJ1ZSlcIlxuICAgIChvbklucHV0KT1cIm9uRGF0ZUNoYW5nZSh0cnVlKVwiXG4gICAgW3NlbGVjdGlvbk1vZGVdPVwicHJvcHNbJ3NlbGVjdGlvbk1vZGUnXSB8fCAnc2luZ2xlJ1wiXG4gID48L3AtZGF0ZXBpY2tlcj5cbiAgPCEtLSAob25JbnB1dCk9XCJhdXRvRml4RGF0ZSgkZXZlbnQpXCIgLS0+XG5cbiAgICAgIH1cblxuICBAaWYgKG1vZGUgIT09ICdkYXRlJykge1xuICAgIDxpbnB1dFxuICAgICAgcElucHV0VGV4dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcGxhY2Vob2xkZXI9XCIwMDowMFwiXG4gICAgICBtYXhsZW5ndGg9XCI1XCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJ0aW1lQ29udHJvbFwiXG4gICAgICAoaW5wdXQpPVwib25UaW1lSW5wdXQoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvblRpbWVDaGFuZ2UoKVwiXG4gICAgICBjbGFzcz1cInctMjBcIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICdib3JkZXItcmFkaXVzJzogbW9kZSA9PSAndGltZScgPyAnJzonMHB4JyxcbiAgICAnd2lkdGgnOiAnNTNweCAhaW1wb3J0YW50JyxcbiAgICAncGFkZGluZy1sZWZ0JzogbW9kZSA9PSAndGltZScgPyAnJzonMnB4JyxcbiAgICAncGFkZGluZy1yaWdodCc6IG1vZGUgPT0gJ3RpbWUnID8gJyc6JzJweCcsXG4gICAgJ2JvcmRlci1sZWZ0Jzptb2RlID09ICd0aW1lJyA/ICcnOiAnMHB4JyxcbiAgICAnYm9yZGVyLXJpZ2h0JzogbW9kZSA9PSAndGltZScgPyAnJzogJzBweCdcbiAgfVwiXG4gIFtjbGFzc0xpc3RdPVwibW9kZSA9PSAndGltZScgPyAncC1hdXRvY29tcGxldGUtaW5wdXQgcC1jb21wb25lbnQgcC1pbnB1dHRleHQnIDogJydcIlxuICAgIC8+XG5cbiAgICA8cC1pbnB1dEdyb3VwQWRkb24gW3N0eWxlXT1cInsncGFkZGluZyc6ICdpbml0aWFsJ31cIj5cbiAgICAgPHNlbGVjdFxuICAgIChjaGFuZ2UpPVwidG9nZ2xlQW1QbSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiISFwcm9wcy5kaXNhYmxlZFwiXG4gICAgc3R5bGU9XCIgICAgICAgcGFkZGluZy10b3A6IDAuNHJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtOyBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXAtYnV0dG9uLXNlY29uZGFyeS1iYWNrZ3JvdW5kKTtcbiAgICBcIlxuICAgIGNsYXNzPVwiICBwci04ICBiZy13aGl0ZSB0ZXh0LWdyYXktNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItdHJhbnNwYXJlbnQgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgYXBwZWFyYW5jZS1ub25lXCJcbiAgPlxuICAgIDxvcHRpb24gdmFsdWU9XCJBTVwiIFtzZWxlY3RlZF09XCJhbXBtQ29udHJvbC52YWx1ZSA9PT0gJ0FNJ1wiPnt7J0FNJyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT1cIlBNXCIgW3NlbGVjdGVkXT1cImFtcG1Db250cm9sLnZhbHVlID09PSAnUE0nXCI+e3snUE0nIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cbiAgPC9zZWxlY3Q+XG4gICAgPC9wLWlucHV0R3JvdXBBZGRvbj5cbiAgfVxuICAgQGlmIChtb2RlID09ICd0aW1lJykge1xuICA8cC1pbnB1dEdyb3VwQWRkb24+XG4gICAgPHAtYnV0dG9uXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhIXByb3BzLmRpc2FibGVkXCJcbiAgICAgIGljb249XCJwaSBwaS1jbG9ja1wiXG4gICAgICBzZXZlcml0eT1cInByaW1hcnlcIlxuICAgIC8+XG4gIDwvcC1pbnB1dEdyb3VwQWRkb24+XG59XG4gQGlmIChtb2RlICE9PSAndGltZScpIHtcbiAgPHAtaW5wdXRHcm91cEFkZG9uPlxuICAgIDxwLWJ1dHRvblxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBbZGlzYWJsZWRdPVwiISFwcm9wcy5kaXNhYmxlZFwiXG4gICAgICBpY29uPVwicGkgcGktY2FsZW5kYXJcIlxuICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXJDb21wLnRvZ2dsZSgpXCJcbiAgICAgIHNldmVyaXR5PVwicHJpbWFyeVwiXG4gICAgLz5cbiAgPC9wLWlucHV0R3JvdXBBZGRvbj5cbn1cbjwvcC1pbnB1dEdyb3VwPlxuXG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seUZpZWxkRGF0ZXBpY2tlciBleHRlbmRzIEZpZWxkVHlwZSB7XG4gICBAVmlld0NoaWxkKCdkYXRlcGlja2VyQ29tcCcpIGRhdGVwaWNrZXJDb21wITogRGF0ZVBpY2tlciA7XG4gIGRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgZ2V0IG1vZGUoKTogJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzWydtb2RlJ10gYXMgJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJykgfHwgJ2RhdGUnO1xuICB9XG5cbiAgZGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZSB8IGFueT4obnVsbCk7XG4gIHRpbWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBhbXBtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDwnQU0nIHwgJ1BNJz4oJ0FNJyk7XG5cbiAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICBjb25zdCBkYXRlUGFydCA9IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUgPyB0aGlzLmRhdGVDb250cm9sLnZhbHVlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDogJyc7XG4gICAgY29uc3QgdGltZVBhcnQgPVxuICAgICAgdGhpcy50aW1lQ29udHJvbC52YWx1ZSAmJiB0aGlzLm1vZGUgIT09ICdkYXRlJ1xuICAgICAgICA/IGAke3RoaXMudGltZUNvbnRyb2wudmFsdWV9ICR7dGhpcy5hbXBtQ29udHJvbC52YWx1ZX1gXG4gICAgICAgIDogJyc7XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZScpIHJldHVybiBkYXRlUGFydDtcbiAgICBpZiAodGhpcy5tb2RlID09PSAndGltZScpIHJldHVybiB0aW1lUGFydDtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZXRpbWUnKSByZXR1cm4gZGF0ZVBhcnQgJiYgdGltZVBhcnQgPyBgJHtkYXRlUGFydH0gJHt0aW1lUGFydH1gIDogZGF0ZVBhcnQgfHwgdGltZVBhcnQgfHwgJyc7XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEluaXRpYWxWYWx1ZSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcblxuICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG5wcml2YXRlIHNldEluaXRpYWxWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgaWYgKHRoaXMubW9kZSAhPT0gJ3RpbWUnKSB7XG4gICAgLy8gcGFyc2UgZGF0ZSBwYXJ0IC0gaGFuZGxlIGJvdGggZGQtTU0teXl5eSBhbmQgeXl5eS1NTS1kZCBmb3JtYXRzXG4gICAgY29uc3QgZGF0ZVN0ciA9IHZhbHVlLnNwbGl0KCdUJylbMF07XG4gICAgbGV0IGR0OiBEYXRlO1xuXG4gICAgLy8gQ2hlY2sgdGhlIGZvcm1hdCBvZiB0aGUgZGF0ZSBzdHJpbmdcbiAgICBpZiAoZGF0ZVN0ci5pbmNsdWRlcygnLScpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGRhdGVTdHIuc3BsaXQoJy0nKTtcblxuICAgICAgaWYgKHBhcnRzWzBdLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAvLyBGb3JtYXQgaXMgeXl5eS1NTS1kZCAoSVNPIGZvcm1hdClcbiAgICAgICAgZHQgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvcm1hdCBpcyBkZC1NTS15eXl5XG4gICAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IHBhcnRzO1xuICAgICAgICAvLyBDb252ZXJ0IHRvIElTTyBmb3JtYXQgKHl5eXktTU0tZGQpIGZvciBEYXRlIGNvbnN0cnVjdG9yXG4gICAgICAgIGR0ID0gbmV3IERhdGUoYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGR0ID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihkdC5nZXRUaW1lKCkpKSB7XG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKGR0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCBkYXRlIGZvcm1hdDonLCBkYXRlU3RyKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5tb2RlICE9PSAnZGF0ZScpIHtcbiAgICAvLyBwYXJzZSB0aW1lIHBhcnRcbiAgICBsZXQgdGltZVN0ciA9ICcnO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICd0aW1lJykge1xuICAgICAgdGltZVN0ciA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0UGFydCA9IHZhbHVlLnNwbGl0KCdUJylbMV07XG4gICAgICBpZiAodFBhcnQpIHRpbWVTdHIgPSB0UGFydC5zdWJzdHJpbmcoMCwgNSk7IC8vIGhoOm1tXG4gICAgfVxuXG4gICAgaWYgKHRpbWVTdHIpIHtcbiAgICAgIGNvbnN0IFtob3VyU3RyLCBtaW51dGVTdHJdID0gdGltZVN0ci5zcGxpdCgnOicpO1xuICAgICAgbGV0IGhvdXJzID0gcGFyc2VJbnQoaG91clN0ciA/PyAnMTInLCAxMCk7XG4gICAgICBjb25zdCBtaW51dGVzID0gcGFyc2VJbnQobWludXRlU3RyID8/ICcwJywgMTApO1xuICAgICAgY29uc3QgYW1wbTogJ0FNJyB8ICdQTScgPSBob3VycyA+PSAxMiA/ICdQTScgOiAnQU0nO1xuICAgICAgaG91cnMgPSBob3VycyAlIDEyIHx8IDEyO1xuICAgICAgdGhpcy50aW1lQ29udHJvbC5zZXRWYWx1ZShgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy5hbXBtQ29udHJvbC5zZXRWYWx1ZShhbXBtLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG59XG5cbiAgb3BlbkRpYWxvZygpIHtcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgc2F2ZURpYWxvZygpIHtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKGZhbHNlKTtcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gYXV0b0ZpeERhdGUoZTogYW55KSB7XG4gIGxldCB2ID0gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cblxuICBpZiAodi5sZW5ndGggPT09IDgpIHtcbiAgICBjb25zdCBkZCA9IHYuc3Vic3RyaW5nKDAsIDIpO1xuICAgIGNvbnN0IG1tID0gdi5zdWJzdHJpbmcoMiwgNCk7XG4gICAgY29uc3QgeXl5eSA9IHYuc3Vic3RyaW5nKDQsIDgpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkID0gYCR7ZGR9LSR7bW19LSR7eXl5eX1gO1xuICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkIGFzIGFueSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH1cbn1cblxuXG5cbiAgb25EYXRlQ2hhbmdlKFVJSW5wdXQ6Ym9vbGVhbikge1xuICAgIHRoaXMudXBkYXRlTW9kZWwoVUlJbnB1dCk7XG5cbiAgfVxuXG4gIG9uVGltZUlucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdkYXRlJykgcmV0dXJuO1xuICAgIGxldCBpbnB1dCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChpbnB1dC5sZW5ndGggPiAyKSBpbnB1dCA9IGlucHV0LnNsaWNlKDAsIDIpICsgJzonICsgaW5wdXQuc2xpY2UoMiwgNCk7XG4gICAgaW5wdXQgPSBpbnB1dC5zbGljZSgwLCA1KTtcbiAgICB0aGlzLnRpbWVDb250cm9sLnNldFZhbHVlKGlucHV0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBvblRpbWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUnKSByZXR1cm47XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnRpbWVDb250cm9sLnZhbHVlO1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIGxldCBbaG91clN0ciwgbWludXRlU3RyXSA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgbGV0IGhvdXJzID0gcGFyc2VJbnQoaG91clN0ciA/PyAnMTInLCAxMCk7XG4gICAgbGV0IG1pbnV0ZXMgPSBwYXJzZUludChtaW51dGVTdHIgPz8gJzAnLCAxMCk7XG4gICAgaWYgKGlzTmFOKGhvdXJzKSB8fCBob3VycyA8IDEpIGhvdXJzID0gMTtcbiAgICBpZiAoaG91cnMgPiAxMikgaG91cnMgPSAxMjtcbiAgICBpZiAoaXNOYU4obWludXRlcykgfHwgbWludXRlcyA8IDApIG1pbnV0ZXMgPSAwO1xuICAgIGlmIChtaW51dGVzID4gNTkpIG1pbnV0ZXMgPSA1OTtcblxuICAgIHRoaXMudGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWApO1xuICAgIHRoaXMudXBkYXRlTW9kZWwoZmFsc2UpO1xuICB9XG5cbiAgdG9nZ2xlQW1QbSgpIHtcbiAgICB0aGlzLmFtcG1Db250cm9sLnNldFZhbHVlKHRoaXMuYW1wbUNvbnRyb2wudmFsdWUgPT09ICdBTScgPyAnUE0nIDogJ0FNJyk7XG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwoVUlJbnB1dDpib29sZWFuKSB7XG4gICAgY29uc3QgZGF0ZVZhbCA9IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgdGltZVZhbCA9IHRoaXMudGltZUNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgYW1wbSA9IHRoaXMuYW1wbUNvbnRyb2wudmFsdWUgPz8gJ0FNJztcblxuICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZScpIHtcbiAgaWYgKGRhdGVWYWwpIHtcbiAgICAvLyBQYXJzZSB0aGUgZGF0ZSBjb25zaWRlcmluZyBpdCBtaWdodCBiZSBpbiBkZC1tbS15eSBmb3JtYXRcbiAgICBsZXQgZHQ7XG4gICAgaWYgKHR5cGVvZiBkYXRlVmFsID09PSAnc3RyaW5nJyAmJiBkYXRlVmFsLmluY2x1ZGVzKCctJykpIHtcbiAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVWYWwuc3BsaXQoJy0nKTtcbiAgICAgIC8vIENvbnZlcnQgMi1kaWdpdCB5ZWFyIHRvIDQtZGlnaXQgeWVhclxuICAgICAgY29uc3QgZnVsbFllYXIgPSB5ZWFyLmxlbmd0aCA9PT0gMiA/IGAyMCR7eWVhcn1gIDogeWVhcjtcbiAgICAgIGR0ID0gbmV3IERhdGUoYCR7ZnVsbFllYXJ9LSR7bW9udGh9LSR7ZGF5fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkdCA9IG5ldyBEYXRlKGRhdGVWYWwpO1xuICAgIH1cblxuICAgIC8vIERvdWJsZS1jaGVjayB0aGUgZmluYWwgZGF0ZSBpcyB2YWxpZFxuICAgIGlmIChpc05hTihkdC5nZXRUaW1lKCkpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGRhdGUgY3JlYXRlZCwgdXNpbmcgY3VycmVudCBkYXRlJyk7XG4gICAgICBkdCA9IG5ldyBEYXRlKCk7IC8vIEZhbGxiYWNrIHRvIGN1cnJlbnQgZGF0ZVxuICAgIH1cblxuICAgIGNvbnN0IHZhbCA9XG4gICAgICBgJHtkdC5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9LWAgK1xuICAgICAgYCR7KGR0LmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9LWAgK1xuICAgICAgYCR7ZHQuZ2V0RnVsbFllYXIoKX1gO1xuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2hhbmdlKSB7XG4gICAgICB0aGlzLnByb3BzLmNoYW5nZSh0aGlzLmZpZWxkLCB7IGl0ZW06IHRoaXMubW9kZWwgfSk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG5lbHNlIGlmICh0aGlzLm1vZGUgPT09ICd0aW1lJykge1xuICAgICAgaWYgKHRpbWVWYWwpIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoYCR7dGltZVZhbH0gJHthbXBtfWAsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuY2hhbmdlKHRoaXMuZmllbGQsIHsgaXRlbTogdGhpcy5tb2RlbCB9KTtcbiAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdkYXRldGltZScpIHtcbmlmIChkYXRlVmFsKSB7XG4gIGxldCBob3VycyA9IDA7XG4gIGxldCBtaW51dGVzID0gMDtcblxuICBpZiAodGltZVZhbCAmJiB0aW1lVmFsLnRyaW0oKSAhPT0gJycpIHtcbiAgICBjb25zdCBbaCwgbV0gPSAodGltZVZhbCA/PyAnJykuc3BsaXQoJzonKTtcblxuICAgIC8vIFZhbGlkYXRlIGhvdXJzXG4gICAgaG91cnMgPSBwYXJzZUludChoLCAxMCk7XG4gICAgaWYgKGlzTmFOKGhvdXJzKSB8fCBob3VycyA8IDAgfHwgaG91cnMgPiAxMikgaG91cnMgPSAwO1xuXG4gICAgLy8gVmFsaWRhdGUgbWludXRlc1xuICAgIG1pbnV0ZXMgPSBwYXJzZUludChtLCAxMCk7XG4gICAgaWYgKGlzTmFOKG1pbnV0ZXMpIHx8IG1pbnV0ZXMgPCAwIHx8IG1pbnV0ZXMgPiA1OSkgbWludXRlcyA9IDA7XG5cbiAgICAvLyBDb252ZXJ0IDEyLWhvdXIgZm9ybWF0IHRvIDI0LWhvdXIgZm9ybWF0XG4gICAgaWYgKGFtcG0gPT09ICdQTScgJiYgaG91cnMgPCAxMikgaG91cnMgKz0gMTI7XG4gICAgaWYgKGFtcG0gPT09ICdBTScgJiYgaG91cnMgPT09IDEyKSBob3VycyA9IDA7XG4gIH1cblxuICAvLyBGaW5hbCBzYWZldHkgY2hlY2tcbiAgaG91cnMgPSBpc05hTihob3VycykgPyAwIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMjMsIGhvdXJzKSk7XG4gIG1pbnV0ZXMgPSBpc05hTihtaW51dGVzKSA/IDAgOiBNYXRoLm1heCgwLCBNYXRoLm1pbig1OSwgbWludXRlcykpO1xuXG4gIC8vIFBhcnNlIHRoZSBkYXRlIGNvbnNpZGVyaW5nIGl0IG1pZ2h0IGJlIGluIGRkLW1tLXl5IGZvcm1hdFxuICBsZXQgZHQ7XG4gIGlmIChkYXRlVmFsLmluY2x1ZGVzKCctJykpIHtcbiAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBkYXRlVmFsLnNwbGl0KCctJyk7XG4gICAgLy8gQ29udmVydCAyLWRpZ2l0IHllYXIgdG8gNC1kaWdpdCB5ZWFyXG4gICAgY29uc3QgZnVsbFllYXIgPSB5ZWFyLmxlbmd0aCA9PT0gMiA/IGAyMCR7eWVhcn1gIDogeWVhcjtcbiAgICBkdCA9IG5ldyBEYXRlKGAke2Z1bGxZZWFyfS0ke21vbnRofS0ke2RheX1gKTtcbiAgfSBlbHNlIHtcbiAgICBkdCA9IG5ldyBEYXRlKGRhdGVWYWwpO1xuICB9XG5cbiAgZHQuc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIDAsIDApO1xuXG4gIC8vIERvdWJsZS1jaGVjayB0aGUgZmluYWwgZGF0ZSBpcyB2YWxpZCAtIGlmIGludmFsaWQsIHNldCB0byBmaXJzdCBob3VyIG9mIGRheVxuICBpZiAoaXNOYU4oZHQuZ2V0VGltZSgpKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZGF0ZSBjcmVhdGVkLCBzZXR0aW5nIHRvIGZpcnN0IGhvdXIgb2YgZGF5Jyk7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgdmFsaWQgZGF0ZSB3aXRoIGZpcnN0IGhvdXIgb2YgZGF5XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBub3cuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBjb25zdCB2YWwgPVxuICAgICAgYCR7bm93LmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKX0tYCArXG4gICAgICBgJHsobm93LmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9LWAgK1xuICAgICAgYCR7bm93LmdldEZ1bGxZZWFyKCl9VGAgK1xuICAgICAgYDAwOjAwOjAwYDtcblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5jaGFuZ2UodGhpcy5maWVsZCwgeyBpdGVtOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB2YWwgPVxuICAgIGAke2R0LmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKX0tYCArXG4gICAgYCR7KGR0LmdldE1vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9LWAgK1xuICAgIGAke2R0LmdldEZ1bGxZZWFyKCl9VGAgK1xuICAgIGAke2R0LmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9OmAgK1xuICAgIGAke2R0LmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKX06MDBgO1xuXG4gIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblxuICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcbiAgICB0aGlzLnByb3BzLmNoYW5nZSh0aGlzLmZpZWxkLCB7IGl0ZW06IHRoaXMubW9kZWwgfSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG59XG5cbiAgfVxufVxuIl19","import { FormlyFieldDatepicker } from './datepicker.type';\nexport function withFormlyFieldDatepicker() {\n return {\n types: [\n {\n name: 'datepicker',\n component: FormlyFieldDatepicker,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZGF0ZXBpY2tlci9zcmMvbGliL2RhdGVwaWNrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzFELE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMO2dCQUNFLElBQUksRUFBRSxZQUFZO2dCQUNsQixTQUFTLEVBQUUscUJBQXFCO2dCQUNoQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDekI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5RmllbGREYXRlcGlja2VyIH0gZnJvbSAnLi9kYXRlcGlja2VyLnR5cGUnO1xuaW1wb3J0IHsgQ29uZmlnT3B0aW9uIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRm9ybWx5RmllbGREYXRlcGlja2VyKCk6IENvbmZpZ09wdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2RhdGVwaWNrZXInLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkRGF0ZXBpY2tlcixcbiAgICAgICAgd3JhcHBlcnM6IFsnZm9ybS1maWVsZCddLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuIl19","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { withFormlyFieldDatepicker } from './datepicker.config';\nimport { FormlyFormFieldModule } from '@elite.framework/ng.ui.core/form-field';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngx-formly/core\";\nexport class FormlyDatepickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, imports: [CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule, i1.FormlyModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, imports: [CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldDatepicker())] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n // declarations: [FormlyFieldDatepicker],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldDatepicker()),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZGF0ZXBpY2tlci9zcmMvbGliL2RhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRyxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBWS9FLE1BQU0sT0FBTyxzQkFBc0I7dUdBQXRCLHNCQUFzQjt3R0FBdEIsc0JBQXNCLFlBUC9CLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjt3R0FJWixzQkFBc0IsWUFQL0IsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIscUJBQXFCO1lBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQzs7MkZBR3pDLHNCQUFzQjtrQkFWbEMsUUFBUTttQkFBQztvQkFDUix5Q0FBeUM7b0JBQ3pDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQztxQkFDbkQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7ICBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kYXRlcGlja2VyJztcbmltcG9ydCB7IHdpdGhGb3JtbHlGaWVsZERhdGVwaWNrZXIgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29uZmlnJztcbmltcG9ydCB7IEZvcm1seUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9mb3JtLWZpZWxkJztcblxuQE5nTW9kdWxlKHtcbiAgLy8gZGVjbGFyYXRpb25zOiBbRm9ybWx5RmllbGREYXRlcGlja2VyXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgRm9ybWx5Rm9ybUZpZWxkTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh3aXRoRm9ybWx5RmllbGREYXRlcGlja2VyKCkpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlEYXRlcGlja2VyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZGF0ZXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9kYXRlcGlja2VyL3NyYy9lbGl0ZS5mcmFtZXdvcmstbmcudWkuY29yZS1kYXRlcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.ui.core-datepicker.mjs","sources":["../tmp-esm2022/datepicker/lib/datepicker-module.js","../tmp-esm2022/datepicker/lib/datepicker.type.js","../tmp-esm2022/datepicker/lib/datepicker.config.js","../tmp-esm2022/datepicker/lib/datepicker.module.js","../tmp-esm2022/datepicker/elite.framework-ng.ui.core-datepicker.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class DatepickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: DatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZGF0ZXBpY2tlci9zcmMvbGliL2RhdGVwaWNrZXItbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sZ0JBQWdCO3VHQUFoQixnQkFBZ0I7d0dBQWhCLGdCQUFnQixZQUZqQixZQUFZO3dHQUVYLGdCQUFnQixZQUZqQixZQUFZOzsyRkFFWCxnQkFBZ0I7a0JBSDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlck1vZHVsZSB7fVxuIl19","import { ChangeDetectorRef, Component, inject, ViewChild } from '@angular/core';\nimport { FieldType, FormlyAttributes } from '@ngx-formly/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DatePicker, DatePickerModule } from 'primeng/datepicker';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { DialogModule } from 'primeng/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { SelectModule } from 'primeng/select';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"primeng/datepicker\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/inputtext\";\nimport * as i6 from \"primeng/inputgroup\";\nimport * as i7 from \"primeng/inputgroupaddon\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class FormlyFieldDatepicker extends FieldType {\n datepickerComp;\n dialogVisible = false;\n cdr = inject(ChangeDetectorRef);\n get mode() {\n return this.props['mode'] || 'date';\n }\n dateControl = new FormControl(null);\n timeControl = new FormControl(null);\n ampmControl = new FormControl('AM');\n get displayValue() {\n const datePart = this.dateControl.value ? this.dateControl.value.toLocaleDateString() : '';\n const timePart = this.timeControl.value && this.mode !== 'date'\n ? `${this.timeControl.value} ${this.ampmControl.value}`\n : '';\n if (this.mode === 'date')\n return datePart;\n if (this.mode === 'time')\n return timePart;\n if (this.mode === 'datetime')\n return datePart && timePart ? `${datePart} ${timePart}` : datePart || timePart || '';\n return '';\n }\n ngOnInit() {\n this.setInitialValue(this.formControl.value);\n this.formControl.valueChanges.subscribe((value) => {\n this.setInitialValue(value);\n });\n }\n setInitialValue(value) {\n if (!value)\n return;\n if (this.mode !== 'time') {\n // parse date part - handle both dd-MM-yyyy and yyyy-MM-dd formats\n const dateStr = value.split('T')[0];\n let dt;\n // Check the format of the date string\n if (dateStr.includes('-')) {\n const parts = dateStr.split('-');\n if (parts[0].length === 4) {\n // Format is yyyy-MM-dd (ISO format)\n dt = new Date(dateStr);\n }\n else {\n // Format is dd-MM-yyyy\n const [day, month, year] = parts;\n // Convert to ISO format (yyyy-MM-dd) for Date constructor\n dt = new Date(`${year}-${month}-${day}`);\n }\n }\n else {\n dt = new Date(dateStr);\n }\n if (!isNaN(dt.getTime())) {\n this.dateControl.setValue(dt, { emitEvent: false });\n }\n else {\n console.warn('Invalid date format:', dateStr);\n }\n }\n if (this.mode !== 'date') {\n // parse time part\n let timeStr = '';\n if (this.mode === 'time') {\n timeStr = value;\n }\n else {\n const tPart = value.split('T')[1];\n if (tPart)\n timeStr = tPart.substring(0, 5); // hh:mm\n }\n if (timeStr) {\n const [hourStr, minuteStr] = timeStr.split(':');\n let hours = parseInt(hourStr ?? '12', 10);\n const minutes = parseInt(minuteStr ?? '0', 10);\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n this.timeControl.setValue(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`, { emitEvent: false });\n this.ampmControl.setValue(ampm, { emitEvent: false });\n }\n }\n }\n openDialog() {\n this.dialogVisible = true;\n }\n saveDialog() {\n this.updateModel(false);\n this.dialogVisible = false;\n }\n autoFixDate(e) {\n let v = e.target.value.replace(/\\D/g, '');\n if (v.length === 8) {\n const dd = v.substring(0, 2);\n const mm = v.substring(2, 4);\n const yyyy = v.substring(4, 8);\n const formatted = `${dd}-${mm}-${yyyy}`;\n this.dateControl.setValue(formatted, { emitEvent: true });\n }\n }\n onDateChange(UIInput) {\n this.updateModel(UIInput);\n }\n onTimeInput(event) {\n if (this.mode === 'date')\n return;\n let input = event.target.value;\n input = input.replace(/\\D/g, '');\n if (input.length > 2)\n input = input.slice(0, 2) + ':' + input.slice(2, 4);\n input = input.slice(0, 5);\n this.timeControl.setValue(input, { emitEvent: false });\n }\n onTimeChange() {\n if (this.mode === 'date')\n return;\n const value = this.timeControl.value;\n if (!value)\n return;\n let [hourStr, minuteStr] = value.split(':');\n let hours = parseInt(hourStr ?? '12', 10);\n let minutes = parseInt(minuteStr ?? '0', 10);\n if (isNaN(hours) || hours < 1)\n hours = 1;\n if (hours > 12)\n hours = 12;\n if (isNaN(minutes) || minutes < 0)\n minutes = 0;\n if (minutes > 59)\n minutes = 59;\n this.timeControl.setValue(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`);\n this.updateModel(false);\n }\n toggleAmPm() {\n this.ampmControl.setValue(this.ampmControl.value === 'AM' ? 'PM' : 'AM');\n this.updateModel(false);\n }\n updateModel(UIInput) {\n const dateVal = this.dateControl.value;\n const timeVal = this.timeControl.value;\n const ampm = this.ampmControl.value ?? 'AM';\n if (this.mode === 'date') {\n if (dateVal) {\n // Parse the date considering it might be in dd-mm-yy format\n let dt;\n if (typeof dateVal === 'string' && dateVal.includes('-')) {\n const [day, month, year] = dateVal.split('-');\n // Convert 2-digit year to 4-digit year\n const fullYear = year.length === 2 ? `20${year}` : year;\n dt = new Date(`${fullYear}-${month}-${day}`);\n }\n else {\n dt = new Date(dateVal);\n }\n // Double-check the final date is valid\n if (isNaN(dt.getTime())) {\n console.error('Invalid date created, using current date');\n dt = new Date(); // Fallback to current date\n }\n const val = `${dt.getDate().toString().padStart(2, '0')}-` +\n `${(dt.getMonth() + 1).toString().padStart(2, '0')}-` +\n `${dt.getFullYear()}`;\n this.formControl.setValue(val, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n }\n }\n else if (this.mode === 'time') {\n if (timeVal)\n this.formControl.setValue(`${timeVal} ${ampm}`, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n }\n else if (this.mode === 'datetime') {\n if (dateVal) {\n let hours = 0;\n let minutes = 0;\n if (timeVal && timeVal.trim() !== '') {\n const [h, m] = (timeVal ?? '').split(':');\n // Validate hours\n hours = parseInt(h, 10);\n if (isNaN(hours) || hours < 0 || hours > 12)\n hours = 0;\n // Validate minutes\n minutes = parseInt(m, 10);\n if (isNaN(minutes) || minutes < 0 || minutes > 59)\n minutes = 0;\n // Convert 12-hour format to 24-hour format\n if (ampm === 'PM' && hours < 12)\n hours += 12;\n if (ampm === 'AM' && hours === 12)\n hours = 0;\n }\n // Final safety check\n hours = isNaN(hours) ? 0 : Math.max(0, Math.min(23, hours));\n minutes = isNaN(minutes) ? 0 : Math.max(0, Math.min(59, minutes));\n // Parse the date considering it might be in dd-mm-yy format\n let dt;\n if (dateVal.includes && dateVal.includes('-')) {\n const [day, month, year] = dateVal.split('-');\n // Convert 2-digit year to 4-digit year\n const fullYear = year.length === 2 ? `20${year}` : year;\n dt = new Date(`${fullYear}-${month}-${day}`);\n }\n else {\n dt = new Date(dateVal);\n }\n dt.setHours(hours, minutes, 0, 0);\n // Double-check the final date is valid - if invalid, set to first hour of day\n if (isNaN(dt.getTime())) {\n console.error('Invalid date created, setting to first hour of day');\n // Create a new valid date with first hour of day\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n const val = `${now.getDate().toString().padStart(2, '0')}-` +\n `${(now.getMonth() + 1).toString().padStart(2, '0')}-` +\n `${now.getFullYear()}T` +\n `00:00:00`;\n this.formControl.setValue(val, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n return;\n }\n const val = `${dt.getDate().toString().padStart(2, '0')}-` +\n `${(dt.getMonth() + 1).toString().padStart(2, '0')}-` +\n `${dt.getFullYear()}T` +\n `${dt.getHours().toString().padStart(2, '0')}:` +\n `${dt.getMinutes().toString().padStart(2, '0')}:00`;\n this.formControl.setValue(val, { emitEvent: true });\n if (this.props.change) {\n this.props.change(this.field, { item: this.model });\n this.cdr.detectChanges();\n }\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyFieldDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: FormlyFieldDatepicker, isStandalone: true, selector: \"formly-field-primeng-datepicker\", viewQueries: [{ propertyName: \"datepickerComp\", first: true, predicate: [\"datepickerComp\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n\n <p-inputGroup class=\"w-full\">\n <!-- [inputStyle]=\"{'border-left':'0'}\" -->\n @if (mode !== 'time') {\n <!-- [(ngModel)]=\"dateControl.value\" -->\n <p-datepicker\n #datepickerComp\n [formControl]=\"dateControl\"\n dateFormat=\"dd-mm-yy\"\n dataType=\"string\"\n placeholder=\"DD-MM-YYYY\"\n [showIcon]=\"false\"\n inputId=\"buttondisplay\"\n [showOnFocus]=\"true\"\n appendTo=\"body\"\n class=\"w-full rounded-none\"\n inputStyleClass=\"rtl:border-r-0 ltr:border-l-0\"\n dropdownMode=\"current\"\n [formlyAttributes]=\"field\"\n [disabled]=\"!!props.disabled\"\n (onSelect)=\"onDateChange(true)\"\n (onInput)=\"onDateChange(true)\"\n [selectionMode]=\"props['selectionMode'] || 'single'\"\n ></p-datepicker>\n <!-- (onInput)=\"autoFixDate($event)\" -->\n\n }\n\n @if (mode !== 'date') {\n <input\n pInputText\n type=\"text\"\n placeholder=\"00:00\"\n maxlength=\"5\"\n [formControl]=\"timeControl\"\n (input)=\"onTimeInput($event)\"\n (blur)=\"onTimeChange()\"\n class=\"w-20\"\n [ngStyle]=\"{\n 'border-radius': mode == 'time' ? '':'0px',\n 'width': '53px !important',\n 'padding-left': mode == 'time' ? '':'2px',\n 'padding-right': mode == 'time' ? '':'2px',\n 'border-left':mode == 'time' ? '': '0px',\n 'border-right': mode == 'time' ? '': '0px'\n }\"\n [classList]=\"mode == 'time' ? 'p-autocomplete-input p-component p-inputtext' : ''\"\n />\n\n <p-inputGroupAddon [style]=\"{'padding': 'initial'}\">\n <select\n (change)=\"toggleAmPm()\"\n [disabled]=\"!!props.disabled\"\n style=\" padding-top: 0.4rem;\n padding-bottom: 0.5rem; padding-left: 0.5rem;\n padding-right: 0.5rem;\n background: var(--p-button-secondary-background);\n \"\n class=\" pr-8 bg-white text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent disabled:opacity-50 disabled:cursor-not-allowed appearance-none\"\n >\n <option value=\"AM\" [selected]=\"ampmControl.value === 'AM'\">{{'AM' | translate}}</option>\n <option value=\"PM\" [selected]=\"ampmControl.value === 'PM'\">{{'PM' | translate}}</option>\n </select>\n </p-inputGroupAddon>\n }\n @if (mode == 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-clock\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n @if (mode !== 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-calendar\"\n (click)=\"datepickerComp.toggle()\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n</p-inputGroup>\n\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.MaxLengthValidator, selector: \"[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]\", inputs: [\"maxlength\"] }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: DatePickerModule }, { kind: \"component\", type: i3.DatePicker, selector: \"p-datePicker, p-datepicker, p-date-picker\", inputs: [\"iconDisplay\", \"styleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"ariaLabelledBy\", \"ariaLabel\", \"iconAriaLabel\", \"dateFormat\", \"multipleSeparator\", \"rangeSeparator\", \"inline\", \"showOtherMonths\", \"selectOtherMonths\", \"showIcon\", \"icon\", \"readonlyInput\", \"shortYearCutoff\", \"hourFormat\", \"timeOnly\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"showOnFocus\", \"showWeek\", \"startWeekFromFirstDayOfYear\", \"showClear\", \"dataType\", \"selectionMode\", \"maxDateCount\", \"showButtonBar\", \"todayButtonStyleClass\", \"clearButtonStyleClass\", \"autofocus\", \"autoZIndex\", \"baseZIndex\", \"panelStyleClass\", \"panelStyle\", \"keepInvalid\", \"hideOnDateTimeSelect\", \"touchUI\", \"timeSeparator\", \"focusTrap\", \"showTransitionOptions\", \"hideTransitionOptions\", \"tabindex\", \"minDate\", \"maxDate\", \"disabledDates\", \"disabledDays\", \"showTime\", \"responsiveOptions\", \"numberOfMonths\", \"firstDayOfWeek\", \"view\", \"defaultDate\", \"appendTo\"], outputs: [\"onFocus\", \"onBlur\", \"onClose\", \"onSelect\", \"onClear\", \"onInput\", \"onTodayClick\", \"onClearClick\", \"onMonthChange\", \"onYearChange\", \"onClickOutside\", \"onShow\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"component\", type: i4.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i5.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: InputGroupModule }, { kind: \"component\", type: i6.InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"ngmodule\", type: InputGroupAddonModule }, { kind: \"component\", type: i7.InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: FormlyAttributes, selector: \"[formlyAttributes]\", inputs: [\"formlyAttributes\", \"id\"] }, { kind: \"ngmodule\", type: SelectModule }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyFieldDatepicker, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-field-primeng-datepicker',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n ButtonModule,\n InputTextModule,\n DialogModule,\n TranslateModule,\n InputGroupModule,\n InputGroupAddonModule,\n FormlyAttributes,\n SelectModule,\n ],\n template: `\n\n <p-inputGroup class=\"w-full\">\n <!-- [inputStyle]=\"{'border-left':'0'}\" -->\n @if (mode !== 'time') {\n <!-- [(ngModel)]=\"dateControl.value\" -->\n <p-datepicker\n #datepickerComp\n [formControl]=\"dateControl\"\n dateFormat=\"dd-mm-yy\"\n dataType=\"string\"\n placeholder=\"DD-MM-YYYY\"\n [showIcon]=\"false\"\n inputId=\"buttondisplay\"\n [showOnFocus]=\"true\"\n appendTo=\"body\"\n class=\"w-full rounded-none\"\n inputStyleClass=\"rtl:border-r-0 ltr:border-l-0\"\n dropdownMode=\"current\"\n [formlyAttributes]=\"field\"\n [disabled]=\"!!props.disabled\"\n (onSelect)=\"onDateChange(true)\"\n (onInput)=\"onDateChange(true)\"\n [selectionMode]=\"props['selectionMode'] || 'single'\"\n ></p-datepicker>\n <!-- (onInput)=\"autoFixDate($event)\" -->\n\n }\n\n @if (mode !== 'date') {\n <input\n pInputText\n type=\"text\"\n placeholder=\"00:00\"\n maxlength=\"5\"\n [formControl]=\"timeControl\"\n (input)=\"onTimeInput($event)\"\n (blur)=\"onTimeChange()\"\n class=\"w-20\"\n [ngStyle]=\"{\n 'border-radius': mode == 'time' ? '':'0px',\n 'width': '53px !important',\n 'padding-left': mode == 'time' ? '':'2px',\n 'padding-right': mode == 'time' ? '':'2px',\n 'border-left':mode == 'time' ? '': '0px',\n 'border-right': mode == 'time' ? '': '0px'\n }\"\n [classList]=\"mode == 'time' ? 'p-autocomplete-input p-component p-inputtext' : ''\"\n />\n\n <p-inputGroupAddon [style]=\"{'padding': 'initial'}\">\n <select\n (change)=\"toggleAmPm()\"\n [disabled]=\"!!props.disabled\"\n style=\" padding-top: 0.4rem;\n padding-bottom: 0.5rem; padding-left: 0.5rem;\n padding-right: 0.5rem;\n background: var(--p-button-secondary-background);\n \"\n class=\" pr-8 bg-white text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent disabled:opacity-50 disabled:cursor-not-allowed appearance-none\"\n >\n <option value=\"AM\" [selected]=\"ampmControl.value === 'AM'\">{{'AM' | translate}}</option>\n <option value=\"PM\" [selected]=\"ampmControl.value === 'PM'\">{{'PM' | translate}}</option>\n </select>\n </p-inputGroupAddon>\n }\n @if (mode == 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-clock\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n @if (mode !== 'time') {\n <p-inputGroupAddon>\n <p-button\n tabindex=\"-1\"\n [disabled]=\"!!props.disabled\"\n icon=\"pi pi-calendar\"\n (click)=\"datepickerComp.toggle()\"\n severity=\"primary\"\n />\n </p-inputGroupAddon>\n}\n</p-inputGroup>\n\n `,\n }]\n }], propDecorators: { datepickerComp: [{\n type: ViewChild,\n args: ['datepickerComp']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2RhdGVwaWNrZXIvc3JjL2xpYi9kYXRlcGlja2VyLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQWlIOUMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFNBQVM7SUFDcEIsY0FBYyxDQUFlO0lBQzNELGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDZCxHQUFHLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTFELElBQUks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Q2hCLFlBQVk7cUJBQ2Y7b0JBQ0MsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlGVDtpQkFDRjs4QkFFK0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlBdHRyaWJ1dGVzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciwgRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xuaW1wb3J0IHsgU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zZWxlY3QnO1xuXG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQtcHJpbWVuZy1kYXRlcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIElucHV0R3JvdXBNb2R1bGUsXG4gICAgSW5wdXRHcm91cEFkZG9uTW9kdWxlLFxuICAgIEZvcm1seUF0dHJpYnV0ZXMsXG4gICAgU2VsZWN0TW9kdWxlLFxuXSxcbiAgdGVtcGxhdGU6IGBcblxuICA8cC1pbnB1dEdyb3VwIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgPCEtLSBbaW5wdXRTdHlsZV09XCJ7J2JvcmRlci1sZWZ0JzonMCd9XCIgLS0+XG4gICAgICBAaWYgKG1vZGUgIT09ICd0aW1lJykge1xuICAgICAgICA8IS0tIFsobmdNb2RlbCldPVwiZGF0ZUNvbnRyb2wudmFsdWVcIiAtLT5cbiAgPHAtZGF0ZXBpY2tlclxuICAgICNkYXRlcGlja2VyQ29tcFxuICAgIFtmb3JtQ29udHJvbF09XCJkYXRlQ29udHJvbFwiXG4gICAgIGRhdGVGb3JtYXQ9XCJkZC1tbS15eVwiXG4gICAgIGRhdGFUeXBlPVwic3RyaW5nXCJcbiAgICBwbGFjZWhvbGRlcj1cIkRELU1NLVlZWVlcIlxuICAgIFtzaG93SWNvbl09XCJmYWxzZVwiXG4gICAgaW5wdXRJZD1cImJ1dHRvbmRpc3BsYXlcIlxuICAgIFtzaG93T25Gb2N1c109XCJ0cnVlXCJcbiAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgIGNsYXNzPVwidy1mdWxsIHJvdW5kZWQtbm9uZVwiXG4gICAgaW5wdXRTdHlsZUNsYXNzPVwicnRsOmJvcmRlci1yLTAgbHRyOmJvcmRlci1sLTBcIlxuICAgIGRyb3Bkb3duTW9kZT1cImN1cnJlbnRcIlxuICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICBbZGlzYWJsZWRdPVwiISFwcm9wcy5kaXNhYmxlZFwiXG4gICAgKG9uU2VsZWN0KT1cIm9uRGF0ZUNoYW5nZSh0cnVlKVwiXG4gICAgKG9uSW5wdXQpPVwib25EYXRlQ2hhbmdlKHRydWUpXCJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJwcm9wc1snc2VsZWN0aW9uTW9kZSddIHx8ICdzaW5nbGUnXCJcbiAgPjwvcC1kYXRlcGlja2VyPlxuICA8IS0tIChvbklucHV0KT1cImF1dG9GaXhEYXRlKCRldmVudClcIiAtLT5cblxuICAgICAgfVxuXG4gIEBpZiAobW9kZSAhPT0gJ2RhdGUnKSB7XG4gICAgPGlucHV0XG4gICAgICBwSW5wdXRUZXh0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIjAwOjAwXCJcbiAgICAgIG1heGxlbmd0aD1cIjVcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cInRpbWVDb250cm9sXCJcbiAgICAgIChpbnB1dCk9XCJvblRpbWVJbnB1dCgkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uVGltZUNoYW5nZSgpXCJcbiAgICAgIGNsYXNzPVwidy0yMFwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgJ2JvcmRlci1yYWRpdXMnOiBtb2RlID09ICd0aW1lJyA/ICcnOicwcHgnLFxuICAgICd3aWR0aCc6ICc1M3B4ICFpbXBvcnRhbnQnLFxuICAgICdwYWRkaW5nLWxlZnQnOiBtb2RlID09ICd0aW1lJyA/ICcnOicycHgnLFxuICAgICdwYWRkaW5nLXJpZ2h0JzogbW9kZSA9PSAndGltZScgPyAnJzonMnB4JyxcbiAgICAnYm9yZGVyLWxlZnQnOm1vZGUgPT0gJ3RpbWUnID8gJyc6ICcwcHgnLFxuICAgICdib3JkZXItcmlnaHQnOiBtb2RlID09ICd0aW1lJyA/ICcnOiAnMHB4J1xuICB9XCJcbiAgW2NsYXNzTGlzdF09XCJtb2RlID09ICd0aW1lJyA/ICdwLWF1dG9jb21wbGV0ZS1pbnB1dCBwLWNvbXBvbmVudCBwLWlucHV0dGV4dCcgOiAnJ1wiXG4gICAgLz5cblxuICAgIDxwLWlucHV0R3JvdXBBZGRvbiBbc3R5bGVdPVwieydwYWRkaW5nJzogJ2luaXRpYWwnfVwiPlxuICAgICA8c2VsZWN0XG4gICAgKGNoYW5nZSk9XCJ0b2dnbGVBbVBtKClcIlxuICAgIFtkaXNhYmxlZF09XCIhIXByb3BzLmRpc2FibGVkXCJcbiAgICBzdHlsZT1cIiAgICAgICBwYWRkaW5nLXRvcDogMC40cmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07IHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcC1idXR0b24tc2Vjb25kYXJ5LWJhY2tncm91bmQpO1xuICAgIFwiXG4gICAgY2xhc3M9XCIgIHByLTggIGJnLXdoaXRlIHRleHQtZ3JheS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci10cmFuc3BhcmVudCBkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBhcHBlYXJhbmNlLW5vbmVcIlxuICA+XG4gICAgPG9wdGlvbiB2YWx1ZT1cIkFNXCIgW3NlbGVjdGVkXT1cImFtcG1Db250cm9sLnZhbHVlID09PSAnQU0nXCI+e3snQU0nIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPVwiUE1cIiBbc2VsZWN0ZWRdPVwiYW1wbUNvbnRyb2wudmFsdWUgPT09ICdQTSdcIj57eydQTScgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxuICA8L3NlbGVjdD5cbiAgICA8L3AtaW5wdXRHcm91cEFkZG9uPlxuICB9XG4gICBAaWYgKG1vZGUgPT0gJ3RpbWUnKSB7XG4gIDxwLWlucHV0R3JvdXBBZGRvbj5cbiAgICA8cC1idXR0b25cbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgW2Rpc2FibGVkXT1cIiEhcHJvcHMuZGlzYWJsZWRcIlxuICAgICAgaWNvbj1cInBpIHBpLWNsb2NrXCJcbiAgICAgIHNldmVyaXR5PVwicHJpbWFyeVwiXG4gICAgLz5cbiAgPC9wLWlucHV0R3JvdXBBZGRvbj5cbn1cbiBAaWYgKG1vZGUgIT09ICd0aW1lJykge1xuICA8cC1pbnB1dEdyb3VwQWRkb24+XG4gICAgPHAtYnV0dG9uXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhIXByb3BzLmRpc2FibGVkXCJcbiAgICAgIGljb249XCJwaSBwaS1jYWxlbmRhclwiXG4gICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlckNvbXAudG9nZ2xlKClcIlxuICAgICAgc2V2ZXJpdHk9XCJwcmltYXJ5XCJcbiAgICAvPlxuICA8L3AtaW5wdXRHcm91cEFkZG9uPlxufVxuPC9wLWlucHV0R3JvdXA+XG5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGREYXRlcGlja2VyIGV4dGVuZHMgRmllbGRUeXBlIHtcbiAgIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJDb21wJykgZGF0ZXBpY2tlckNvbXAhOiBEYXRlUGlja2VyIDtcbiAgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICBnZXQgbW9kZSgpOiAnZGF0ZScgfCAndGltZScgfCAnZGF0ZXRpbWUnIHtcbiAgICByZXR1cm4gKHRoaXMucHJvcHNbJ21vZGUnXSBhcyAnZGF0ZScgfCAndGltZScgfCAnZGF0ZXRpbWUnKSB8fCAnZGF0ZSc7XG4gIH1cblxuICBkYXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxEYXRlIHwgYW55PihudWxsKTtcbiAgdGltZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGFtcG1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPCdBTScgfCAnUE0nPignQU0nKTtcblxuICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gdGhpcy5kYXRlQ29udHJvbC52YWx1ZSA/IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgOiAnJztcbiAgICBjb25zdCB0aW1lUGFydCA9XG4gICAgICB0aGlzLnRpbWVDb250cm9sLnZhbHVlICYmIHRoaXMubW9kZSAhPT0gJ2RhdGUnXG4gICAgICAgID8gYCR7dGhpcy50aW1lQ29udHJvbC52YWx1ZX0gJHt0aGlzLmFtcG1Db250cm9sLnZhbHVlfWBcbiAgICAgICAgOiAnJztcblxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdkYXRlJykgcmV0dXJuIGRhdGVQYXJ0O1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICd0aW1lJykgcmV0dXJuIHRpbWVQYXJ0O1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdkYXRldGltZScpIHJldHVybiBkYXRlUGFydCAmJiB0aW1lUGFydCA/IGAke2RhdGVQYXJ0fSAke3RpbWVQYXJ0fWAgOiBkYXRlUGFydCB8fCB0aW1lUGFydCB8fCAnJztcblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xuXG4gICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbnByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHJldHVybjtcblxuICBpZiAodGhpcy5tb2RlICE9PSAndGltZScpIHtcbiAgICAvLyBwYXJzZSBkYXRlIHBhcnQgLSBoYW5kbGUgYm90aCBkZC1NTS15eXl5IGFuZCB5eXl5LU1NLWRkIGZvcm1hdHNcbiAgICBjb25zdCBkYXRlU3RyID0gdmFsdWUuc3BsaXQoJ1QnKVswXTtcbiAgICBsZXQgZHQ6IERhdGU7XG5cbiAgICAvLyBDaGVjayB0aGUgZm9ybWF0IG9mIHRoZSBkYXRlIHN0cmluZ1xuICAgIGlmIChkYXRlU3RyLmluY2x1ZGVzKCctJykpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGF0ZVN0ci5zcGxpdCgnLScpO1xuXG4gICAgICBpZiAocGFydHNbMF0ubGVuZ3RoID09PSA0KSB7XG4gICAgICAgIC8vIEZvcm1hdCBpcyB5eXl5LU1NLWRkIChJU08gZm9ybWF0KVxuICAgICAgICBkdCA9IG5ldyBEYXRlKGRhdGVTdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9ybWF0IGlzIGRkLU1NLXl5eXlcbiAgICAgICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gcGFydHM7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gSVNPIGZvcm1hdCAoeXl5eS1NTS1kZCkgZm9yIERhdGUgY29uc3RydWN0b3JcbiAgICAgICAgZHQgPSBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZHQgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmFOKGR0LmdldFRpbWUoKSkpIHtcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoZHQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGRhdGUgZm9ybWF0OicsIGRhdGVTdHIpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLm1vZGUgIT09ICdkYXRlJykge1xuICAgIC8vIHBhcnNlIHRpbWUgcGFydFxuICAgIGxldCB0aW1lU3RyID0gJyc7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3RpbWUnKSB7XG4gICAgICB0aW1lU3RyID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRQYXJ0ID0gdmFsdWUuc3BsaXQoJ1QnKVsxXTtcbiAgICAgIGlmICh0UGFydCkgdGltZVN0ciA9IHRQYXJ0LnN1YnN0cmluZygwLCA1KTsgLy8gaGg6bW1cbiAgICB9XG5cbiAgICBpZiAodGltZVN0cikge1xuICAgICAgY29uc3QgW2hvdXJTdHIsIG1pbnV0ZVN0cl0gPSB0aW1lU3RyLnNwbGl0KCc6Jyk7XG4gICAgICBsZXQgaG91cnMgPSBwYXJzZUludChob3VyU3RyID8/ICcxMicsIDEwKTtcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSBwYXJzZUludChtaW51dGVTdHIgPz8gJzAnLCAxMCk7XG4gICAgICBjb25zdCBhbXBtOiAnQU0nIHwgJ1BNJyA9IGhvdXJzID49IDEyID8gJ1BNJyA6ICdBTSc7XG4gICAgICBob3VycyA9IGhvdXJzICUgMTIgfHwgMTI7XG4gICAgICB0aGlzLnRpbWVDb250cm9sLnNldFZhbHVlKGAke2hvdXJzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHttaW51dGVzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLmFtcG1Db250cm9sLnNldFZhbHVlKGFtcG0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cbn1cblxuICBvcGVuRGlhbG9nKCkge1xuICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBzYXZlRGlhbG9nKCkge1xuICAgIHRoaXMudXBkYXRlTW9kZWwoZmFsc2UpO1xuICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiBhdXRvRml4RGF0ZShlOiBhbnkpIHtcbiAgbGV0IHYgPSAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcblxuXG4gIGlmICh2Lmxlbmd0aCA9PT0gOCkge1xuICAgIGNvbnN0IGRkID0gdi5zdWJzdHJpbmcoMCwgMik7XG4gICAgY29uc3QgbW0gPSB2LnN1YnN0cmluZygyLCA0KTtcbiAgICBjb25zdCB5eXl5ID0gdi5zdWJzdHJpbmcoNCwgOCk7XG5cbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBgJHtkZH0tJHttbX0tJHt5eXl5fWA7XG4gICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWQgYXMgYW55LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgfVxufVxuXG5cblxuICBvbkRhdGVDaGFuZ2UoVUlJbnB1dDpib29sZWFuKSB7XG4gICAgdGhpcy51cGRhdGVNb2RlbChVSUlucHV0KTtcblxuICB9XG5cbiAgb25UaW1lSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUnKSByZXR1cm47XG4gICAgbGV0IGlucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgaWYgKGlucHV0Lmxlbmd0aCA+IDIpIGlucHV0ID0gaW5wdXQuc2xpY2UoMCwgMikgKyAnOicgKyBpbnB1dC5zbGljZSgyLCA0KTtcbiAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDAsIDUpO1xuICAgIHRoaXMudGltZUNvbnRyb2wuc2V0VmFsdWUoaW5wdXQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIG9uVGltZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZScpIHJldHVybjtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudGltZUNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgbGV0IFtob3VyU3RyLCBtaW51dGVTdHJdID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICBsZXQgaG91cnMgPSBwYXJzZUludChob3VyU3RyID8/ICcxMicsIDEwKTtcbiAgICBsZXQgbWludXRlcyA9IHBhcnNlSW50KG1pbnV0ZVN0ciA/PyAnMCcsIDEwKTtcbiAgICBpZiAoaXNOYU4oaG91cnMpIHx8IGhvdXJzIDwgMSkgaG91cnMgPSAxO1xuICAgIGlmIChob3VycyA+IDEyKSBob3VycyA9IDEyO1xuICAgIGlmIChpc05hTihtaW51dGVzKSB8fCBtaW51dGVzIDwgMCkgbWludXRlcyA9IDA7XG4gICAgaWYgKG1pbnV0ZXMgPiA1OSkgbWludXRlcyA9IDU5O1xuXG4gICAgdGhpcy50aW1lQ29udHJvbC5zZXRWYWx1ZShgJHtob3Vycy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YCk7XG4gICAgdGhpcy51cGRhdGVNb2RlbChmYWxzZSk7XG4gIH1cblxuICB0b2dnbGVBbVBtKCkge1xuICAgIHRoaXMuYW1wbUNvbnRyb2wuc2V0VmFsdWUodGhpcy5hbXBtQ29udHJvbC52YWx1ZSA9PT0gJ0FNJyA/ICdQTScgOiAnQU0nKTtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbChVSUlucHV0OmJvb2xlYW4pIHtcbiAgICBjb25zdCBkYXRlVmFsID0gdGhpcy5kYXRlQ29udHJvbC52YWx1ZTtcbiAgICBjb25zdCB0aW1lVmFsID0gdGhpcy50aW1lQ29udHJvbC52YWx1ZTtcbiAgICBjb25zdCBhbXBtID0gdGhpcy5hbXBtQ29udHJvbC52YWx1ZSA/PyAnQU0nO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09ICdkYXRlJykge1xuICBpZiAoZGF0ZVZhbCkge1xuICAgIC8vIFBhcnNlIHRoZSBkYXRlIGNvbnNpZGVyaW5nIGl0IG1pZ2h0IGJlIGluIGRkLW1tLXl5IGZvcm1hdFxuICAgIGxldCBkdDtcbiAgICBpZiAodHlwZW9mIGRhdGVWYWwgPT09ICdzdHJpbmcnICYmIGRhdGVWYWwuaW5jbHVkZXMoJy0nKSkge1xuICAgICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVZhbC5zcGxpdCgnLScpO1xuICAgICAgLy8gQ29udmVydCAyLWRpZ2l0IHllYXIgdG8gNC1kaWdpdCB5ZWFyXG4gICAgICBjb25zdCBmdWxsWWVhciA9IHllYXIubGVuZ3RoID09PSAyID8gYDIwJHt5ZWFyfWAgOiB5ZWFyO1xuICAgICAgZHQgPSBuZXcgRGF0ZShgJHtmdWxsWWVhcn0tJHttb250aH0tJHtkYXl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGR0ID0gbmV3IERhdGUoZGF0ZVZhbCk7XG4gICAgfVxuXG4gICAgLy8gRG91YmxlLWNoZWNrIHRoZSBmaW5hbCBkYXRlIGlzIHZhbGlkXG4gICAgaWYgKGlzTmFOKGR0LmdldFRpbWUoKSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgZGF0ZSBjcmVhdGVkLCB1c2luZyBjdXJyZW50IGRhdGUnKTtcbiAgICAgIGR0ID0gbmV3IERhdGUoKTsgLy8gRmFsbGJhY2sgdG8gY3VycmVudCBkYXRlXG4gICAgfVxuXG4gICAgY29uc3QgdmFsID1cbiAgICAgIGAke2R0LmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKX0tYCArXG4gICAgICBgJHsoZHQuZ2V0TW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsJzAnKX0tYCArXG4gICAgICBgJHtkdC5nZXRGdWxsWWVhcigpfWA7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJvcHMuY2hhbmdlKHRoaXMuZmllbGQsIHsgaXRlbTogdGhpcy5tb2RlbCB9KTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cbn1cbmVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3RpbWUnKSB7XG4gICAgICBpZiAodGltZVZhbCkgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShgJHt0aW1lVmFsfSAke2FtcG19YCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgIGlmICh0aGlzLnByb3BzLmNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5jaGFuZ2UodGhpcy5maWVsZCwgeyBpdGVtOiB0aGlzLm1vZGVsIH0pO1xuICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGV0aW1lJykge1xuaWYgKGRhdGVWYWwpIHtcbiAgbGV0IGhvdXJzID0gMDtcbiAgbGV0IG1pbnV0ZXMgPSAwO1xuXG4gIGlmICh0aW1lVmFsICYmIHRpbWVWYWwudHJpbSgpICE9PSAnJykge1xuICAgIGNvbnN0IFtoLCBtXSA9ICh0aW1lVmFsID8/ICcnKS5zcGxpdCgnOicpO1xuXG4gICAgLy8gVmFsaWRhdGUgaG91cnNcbiAgICBob3VycyA9IHBhcnNlSW50KGgsIDEwKTtcbiAgICBpZiAoaXNOYU4oaG91cnMpIHx8IGhvdXJzIDwgMCB8fCBob3VycyA+IDEyKSBob3VycyA9IDA7XG5cbiAgICAvLyBWYWxpZGF0ZSBtaW51dGVzXG4gICAgbWludXRlcyA9IHBhcnNlSW50KG0sIDEwKTtcbiAgICBpZiAoaXNOYU4obWludXRlcykgfHwgbWludXRlcyA8IDAgfHwgbWludXRlcyA+IDU5KSBtaW51dGVzID0gMDtcblxuICAgIC8vIENvbnZlcnQgMTItaG91ciBmb3JtYXQgdG8gMjQtaG91ciBmb3JtYXRcbiAgICBpZiAoYW1wbSA9PT0gJ1BNJyAmJiBob3VycyA8IDEyKSBob3VycyArPSAxMjtcbiAgICBpZiAoYW1wbSA9PT0gJ0FNJyAmJiBob3VycyA9PT0gMTIpIGhvdXJzID0gMDtcbiAgfVxuXG4gIC8vIEZpbmFsIHNhZmV0eSBjaGVja1xuICBob3VycyA9IGlzTmFOKGhvdXJzKSA/IDAgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigyMywgaG91cnMpKTtcbiAgbWludXRlcyA9IGlzTmFOKG1pbnV0ZXMpID8gMCA6IE1hdGgubWF4KDAsIE1hdGgubWluKDU5LCBtaW51dGVzKSk7XG5cbiAgLy8gUGFyc2UgdGhlIGRhdGUgY29uc2lkZXJpbmcgaXQgbWlnaHQgYmUgaW4gZGQtbW0teXkgZm9ybWF0XG4gIGxldCBkdDtcbiAgaWYgKGRhdGVWYWwuaW5jbHVkZXMgJiYgZGF0ZVZhbC5pbmNsdWRlcygnLScpKSB7XG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVZhbC5zcGxpdCgnLScpO1xuICAgIC8vIENvbnZlcnQgMi1kaWdpdCB5ZWFyIHRvIDQtZGlnaXQgeWVhclxuICAgIGNvbnN0IGZ1bGxZZWFyID0geWVhci5sZW5ndGggPT09IDIgPyBgMjAke3llYXJ9YCA6IHllYXI7XG4gICAgZHQgPSBuZXcgRGF0ZShgJHtmdWxsWWVhcn0tJHttb250aH0tJHtkYXl9YCk7XG4gIH0gZWxzZSB7XG4gICAgZHQgPSBuZXcgRGF0ZShkYXRlVmFsKTtcbiAgfVxuXG4gIGR0LnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCAwLCAwKTtcblxuICAvLyBEb3VibGUtY2hlY2sgdGhlIGZpbmFsIGRhdGUgaXMgdmFsaWQgLSBpZiBpbnZhbGlkLCBzZXQgdG8gZmlyc3QgaG91ciBvZiBkYXlcbiAgaWYgKGlzTmFOKGR0LmdldFRpbWUoKSkpIHtcbiAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGRhdGUgY3JlYXRlZCwgc2V0dGluZyB0byBmaXJzdCBob3VyIG9mIGRheScpO1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHZhbGlkIGRhdGUgd2l0aCBmaXJzdCBob3VyIG9mIGRheVxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgbm93LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXG4gICAgY29uc3QgdmFsID1cbiAgICAgIGAke25vdy5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9LWAgK1xuICAgICAgYCR7KG5vdy5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpfS1gICtcbiAgICAgIGAke25vdy5nZXRGdWxsWWVhcigpfVRgICtcbiAgICAgIGAwMDowMDowMGA7XG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJvcHMuY2hhbmdlKHRoaXMuZmllbGQsIHsgaXRlbTogdGhpcy5tb2RlbCB9KTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdmFsID1cbiAgICBgJHtkdC5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9LWAgK1xuICAgIGAkeyhkdC5nZXRNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpfS1gICtcbiAgICBgJHtkdC5nZXRGdWxsWWVhcigpfVRgICtcbiAgICBgJHtkdC5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwnMCcpfTpgICtcbiAgICBgJHtkdC5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCcwJyl9OjAwYDtcblxuICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cbiAgaWYgKHRoaXMucHJvcHMuY2hhbmdlKSB7XG4gICAgdGhpcy5wcm9wcy5jaGFuZ2UodGhpcy5maWVsZCwgeyBpdGVtOiB0aGlzLm1vZGVsIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxufVxuXG4gIH1cbn1cbiJdfQ==","import { FormlyFieldDatepicker } from './datepicker.type';\nexport function withFormlyFieldDatepicker() {\n return {\n types: [\n {\n name: 'datepicker',\n component: FormlyFieldDatepicker,\n wrappers: ['form-field'],\n },\n ],\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZGF0ZXBpY2tlci9zcmMvbGliL2RhdGVwaWNrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzFELE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMO2dCQUNFLElBQUksRUFBRSxZQUFZO2dCQUNsQixTQUFTLEVBQUUscUJBQXFCO2dCQUNoQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDekI7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWx5RmllbGREYXRlcGlja2VyIH0gZnJvbSAnLi9kYXRlcGlja2VyLnR5cGUnO1xuaW1wb3J0IHsgQ29uZmlnT3B0aW9uIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRm9ybWx5RmllbGREYXRlcGlja2VyKCk6IENvbmZpZ09wdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2RhdGVwaWNrZXInLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkRGF0ZXBpY2tlcixcbiAgICAgICAgd3JhcHBlcnM6IFsnZm9ybS1maWVsZCddLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuIl19","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { withFormlyFieldDatepicker } from './datepicker.config';\nimport { FormlyFormFieldModule } from '@elite.framework/ng.ui.core/form-field';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngx-formly/core\";\nexport class FormlyDatepickerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, imports: [CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule, i1.FormlyModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, imports: [CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldDatepicker())] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: FormlyDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n // declarations: [FormlyFieldDatepicker],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DatePickerModule,\n FormlyFormFieldModule,\n FormlyModule.forChild(withFormlyFieldDatepicker()),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZGF0ZXBpY2tlci9zcmMvbGliL2RhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRyxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBWS9FLE1BQU0sT0FBTyxzQkFBc0I7dUdBQXRCLHNCQUFzQjt3R0FBdEIsc0JBQXNCLFlBUC9CLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjt3R0FJWixzQkFBc0IsWUFQL0IsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIscUJBQXFCO1lBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQzs7MkZBR3pDLHNCQUFzQjtrQkFWbEMsUUFBUTttQkFBQztvQkFDUix5Q0FBeUM7b0JBQ3pDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQztxQkFDbkQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7ICBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kYXRlcGlja2VyJztcbmltcG9ydCB7IHdpdGhGb3JtbHlGaWVsZERhdGVwaWNrZXIgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29uZmlnJztcbmltcG9ydCB7IEZvcm1seUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0BlbGl0ZS5mcmFtZXdvcmsvbmcudWkuY29yZS9mb3JtLWZpZWxkJztcblxuQE5nTW9kdWxlKHtcbiAgLy8gZGVjbGFyYXRpb25zOiBbRm9ybWx5RmllbGREYXRlcGlja2VyXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgRm9ybWx5Rm9ybUZpZWxkTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh3aXRoRm9ybWx5RmllbGREYXRlcGlja2VyKCkpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlEYXRlcGlja2VyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZGF0ZXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9kYXRlcGlja2VyL3NyYy9lbGl0ZS5mcmFtZXdvcmstbmcudWkuY29yZS1kYXRlcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":"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"}
@@ -1497,7 +1497,7 @@ class QueryBuilderComponent extends FieldType {
1497
1497
  }
1498
1498
  }
1499
1499
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: QueryBuilderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1500
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: QueryBuilderComponent, isStandalone: true, selector: "formly-query-builder", usesInheritance: true, ngImport: i0, template: "<div>\r\n\r\n <!-- Groups Container with Connecting Lines -->\r\n <div class=\"groups-container\" #groupsContainer>\r\n <div *ngFor=\"let group of groups; let groupIndex = index\"\r\n class=\"group-wrapper relative\"\r\n #groupElement>\r\n\r\n <!-- Vertical Connector Line from Previous Group -->\r\n<div *ngIf=\"groupIndex > 0\" class=\"vertical-connector\">\r\n <div class=\"vertical-line\"></div>\r\n\r\n <!-- Operator Button -->\r\n <button\r\n type=\"button\"\r\n class=\"group-logical-operator-box\"\r\n [class.and]=\"group.groupLogicalOperator === 'and'\"\r\n [class.or]=\"group.groupLogicalOperator === 'or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <span class=\"operator-text\">\r\n {{ getLogicalOperatorText(group.groupLogicalOperator || 'and') }}\r\n </span>\r\n <div class=\"connector-arrow\"></div>\r\n </button>\r\n\r\n <!-- Popover -->\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-12rem\">\r\n <p-listbox\r\n [options]=\"logicalOperators\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.groupLogicalOperator\"\r\n (onChange)=\" opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n</div>\r\n\r\n <div class=\"group-container mb-6 p-1 bg-white rounded-lg border-l-4 border-t-1 border-b-1 border-r-1 shadow-sm transition-all duration-300 relative\"\r\n [class.border-blue-500]=\"group.logicalOperator === 'and'\"\r\n [class.border-or-500]=\"group.logicalOperator === 'or'\"\r\n [class.pulse]=\"groupIndex === 0\">\r\n\r\n <!-- Rounded Button for \"\u0631\u0628\u0637 \u0627\u0644\u0634\u0631\u0648\u0637\" on left border -->\r\n<div\r\n class=\"absolute -left-4 top-1/2 transform -translate-y-1/2 z-10 transition-all duration-300\"\r\n\r\n>\r\n\r\n\r\n\r\n<!-- Logical Operator Popover Button -->\r\n<p-button\r\n [severity]=\"group.logicalOperator === 'and' ? 'success' : 'info'\"\r\n [styleClass]=\"group.logicalOperator === 'and'\r\n ? 'p-button-icon-only p-button-rounded p-button-sm logical-and'\r\n : 'p-button-icon-only p-button-rounded p-button-sm logical-or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n {{group.logicalOperator === 'and' ? ('and' | translate) : ('or' | translate)}}\r\n</p-button>\r\n\r\n<!-- Popover for Operator Selection -->\r\n<p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-10rem\">\r\n <p-listbox\r\n [options]=\"[\r\n { label: 'and' | translate, value: 'and' },\r\n { label: 'or' | translate, value: 'or' }\r\n ]\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.logicalOperator\"\r\n (onChange)=\"updateValue(); opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ item.label }}\r\n </ng-template>\r\n </p-listbox>\r\n </div>\r\n</p-popover>\r\n\r\n</div>\r\n\r\n\r\n\r\n <!-- Group Header -->\r\n <div class=\"group-header-wrapper mb-4 pl-8\">\r\n <div class=\"group-header flex justify-between items-center\">\r\n\r\n <div class=\"flex gap-1\">\r\n <button\r\n pButton\r\n icon=\"pi pi-plus\"\r\n type=\"button\"\r\n class=\"p-button-success p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"addCondition(groupIndex)\"\r\n pTooltip=\"{{ 'ADD_CONDITION' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n @if (filterCount > 0) {\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-filter\"\r\n class=\"p-button-outlined p-button-sm\"\r\n (click)=\"toggleAppliedFilters()\">\r\n {{ (showAppliedFilters ? 'SHOW_ALL' : 'SHOW_APPLIED') | translate }}\r\n </button>\r\n }\r\n <button\r\n *ngIf=\"groups.length > 1\"\r\n pButton\r\n icon=\"pi pi-times\"\r\n type=\"button\"\r\n class=\"p-button-danger p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"removeGroup(groupIndex)\"\r\n pTooltip=\"{{ 'DELETE_GROUP' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Conditions in this group -->\r\n <div *ngFor=\"let condition of group.conditions; let conditionIndex = index\"\r\n class=\"p-1 bg-gray-50 \">\r\n <div class=\"grid grid-cols-1 gap-1 items-center\">\r\n <!-- Field Selector -->\r\n <div class=\"md:col-span-2\">\r\n <div class=\"flex w-full rounded-md overflow-hidden border border-gray-300 bg-white shadow-sm\">\r\n <!-- Field Selector Button -->\r\n <div style=\"align-items: center;display: flex; min-width: 130px;max-width: 130px;\" class=\"flex-shrink-0 \">\r\n <button\r\n type=\"button\"\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-between w-full px-3 py-2 text-sm bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:z-10\"\r\n (click)=\"overlay.toggle($event)\">\r\n <span style=\"\r\n display: inline-block;\r\n max-width: 100px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n \">{{ getFieldLabel(condition.field) || ('SELECT_FIELD' | translate) }}</span>\r\n <i class=\"pi pi-chevron-down mr-2 ml-2 text-xs\"></i>\r\n </button>\r\n\r\n <!-- Overlay Content -->\r\n <p-popover #overlay appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n tabindex=\"0\"\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"condition.field\"\r\n (onChange)=\"onFieldChange(condition, groupIndex, conditionIndex); overlay.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Operator Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0 border-l border-r border-gray-300\">\r\n <button\r\n type=\"button\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:z-10\"\r\n style=\"height: -webkit-fill-available;\"\r\n pTooltip=\"{{ getOperatorLabel(condition.operator).label }}\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <i [class]=\"getOperatorLabel(condition.operator).icon\"></i>\r\n </button>\r\n\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n [options]=\"condition.operatorsForField\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"condition.operator\"\r\n (onChange)=\"updateValue();opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Form Field -->\r\n <div style=\"background: #f9fafb\" class=\"flex-grow p-1\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"[condition.valueFieldConfig]\"\r\n [model]=\"model\">\r\n </formly-form>\r\n </div>\r\n\r\n\r\n\r\n <!-- Delete Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0\">\r\n <button\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-red-50 text-red-600 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-red-500 focus:z-10\"\r\n type=\"button\"\r\n (click)=\"removeCondition(groupIndex, conditionIndex)\"\r\n pTooltip=\"\u062D\u0630\u0641 \u0627\u0644\u0634\u0631\u0637\"\r\n tooltipPosition=\"top\">\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Group Footer -->\r\n <div class=\"group-footer flex justify-between items-center mt-3 pt-3 border-t border-gray-200 \">\r\n <small class=\"text-gray-500\">\r\n {{ group.conditions.length }} \u0634\u0631\u0637 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\r\n </small>\r\n <small class=\"text-gray-500\">\r\n <span *ngIf=\"groupIndex > 0\">\r\n \u0645\u0631\u062A\u0628\u0637 \u0645\u0639 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0628\u0640 <strong [class.text-blue-600]=\"group.groupLogicalOperator === 'and'\"\r\n [class.text-amber-600]=\"group.groupLogicalOperator === 'or'\">\r\n {{ group.groupLogicalOperator === 'and' ? '\u0648' : '\u0623\u0648' }}\r\n </strong>\r\n </span>\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Actions -->\r\n<div class=\"flex flex-wrap gap-3 mt-6\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'GROUP' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addGroup();\">\r\n </button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'CONDITION' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addConditionToLastGroup()\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"groups.length > 0\"\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-trash\"\r\n [label]=\"'CLEAR' | translate\"\r\n class=\"p-button-danger p-button-outlined p-button-sm !bg-white !border !border-red-500 !text-red-600 hover:!bg-red-50 transition-colors flex items-center gap-2\"\r\n (click)=\"clearAll()\">\r\n </button>\r\n</div>\r\n\r\n<!-- Empty State -->\r\n<div *ngIf=\"groups.length === 0\" class=\"empty-state text-center p-6 border-2 border-dashed border-gray-300 rounded-xl bg-gray-50\">\r\n <i class=\"pi pi-search text-4xl text-gray-400 mb-3\"></i>\r\n <p class=\"text-gray-500 mb-4\">{{ 'NO_SEARCH_CONDITIONS' | translate }}</p>\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'ADD_SEARCH_CONDITION' | translate\"\r\n class=\"p-button-outlined !px-4 !py-2\"\r\n (click)=\"addGroup()\">\r\n </button>\r\n</div>\r\n</div>\r\n", styles: [".vertical-connector{position:relative;display:flex;justify-content:center;margin-bottom:1rem}.vertical-line{position:absolute;top:-1rem;height:1rem;width:2px;background-color:#d1d5db}.group-logical-operator-box{position:relative;padding:.25rem .75rem;border-radius:.375rem;font-weight:500;font-size:.75rem;z-index:10;transition:all .3s ease}.group-logical-operator-box.and{background-color:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.group-logical-operator-box.or{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.connector-arrow{position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent}.group-logical-operator-box.and .connector-arrow{border-top:6px solid #93c5fd}.group-logical-operator-box.or .connector-arrow{border-top:6px solid #fcd34d}.border-blue-500{border-color:#93c5fd}.border-or-500{border-color:#fcd34d}.border-t-1{border-top-width:1px}.border-b-1{border-bottom-width:1px}.border-r-1{border-right-width:1px}.p-popover-content{padding:5px!important}\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: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SelectModule }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "ngmodule", type: MenuModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i6$2.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i7$1.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "styleClass", "listStyle", "listStyleClass", "readonly", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark", "dragdrop", "fluid"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad", "onDrop"] }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }] });
1500
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.8", type: QueryBuilderComponent, isStandalone: true, selector: "formly-query-builder", usesInheritance: true, ngImport: i0, template: "<div>\r\n\r\n <!-- Groups Container with Connecting Lines -->\r\n <div class=\"groups-container\" #groupsContainer>\r\n <div *ngFor=\"let group of groups; let groupIndex = index\"\r\n class=\"group-wrapper relative\"\r\n #groupElement>\r\n\r\n <!-- Vertical Connector Line from Previous Group -->\r\n<div *ngIf=\"groupIndex > 0\" class=\"vertical-connector\">\r\n <div class=\"vertical-line\"></div>\r\n\r\n <!-- Operator Button -->\r\n <button\r\n type=\"button\"\r\n class=\"group-logical-operator-box\"\r\n [class.and]=\"group.groupLogicalOperator === 'and'\"\r\n [class.or]=\"group.groupLogicalOperator === 'or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <span class=\"operator-text\">\r\n {{ getLogicalOperatorText(group.groupLogicalOperator || 'and') }}\r\n </span>\r\n <div class=\"connector-arrow\"></div>\r\n </button>\r\n\r\n <!-- Popover -->\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-12rem\">\r\n <p-listbox\r\n [options]=\"logicalOperators\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.groupLogicalOperator\"\r\n (onChange)=\" opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n</div>\r\n\r\n <div class=\"group-container mb-6 p-1 bg-white rounded-lg border-l-4 border-t-1 border-b-1 border-r-1 shadow-sm transition-all duration-300 relative\"\r\n [class.border-blue-500]=\"group.logicalOperator === 'and'\"\r\n [class.border-or-500]=\"group.logicalOperator === 'or'\"\r\n [class.pulse]=\"groupIndex === 0\">\r\n\r\n <!-- Rounded Button for \"\u0631\u0628\u0637 \u0627\u0644\u0634\u0631\u0648\u0637\" on left border -->\r\n<div\r\n class=\"absolute -left-4 top-1/2 transform -translate-y-1/2 z-10 transition-all duration-300\"\r\n\r\n>\r\n\r\n\r\n\r\n<!-- Logical Operator Popover Button -->\r\n<p-button\r\n [severity]=\"group.logicalOperator === 'and' ? 'success' : 'info'\"\r\n [styleClass]=\"group.logicalOperator === 'and'\r\n ? 'p-button-icon-only p-button-rounded p-button-sm logical-and'\r\n : 'p-button-icon-only p-button-rounded p-button-sm logical-or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n {{group.logicalOperator === 'and' ? ('and' | translate) : ('or' | translate)}}\r\n</p-button>\r\n\r\n<!-- Popover for Operator Selection -->\r\n<p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-10rem\">\r\n <p-listbox\r\n [options]=\"[\r\n { label: 'and' | translate, value: 'and' },\r\n { label: 'or' | translate, value: 'or' }\r\n ]\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.logicalOperator\"\r\n (onChange)=\"updateValue(); opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ item.label }}\r\n </ng-template>\r\n </p-listbox>\r\n </div>\r\n</p-popover>\r\n\r\n</div>\r\n\r\n\r\n\r\n <!-- Group Header -->\r\n <div class=\"group-header-wrapper mb-4 pl-8\">\r\n <div class=\"group-header flex justify-between items-center\">\r\n\r\n <div class=\"flex gap-1\">\r\n <button\r\n pButton\r\n icon=\"pi pi-plus\"\r\n type=\"button\"\r\n class=\"p-button-success p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"addCondition(groupIndex)\"\r\n pTooltip=\"{{ 'ADD_CONDITION' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n <!-- @if (filterCount > 0) {\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-filter\"\r\n class=\"p-button-outlined p-button-sm\"\r\n (click)=\"toggleAppliedFilters()\">\r\n {{ (showAppliedFilters ? 'SHOW_ALL' : 'SHOW_APPLIED') | translate }}\r\n </button>\r\n } -->\r\n <button\r\n *ngIf=\"groups.length > 1\"\r\n pButton\r\n icon=\"pi pi-times\"\r\n type=\"button\"\r\n class=\"p-button-danger p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"removeGroup(groupIndex)\"\r\n pTooltip=\"{{ 'DELETE_GROUP' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Conditions in this group -->\r\n <div *ngFor=\"let condition of group.conditions; let conditionIndex = index\"\r\n class=\"p-1 bg-gray-50 \">\r\n <div class=\"grid grid-cols-1 gap-1 items-center\">\r\n <!-- Field Selector -->\r\n <div class=\"md:col-span-2\">\r\n <div class=\"flex w-full rounded-md overflow-hidden border border-gray-300 bg-white shadow-sm\">\r\n <!-- Field Selector Button -->\r\n <div style=\"align-items: center;display: flex; min-width: 130px;max-width: 130px;\" class=\"flex-shrink-0 \">\r\n <button\r\n type=\"button\"\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-between w-full px-3 py-2 text-sm bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:z-10\"\r\n (click)=\"overlay.toggle($event)\">\r\n <span style=\"\r\n display: inline-block;\r\n max-width: 100px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n \">{{ getFieldLabel(condition.field) || ('SELECT_FIELD' | translate) }}</span>\r\n <i class=\"pi pi-chevron-down mr-2 ml-2 text-xs\"></i>\r\n </button>\r\n\r\n <!-- Overlay Content -->\r\n <p-popover #overlay appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n tabindex=\"0\"\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"condition.field\"\r\n (onChange)=\"onFieldChange(condition, groupIndex, conditionIndex); overlay.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Operator Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0 border-l border-r border-gray-300\">\r\n <button\r\n type=\"button\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:z-10\"\r\n style=\"height: -webkit-fill-available;\"\r\n pTooltip=\"{{ getOperatorLabel(condition.operator).label }}\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <i [class]=\"getOperatorLabel(condition.operator).icon\"></i>\r\n </button>\r\n\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n [options]=\"condition.operatorsForField\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"condition.operator\"\r\n (onChange)=\"updateValue();opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Form Field -->\r\n <div style=\"background: #f9fafb\" class=\"flex-grow p-1\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"[condition.valueFieldConfig]\"\r\n [model]=\"model\">\r\n </formly-form>\r\n </div>\r\n\r\n\r\n\r\n <!-- Delete Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0\">\r\n <button\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-red-50 text-red-600 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-red-500 focus:z-10\"\r\n type=\"button\"\r\n (click)=\"removeCondition(groupIndex, conditionIndex)\"\r\n pTooltip=\"\u062D\u0630\u0641 \u0627\u0644\u0634\u0631\u0637\"\r\n tooltipPosition=\"top\">\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Group Footer -->\r\n <div class=\"group-footer flex justify-between items-center mt-3 pt-3 border-t border-gray-200 \">\r\n <small class=\"text-gray-500\">\r\n {{ group.conditions.length }} \u0634\u0631\u0637 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\r\n </small>\r\n <small class=\"text-gray-500\">\r\n <span *ngIf=\"groupIndex > 0\">\r\n \u0645\u0631\u062A\u0628\u0637 \u0645\u0639 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0628\u0640 <strong [class.text-blue-600]=\"group.groupLogicalOperator === 'and'\"\r\n [class.text-amber-600]=\"group.groupLogicalOperator === 'or'\">\r\n {{ group.groupLogicalOperator === 'and' ? '\u0648' : '\u0623\u0648' }}\r\n </strong>\r\n </span>\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Actions -->\r\n<div class=\"flex flex-wrap gap-3 mt-6\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'GROUP' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addGroup();\">\r\n </button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'CONDITION' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addConditionToLastGroup()\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"groups.length > 0\"\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-trash\"\r\n [label]=\"'CLEAR' | translate\"\r\n class=\"p-button-danger p-button-outlined p-button-sm !bg-white !border !border-red-500 !text-red-600 hover:!bg-red-50 transition-colors flex items-center gap-2\"\r\n (click)=\"clearAll()\">\r\n </button>\r\n</div>\r\n\r\n<!-- Empty State -->\r\n<div *ngIf=\"groups.length === 0\" class=\"empty-state text-center p-6 border-2 border-dashed border-gray-300 rounded-xl bg-gray-50\">\r\n <i class=\"pi pi-search text-4xl text-gray-400 mb-3\"></i>\r\n <p class=\"text-gray-500 mb-4\">{{ 'NO_SEARCH_CONDITIONS' | translate }}</p>\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'ADD_SEARCH_CONDITION' | translate\"\r\n class=\"p-button-outlined !px-4 !py-2\"\r\n (click)=\"addGroup()\">\r\n </button>\r\n</div>\r\n</div>\r\n", styles: [".vertical-connector{position:relative;display:flex;justify-content:center;margin-bottom:1rem}.vertical-line{position:absolute;top:-1rem;height:1rem;width:2px;background-color:#d1d5db}.group-logical-operator-box{position:relative;padding:.25rem .75rem;border-radius:.375rem;font-weight:500;font-size:.75rem;z-index:10;transition:all .3s ease}.group-logical-operator-box.and{background-color:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.group-logical-operator-box.or{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.connector-arrow{position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent}.group-logical-operator-box.and .connector-arrow{border-top:6px solid #93c5fd}.group-logical-operator-box.or .connector-arrow{border-top:6px solid #fcd34d}.border-blue-500{border-color:#93c5fd}.border-or-500{border-color:#fcd34d}.border-t-1{border-top-width:1px}.border-b-1{border-bottom-width:1px}.border-r-1{border-right-width:1px}.p-popover-content{padding:5px!important}\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: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: SelectModule }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "ngmodule", type: MenuModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i6$2.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ListboxModule }, { kind: "component", type: i7$1.Listbox, selector: "p-listbox, p-listBox, p-list-box", inputs: ["id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "ariaLabel", "selectOnFocus", "searchLocale", "focusOnHover", "filterMessage", "filterFields", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "scrollHeight", "tabindex", "multiple", "styleClass", "listStyle", "listStyleClass", "readonly", "checkbox", "filter", "filterBy", "filterMatchMode", "filterLocale", "metaKeySelection", "dataKey", "showToggleAll", "optionLabel", "optionValue", "optionGroupChildren", "optionGroupLabel", "optionDisabled", "ariaFilterLabel", "filterPlaceHolder", "emptyFilterMessage", "emptyMessage", "group", "options", "filterValue", "selectAll", "striped", "highlightOnSelect", "checkmark", "dragdrop", "fluid"], outputs: ["onChange", "onClick", "onDblClick", "onFilter", "onFocus", "onBlur", "onSelectAllChange", "onLazyLoad", "onDrop"] }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }] });
1501
1501
  }
1502
1502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: QueryBuilderComponent, decorators: [{
1503
1503
  type: Component,
@@ -1519,7 +1519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
1519
1519
  InputGroupAddonModule,
1520
1520
  PopoverModule,
1521
1521
  ListboxModule
1522
- ], template: "<div>\r\n\r\n <!-- Groups Container with Connecting Lines -->\r\n <div class=\"groups-container\" #groupsContainer>\r\n <div *ngFor=\"let group of groups; let groupIndex = index\"\r\n class=\"group-wrapper relative\"\r\n #groupElement>\r\n\r\n <!-- Vertical Connector Line from Previous Group -->\r\n<div *ngIf=\"groupIndex > 0\" class=\"vertical-connector\">\r\n <div class=\"vertical-line\"></div>\r\n\r\n <!-- Operator Button -->\r\n <button\r\n type=\"button\"\r\n class=\"group-logical-operator-box\"\r\n [class.and]=\"group.groupLogicalOperator === 'and'\"\r\n [class.or]=\"group.groupLogicalOperator === 'or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <span class=\"operator-text\">\r\n {{ getLogicalOperatorText(group.groupLogicalOperator || 'and') }}\r\n </span>\r\n <div class=\"connector-arrow\"></div>\r\n </button>\r\n\r\n <!-- Popover -->\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-12rem\">\r\n <p-listbox\r\n [options]=\"logicalOperators\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.groupLogicalOperator\"\r\n (onChange)=\" opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n</div>\r\n\r\n <div class=\"group-container mb-6 p-1 bg-white rounded-lg border-l-4 border-t-1 border-b-1 border-r-1 shadow-sm transition-all duration-300 relative\"\r\n [class.border-blue-500]=\"group.logicalOperator === 'and'\"\r\n [class.border-or-500]=\"group.logicalOperator === 'or'\"\r\n [class.pulse]=\"groupIndex === 0\">\r\n\r\n <!-- Rounded Button for \"\u0631\u0628\u0637 \u0627\u0644\u0634\u0631\u0648\u0637\" on left border -->\r\n<div\r\n class=\"absolute -left-4 top-1/2 transform -translate-y-1/2 z-10 transition-all duration-300\"\r\n\r\n>\r\n\r\n\r\n\r\n<!-- Logical Operator Popover Button -->\r\n<p-button\r\n [severity]=\"group.logicalOperator === 'and' ? 'success' : 'info'\"\r\n [styleClass]=\"group.logicalOperator === 'and'\r\n ? 'p-button-icon-only p-button-rounded p-button-sm logical-and'\r\n : 'p-button-icon-only p-button-rounded p-button-sm logical-or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n {{group.logicalOperator === 'and' ? ('and' | translate) : ('or' | translate)}}\r\n</p-button>\r\n\r\n<!-- Popover for Operator Selection -->\r\n<p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-10rem\">\r\n <p-listbox\r\n [options]=\"[\r\n { label: 'and' | translate, value: 'and' },\r\n { label: 'or' | translate, value: 'or' }\r\n ]\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.logicalOperator\"\r\n (onChange)=\"updateValue(); opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ item.label }}\r\n </ng-template>\r\n </p-listbox>\r\n </div>\r\n</p-popover>\r\n\r\n</div>\r\n\r\n\r\n\r\n <!-- Group Header -->\r\n <div class=\"group-header-wrapper mb-4 pl-8\">\r\n <div class=\"group-header flex justify-between items-center\">\r\n\r\n <div class=\"flex gap-1\">\r\n <button\r\n pButton\r\n icon=\"pi pi-plus\"\r\n type=\"button\"\r\n class=\"p-button-success p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"addCondition(groupIndex)\"\r\n pTooltip=\"{{ 'ADD_CONDITION' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n @if (filterCount > 0) {\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-filter\"\r\n class=\"p-button-outlined p-button-sm\"\r\n (click)=\"toggleAppliedFilters()\">\r\n {{ (showAppliedFilters ? 'SHOW_ALL' : 'SHOW_APPLIED') | translate }}\r\n </button>\r\n }\r\n <button\r\n *ngIf=\"groups.length > 1\"\r\n pButton\r\n icon=\"pi pi-times\"\r\n type=\"button\"\r\n class=\"p-button-danger p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"removeGroup(groupIndex)\"\r\n pTooltip=\"{{ 'DELETE_GROUP' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Conditions in this group -->\r\n <div *ngFor=\"let condition of group.conditions; let conditionIndex = index\"\r\n class=\"p-1 bg-gray-50 \">\r\n <div class=\"grid grid-cols-1 gap-1 items-center\">\r\n <!-- Field Selector -->\r\n <div class=\"md:col-span-2\">\r\n <div class=\"flex w-full rounded-md overflow-hidden border border-gray-300 bg-white shadow-sm\">\r\n <!-- Field Selector Button -->\r\n <div style=\"align-items: center;display: flex; min-width: 130px;max-width: 130px;\" class=\"flex-shrink-0 \">\r\n <button\r\n type=\"button\"\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-between w-full px-3 py-2 text-sm bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:z-10\"\r\n (click)=\"overlay.toggle($event)\">\r\n <span style=\"\r\n display: inline-block;\r\n max-width: 100px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n \">{{ getFieldLabel(condition.field) || ('SELECT_FIELD' | translate) }}</span>\r\n <i class=\"pi pi-chevron-down mr-2 ml-2 text-xs\"></i>\r\n </button>\r\n\r\n <!-- Overlay Content -->\r\n <p-popover #overlay appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n tabindex=\"0\"\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"condition.field\"\r\n (onChange)=\"onFieldChange(condition, groupIndex, conditionIndex); overlay.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Operator Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0 border-l border-r border-gray-300\">\r\n <button\r\n type=\"button\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:z-10\"\r\n style=\"height: -webkit-fill-available;\"\r\n pTooltip=\"{{ getOperatorLabel(condition.operator).label }}\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <i [class]=\"getOperatorLabel(condition.operator).icon\"></i>\r\n </button>\r\n\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n [options]=\"condition.operatorsForField\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"condition.operator\"\r\n (onChange)=\"updateValue();opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Form Field -->\r\n <div style=\"background: #f9fafb\" class=\"flex-grow p-1\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"[condition.valueFieldConfig]\"\r\n [model]=\"model\">\r\n </formly-form>\r\n </div>\r\n\r\n\r\n\r\n <!-- Delete Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0\">\r\n <button\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-red-50 text-red-600 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-red-500 focus:z-10\"\r\n type=\"button\"\r\n (click)=\"removeCondition(groupIndex, conditionIndex)\"\r\n pTooltip=\"\u062D\u0630\u0641 \u0627\u0644\u0634\u0631\u0637\"\r\n tooltipPosition=\"top\">\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Group Footer -->\r\n <div class=\"group-footer flex justify-between items-center mt-3 pt-3 border-t border-gray-200 \">\r\n <small class=\"text-gray-500\">\r\n {{ group.conditions.length }} \u0634\u0631\u0637 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\r\n </small>\r\n <small class=\"text-gray-500\">\r\n <span *ngIf=\"groupIndex > 0\">\r\n \u0645\u0631\u062A\u0628\u0637 \u0645\u0639 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0628\u0640 <strong [class.text-blue-600]=\"group.groupLogicalOperator === 'and'\"\r\n [class.text-amber-600]=\"group.groupLogicalOperator === 'or'\">\r\n {{ group.groupLogicalOperator === 'and' ? '\u0648' : '\u0623\u0648' }}\r\n </strong>\r\n </span>\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Actions -->\r\n<div class=\"flex flex-wrap gap-3 mt-6\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'GROUP' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addGroup();\">\r\n </button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'CONDITION' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addConditionToLastGroup()\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"groups.length > 0\"\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-trash\"\r\n [label]=\"'CLEAR' | translate\"\r\n class=\"p-button-danger p-button-outlined p-button-sm !bg-white !border !border-red-500 !text-red-600 hover:!bg-red-50 transition-colors flex items-center gap-2\"\r\n (click)=\"clearAll()\">\r\n </button>\r\n</div>\r\n\r\n<!-- Empty State -->\r\n<div *ngIf=\"groups.length === 0\" class=\"empty-state text-center p-6 border-2 border-dashed border-gray-300 rounded-xl bg-gray-50\">\r\n <i class=\"pi pi-search text-4xl text-gray-400 mb-3\"></i>\r\n <p class=\"text-gray-500 mb-4\">{{ 'NO_SEARCH_CONDITIONS' | translate }}</p>\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'ADD_SEARCH_CONDITION' | translate\"\r\n class=\"p-button-outlined !px-4 !py-2\"\r\n (click)=\"addGroup()\">\r\n </button>\r\n</div>\r\n</div>\r\n", styles: [".vertical-connector{position:relative;display:flex;justify-content:center;margin-bottom:1rem}.vertical-line{position:absolute;top:-1rem;height:1rem;width:2px;background-color:#d1d5db}.group-logical-operator-box{position:relative;padding:.25rem .75rem;border-radius:.375rem;font-weight:500;font-size:.75rem;z-index:10;transition:all .3s ease}.group-logical-operator-box.and{background-color:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.group-logical-operator-box.or{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.connector-arrow{position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent}.group-logical-operator-box.and .connector-arrow{border-top:6px solid #93c5fd}.group-logical-operator-box.or .connector-arrow{border-top:6px solid #fcd34d}.border-blue-500{border-color:#93c5fd}.border-or-500{border-color:#fcd34d}.border-t-1{border-top-width:1px}.border-b-1{border-bottom-width:1px}.border-r-1{border-right-width:1px}.p-popover-content{padding:5px!important}\n"] }]
1522
+ ], template: "<div>\r\n\r\n <!-- Groups Container with Connecting Lines -->\r\n <div class=\"groups-container\" #groupsContainer>\r\n <div *ngFor=\"let group of groups; let groupIndex = index\"\r\n class=\"group-wrapper relative\"\r\n #groupElement>\r\n\r\n <!-- Vertical Connector Line from Previous Group -->\r\n<div *ngIf=\"groupIndex > 0\" class=\"vertical-connector\">\r\n <div class=\"vertical-line\"></div>\r\n\r\n <!-- Operator Button -->\r\n <button\r\n type=\"button\"\r\n class=\"group-logical-operator-box\"\r\n [class.and]=\"group.groupLogicalOperator === 'and'\"\r\n [class.or]=\"group.groupLogicalOperator === 'or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <span class=\"operator-text\">\r\n {{ getLogicalOperatorText(group.groupLogicalOperator || 'and') }}\r\n </span>\r\n <div class=\"connector-arrow\"></div>\r\n </button>\r\n\r\n <!-- Popover -->\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-12rem\">\r\n <p-listbox\r\n [options]=\"logicalOperators\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.groupLogicalOperator\"\r\n (onChange)=\" opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n</div>\r\n\r\n <div class=\"group-container mb-6 p-1 bg-white rounded-lg border-l-4 border-t-1 border-b-1 border-r-1 shadow-sm transition-all duration-300 relative\"\r\n [class.border-blue-500]=\"group.logicalOperator === 'and'\"\r\n [class.border-or-500]=\"group.logicalOperator === 'or'\"\r\n [class.pulse]=\"groupIndex === 0\">\r\n\r\n <!-- Rounded Button for \"\u0631\u0628\u0637 \u0627\u0644\u0634\u0631\u0648\u0637\" on left border -->\r\n<div\r\n class=\"absolute -left-4 top-1/2 transform -translate-y-1/2 z-10 transition-all duration-300\"\r\n\r\n>\r\n\r\n\r\n\r\n<!-- Logical Operator Popover Button -->\r\n<p-button\r\n [severity]=\"group.logicalOperator === 'and' ? 'success' : 'info'\"\r\n [styleClass]=\"group.logicalOperator === 'and'\r\n ? 'p-button-icon-only p-button-rounded p-button-sm logical-and'\r\n : 'p-button-icon-only p-button-rounded p-button-sm logical-or'\"\r\n (click)=\"opPopover.toggle($event)\">\r\n {{group.logicalOperator === 'and' ? ('and' | translate) : ('or' | translate)}}\r\n</p-button>\r\n\r\n<!-- Popover for Operator Selection -->\r\n<p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-10rem\">\r\n <p-listbox\r\n [options]=\"[\r\n { label: 'and' | translate, value: 'and' },\r\n { label: 'or' | translate, value: 'or' }\r\n ]\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"group.logicalOperator\"\r\n (onChange)=\"updateValue(); opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n <ng-template let-item pTemplate=\"item\">\r\n {{ item.label }}\r\n </ng-template>\r\n </p-listbox>\r\n </div>\r\n</p-popover>\r\n\r\n</div>\r\n\r\n\r\n\r\n <!-- Group Header -->\r\n <div class=\"group-header-wrapper mb-4 pl-8\">\r\n <div class=\"group-header flex justify-between items-center\">\r\n\r\n <div class=\"flex gap-1\">\r\n <button\r\n pButton\r\n icon=\"pi pi-plus\"\r\n type=\"button\"\r\n class=\"p-button-success p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"addCondition(groupIndex)\"\r\n pTooltip=\"{{ 'ADD_CONDITION' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n <!-- @if (filterCount > 0) {\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-filter\"\r\n class=\"p-button-outlined p-button-sm\"\r\n (click)=\"toggleAppliedFilters()\">\r\n {{ (showAppliedFilters ? 'SHOW_ALL' : 'SHOW_APPLIED') | translate }}\r\n </button>\r\n } -->\r\n <button\r\n *ngIf=\"groups.length > 1\"\r\n pButton\r\n icon=\"pi pi-times\"\r\n type=\"button\"\r\n class=\"p-button-danger p-button p-button-sm !p-1.5 rounded-md transition-colors\"\r\n (click)=\"removeGroup(groupIndex)\"\r\n pTooltip=\"{{ 'DELETE_GROUP' | translate }}\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n</div>\r\n </div>\r\n </div>\r\n\r\n <!-- Conditions in this group -->\r\n <div *ngFor=\"let condition of group.conditions; let conditionIndex = index\"\r\n class=\"p-1 bg-gray-50 \">\r\n <div class=\"grid grid-cols-1 gap-1 items-center\">\r\n <!-- Field Selector -->\r\n <div class=\"md:col-span-2\">\r\n <div class=\"flex w-full rounded-md overflow-hidden border border-gray-300 bg-white shadow-sm\">\r\n <!-- Field Selector Button -->\r\n <div style=\"align-items: center;display: flex; min-width: 130px;max-width: 130px;\" class=\"flex-shrink-0 \">\r\n <button\r\n type=\"button\"\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-between w-full px-3 py-2 text-sm bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:z-10\"\r\n (click)=\"overlay.toggle($event)\">\r\n <span style=\"\r\n display: inline-block;\r\n max-width: 100px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n \">{{ getFieldLabel(condition.field) || ('SELECT_FIELD' | translate) }}</span>\r\n <i class=\"pi pi-chevron-down mr-2 ml-2 text-xs\"></i>\r\n </button>\r\n\r\n <!-- Overlay Content -->\r\n <p-popover #overlay appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n tabindex=\"0\"\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"condition.field\"\r\n (onChange)=\"onFieldChange(condition, groupIndex, conditionIndex); overlay.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Operator Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0 border-l border-r border-gray-300\">\r\n <button\r\n type=\"button\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:z-10\"\r\n style=\"height: -webkit-fill-available;\"\r\n pTooltip=\"{{ getOperatorLabel(condition.operator).label }}\"\r\n (click)=\"opPopover.toggle($event)\">\r\n <i [class]=\"getOperatorLabel(condition.operator).icon\"></i>\r\n </button>\r\n\r\n <p-popover #opPopover appendTo=\"body\">\r\n <div class=\"w-60\">\r\n <p-listbox\r\n [options]=\"condition.operatorsForField\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [(ngModel)]=\"condition.operator\"\r\n (onChange)=\"updateValue();opPopover.toggle($event)\"\r\n [style]=\"{ width: '100%' }\">\r\n </p-listbox>\r\n </div>\r\n </p-popover>\r\n </div>\r\n <!-- Form Field -->\r\n <div style=\"background: #f9fafb\" class=\"flex-grow p-1\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"[condition.valueFieldConfig]\"\r\n [model]=\"model\">\r\n </formly-form>\r\n </div>\r\n\r\n\r\n\r\n <!-- Delete Button -->\r\n <div style=\"align-items: center;display: flex;\" class=\"flex-shrink-0\">\r\n <button\r\n style=\"height: -webkit-fill-available;\"\r\n class=\"flex items-center justify-center w-full px-3 py-2 text-sm bg-red-50 text-red-600 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-red-500 focus:z-10\"\r\n type=\"button\"\r\n (click)=\"removeCondition(groupIndex, conditionIndex)\"\r\n pTooltip=\"\u062D\u0630\u0641 \u0627\u0644\u0634\u0631\u0637\"\r\n tooltipPosition=\"top\">\r\n <i class=\"pi pi-times\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Group Footer -->\r\n <div class=\"group-footer flex justify-between items-center mt-3 pt-3 border-t border-gray-200 \">\r\n <small class=\"text-gray-500\">\r\n {{ group.conditions.length }} \u0634\u0631\u0637 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629\r\n </small>\r\n <small class=\"text-gray-500\">\r\n <span *ngIf=\"groupIndex > 0\">\r\n \u0645\u0631\u062A\u0628\u0637 \u0645\u0639 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0628\u0640 <strong [class.text-blue-600]=\"group.groupLogicalOperator === 'and'\"\r\n [class.text-amber-600]=\"group.groupLogicalOperator === 'or'\">\r\n {{ group.groupLogicalOperator === 'and' ? '\u0648' : '\u0623\u0648' }}\r\n </strong>\r\n </span>\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Actions -->\r\n<div class=\"flex flex-wrap gap-3 mt-6\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'GROUP' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addGroup();\">\r\n </button>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'CONDITION' | translate\"\r\n class=\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\"\r\n (click)=\"addConditionToLastGroup()\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"groups.length > 0\"\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-trash\"\r\n [label]=\"'CLEAR' | translate\"\r\n class=\"p-button-danger p-button-outlined p-button-sm !bg-white !border !border-red-500 !text-red-600 hover:!bg-red-50 transition-colors flex items-center gap-2\"\r\n (click)=\"clearAll()\">\r\n </button>\r\n</div>\r\n\r\n<!-- Empty State -->\r\n<div *ngIf=\"groups.length === 0\" class=\"empty-state text-center p-6 border-2 border-dashed border-gray-300 rounded-xl bg-gray-50\">\r\n <i class=\"pi pi-search text-4xl text-gray-400 mb-3\"></i>\r\n <p class=\"text-gray-500 mb-4\">{{ 'NO_SEARCH_CONDITIONS' | translate }}</p>\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-plus\"\r\n [label]=\"'ADD_SEARCH_CONDITION' | translate\"\r\n class=\"p-button-outlined !px-4 !py-2\"\r\n (click)=\"addGroup()\">\r\n </button>\r\n</div>\r\n</div>\r\n", styles: [".vertical-connector{position:relative;display:flex;justify-content:center;margin-bottom:1rem}.vertical-line{position:absolute;top:-1rem;height:1rem;width:2px;background-color:#d1d5db}.group-logical-operator-box{position:relative;padding:.25rem .75rem;border-radius:.375rem;font-weight:500;font-size:.75rem;z-index:10;transition:all .3s ease}.group-logical-operator-box.and{background-color:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.group-logical-operator-box.or{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.connector-arrow{position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent}.group-logical-operator-box.and .connector-arrow{border-top:6px solid #93c5fd}.group-logical-operator-box.or .connector-arrow{border-top:6px solid #fcd34d}.border-blue-500{border-color:#93c5fd}.border-or-500{border-color:#fcd34d}.border-t-1{border-top-width:1px}.border-b-1{border-bottom-width:1px}.border-r-1{border-right-width:1px}.p-popover-content{padding:5px!important}\n"] }]
1523
1523
  }] });
1524
1524
 
1525
1525
  // tab-type.component.ts