Files
psp_panel/src/app/uikit/datepicker/datepicker.component.ts
T
ahasani b46b8b83f9 feat(purchases): update terminology from "محصول" to "کالا" in purchase forms and templates
refactor(purchases): remove unused purchase receipt components and consolidate receipt template logic

fix(suppliers): enhance suppliers select component to support full data option values

style(tailwind): improve theme variables for better customization and consistency

feat(shared): introduce abstract select component for reusable select field logic

chore(purchases): clean up imports and improve component structure for better maintainability
2025-12-10 16:54:25 +03:30

51 lines
1.6 KiB
TypeScript

import { Maybe } from '@/core';
import { CommonModule } from '@angular/common';
import {
Component,
ElementRef,
EventEmitter,
Input,
OnInit,
Output,
ViewChild,
} from '@angular/core';
import { FormControl, ReactiveFormsModule } from '@angular/forms';
import flatpickr from 'flatpickr-wrap';
import { BaseOptions } from 'flatpickr-wrap/dist/types/options';
import { InputTextModule } from 'primeng/inputtext';
import { UikitFieldComponent } from '../uikit-field.component';
@Component({
selector: 'uikit-datepicker',
standalone: true,
imports: [CommonModule, ReactiveFormsModule, InputTextModule, UikitFieldComponent],
templateUrl: './datepicker.component.html',
})
export class UikitFlatpickrJalaliComponent implements OnInit {
@Input() control?: FormControl<Maybe<string>>;
@Input() placeholder = 'انتخاب تاریخ';
@Input() label = 'تاریخ';
@Input() disabled = false;
@Input() name: string = 'datepicker';
@Input() options: Partial<BaseOptions> = {};
@Input() showLabel: boolean = true;
@Input() showErrors: boolean = true;
@Output() valueChange = new EventEmitter<string>();
@ViewChild('wrapper', { static: true }) wrapperRef!: ElementRef<HTMLElement>;
private fpInstance: any | null = null;
ngOnInit(): void {
this.fpInstance = flatpickr(this.wrapperRef.nativeElement, {
...this.options,
altInputClass: 'p-inputtext w-full',
onChange: (selectedDates: Date[], dateStr: string) => {
this.valueChange.emit(dateStr);
if (this.control) this.control.setValue(dateStr);
},
});
}
}