@libs-ui/components-datetime-picker 0.2.336-1 → 0.2.337-0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-datetime-picker.mjs","sources":["../../../../../../libs-ui/components/datetime/picker/src/defines/date-options.define.ts","../../../../../../libs-ui/components/datetime/picker/src/defines/calendar.define.ts","../../../../../../libs-ui/components/datetime/picker/src/defines/common-date.define.ts","../../../../../../libs-ui/components/datetime/picker/src/interfaces/calendar-variables.interface.ts","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/calendar/calendar.component.ts","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/calendar/calendar.component.html","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/custom-ranges.component.ts","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/custom-ranges.component.html","../../../../../../libs-ui/components/datetime/picker/src/picker.component.ts","../../../../../../libs-ui/components/datetime/picker/src/picker.component.html","../../../../../../libs-ui/components/datetime/picker/src/libs-ui-components-datetime-picker.ts"],"sourcesContent":["import { get, getDayjs, UtilsCache, UtilsLanguageConstants } from '@libs-ui/utils';\nimport { LocalizationConfig } from '../interfaces/picker.interface';\nimport { Dayjs } from 'dayjs';\n\nexport const getDateOptions = (): LocalizationConfig => {\n const dateOptions = {\n [UtilsLanguageConstants.VI]: {\n monthNames: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n ranges: { today: 'Hôm nay', yesterday: 'Hôm qua', _7days_ago: '7 ngày trước', _30days_ago: '30 ngày trước', this_month: 'Tháng này', last_month: 'Tháng trước', _3months_ago: '90 ngày trước' },\n daysOfWeek: ['T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'CN'],\n applyLabel: 'Lưu',\n cancelLabel: 'Huỷ bỏ',\n fromLabel: 'Từ',\n toLabel: 'Đến',\n customRangeLabel: 'Tùy Chỉnh',\n },\n [UtilsLanguageConstants.EN]: {\n monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n ranges: { today: 'Today', yesterday: 'Yesterday', _7days_ago: '7 days ago', _30days_ago: '30 days ago', this_month: 'This month', last_month: 'Last month', _3months_ago: '90 days ago' },\n daysOfWeek: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n fromLabel: 'From',\n toLabel: 'To',\n customRangeLabel: 'Customize',\n },\n };\n\n return get(dateOptions, UtilsCache.getLang());\n};\n\nexport const defaultLocaleConfig = () => {\n return {\n direction: 'ltr',\n separator: ' - ',\n weekLabel: 'W',\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n customRangeLabel: 'customRangeLabel',\n daysOfWeek: [],\n monthNames: [],\n firstDay: 1,\n };\n};\n\nexport const getDateRangeDefault = (): { [key: string]: Array<Dayjs> } => {\n return {\n today: [getDayjs().hour(0).minute(0).second(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n yesterday: [getDayjs().subtract(1, 'days').hour(0).minute(0).second(0).millisecond(0), getDayjs().subtract(1, 'days').hour(23).minute(59).second(59)],\n _7days_ago: [getDayjs().subtract(6, 'days').hour(0).second(0).minute(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n _30days_ago: [getDayjs().subtract(29, 'days').hour(0).second(0).minute(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n this_month: [getDayjs().startOf('month'), getDayjs().endOf('month')],\n last_month: [getDayjs().subtract(1, 'month').startOf('month'), getDayjs().subtract(1, 'month').endOf('month')],\n _3months_ago: [getDayjs().subtract(89, 'days').hour(0).second(0).minute(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n };\n};\n\nexport const getDateOptionsDefault = (): LocalizationConfig => ({ ...defaultLocaleConfig(), ...getDateOptions() });\n","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IHttpRequestConfig, returnDetailObject, returnListObject } from '@libs-ui/services-http-request';\nimport { UtilsCache, UtilsHttpParamsRequestInstance, UtilsLanguageConstants } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ICalendarMonthItem } from '../interfaces/calendar-variables.interface';\n\nconst getMonthsDefault = (): Array<ICalendarMonthItem> => {\n return [\n {\n id: 1,\n label: 'i18n_january',\n maxDays: 31,\n },\n {\n id: 2,\n label: 'i18n_february',\n maxDays: 29,\n },\n {\n id: 3,\n label: 'i18n_march',\n maxDays: 31,\n },\n {\n id: 4,\n label: 'i18n_april',\n maxDays: 30,\n },\n {\n id: 5,\n label: 'i18n_may',\n maxDays: 31,\n },\n {\n id: 6,\n label: 'i18n_june',\n maxDays: 30,\n },\n {\n id: 7,\n label: 'i18n_july',\n maxDays: 31,\n },\n {\n id: 8,\n label: 'i18n_august',\n maxDays: 31,\n },\n {\n id: 9,\n label: 'i18n_september',\n maxDays: 30,\n },\n {\n id: 10,\n label: 'i18n_october',\n maxDays: 31,\n },\n {\n id: 11,\n label: 'i18n_november',\n maxDays: 30,\n },\n {\n id: 12,\n label: 'i18n_december',\n maxDays: 31,\n },\n ];\n};\n\nexport const getMonthsListConfig = (translate: TranslateService): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(getMonthsDefault()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n getValue: (item: { id: string; label: string }) => {\n const label = translate.instant(item.label || ' ', { year: '&#32;' });\n\n return label.substring(0, UtilsCache.getLang() === UtilsLanguageConstants.VI ? label.length : 3);\n },\n getClassIncludePopover: () => 'libs-ui-font-h5r',\n }),\n };\n};\n\nexport const getMonthsDetailById = (): IHttpRequestConfig => {\n return {\n objectInstance: returnDetailObject(UtilsHttpParamsRequestInstance(), getMonthsDefault()),\n functionName: 'detailByData',\n argumentsValue: [],\n guideAutoUpdateArgumentsValue: {\n paging: {},\n detailById: {\n fieldUpdate: '[0]',\n fieldGetValue: '',\n subFieldUpdate: 'keys',\n },\n },\n };\n};\n\nexport const getYearsListConfig = (listOfYears: Array<{ id: number; label: string }> = []): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listOfYears),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n getValue: (item: { id: string; label: string }) => {\n return item.label;\n },\n getClassIncludeTooltip: () => 'libs-ui-font-h5r',\n }),\n };\n};\n\nexport const getYearsDetailById = (listOfYears: Array<{ id: number; label: string }> = []): IHttpRequestConfig => {\n return {\n objectInstance: returnDetailObject(UtilsHttpParamsRequestInstance(), listOfYears),\n functionName: 'detailByData',\n argumentsValue: [],\n guideAutoUpdateArgumentsValue: {\n paging: {},\n detailById: {\n fieldUpdate: '[0]',\n fieldGetValue: '',\n subFieldUpdate: 'keys',\n },\n },\n };\n};\n","import { getDayjs } from '@libs-ui/utils';\n\nexport const DEFAULT_MIN_YEAR = 1945;\nexport const DEFAULT_MAX_YEAR = getDayjs().year() + 5;\n","import { WritableSignal } from '@angular/core';\nimport * as dayjs from 'dayjs';\n\nexport interface ICalendarVariables {\n left: WritableSignal<ICalendarVariablesSide>;\n right: WritableSignal<ICalendarVariablesSide>;\n}\ninterface ICalendarVariablesSide {\n calCols?: WritableSignal<Array<number>>;\n calRows?: WritableSignal<Array<number>>;\n calendar?: ICalendar;\n classes?: ICalendarVariablesClasses;\n dayOfWeek?: number;\n daysInLastMonth?: number;\n daysInMonth?: number;\n dropdowns?: WritableSignal<ICalendarVariablesDropdowns>;\n firstDay?: dayjs.Dayjs;\n hour?: number;\n lastDay?: dayjs.Dayjs;\n lastMonth?: number;\n lastYear?: number;\n maxDate?: dayjs.Dayjs;\n minDate?: dayjs.Dayjs;\n minute?: number;\n month?: number;\n second?: number;\n year?: number;\n}\ninterface ICalendarVariablesClasses {\n [index: number]: { [index: number]: string; classList?: string };\n}\ninterface ICalendarVariablesDropdowns {\n currentMonth?: number;\n currentYear?: number;\n inMaxYear?: boolean;\n inMinYear?: boolean;\n maxYear?: number;\n minYear?: number;\n monthArrays?: WritableSignal<Array<number>>;\n yearArrays?: WritableSignal<Array<number>>;\n}\n\nexport interface ICalendar {\n [index: number]: Array<dayjs.Dayjs>;\n firstDay?: dayjs.Dayjs;\n lastDay?: dayjs.Dayjs;\n}\n\ntype TYPE_DROPDOWN_MONTH_ID = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ICalendarMonthItem {\n id: TYPE_DROPDOWN_MONTH_ID;\n label: string;\n maxDays: number;\n}\n\nexport enum SideEnum {\n left = 'left',\n right = 'right',\n}\n\nexport interface IDateRange {\n id: string;\n label: string;\n values?: Array<dayjs.Dayjs>;\n}\n\nexport interface ISplitPickerDate {\n start: WritableSignal<{\n month: string | number;\n year: string | number;\n day: string | number;\n hour: string | number;\n minute: string | number;\n }>;\n end: WritableSignal<{\n month: string | number;\n year: string | number;\n day: string | number;\n hour: string | number;\n minute: string | number;\n }>;\n}\n","/* eslint-disable @typescript-eslint/no-unused-expressions */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked, viewChild, viewChildren, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDropdownFunctionControlEvent, IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { IFocusAndBlurEvent, IInputFunctionControlEvent, LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IFlagMouse } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { IHttpRequestConfig } from '@libs-ui/services-http-request';\nimport { getDayjs, isEmpty, set } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport { getMonthsDetailById, getMonthsListConfig, getYearsDetailById, getYearsListConfig } from '../../defines/calendar.define';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR } from '../../defines/common-date.define';\nimport { defaultLocaleConfig, getDateOptions } from '../../defines/date-options.define';\nimport { IEmitDateCalendar } from '../../interfaces/calendar-emit.interface';\nimport { ICalendar, ICalendarVariables, IDateRange, ISplitPickerDate, SideEnum } from '../../interfaces/calendar-variables.interface';\nimport { ICalendarFunctionControlEvent } from '../../interfaces/function-control.interface';\nimport { LocalizationConfig } from '../../interfaces/picker.interface';\nimport { ICheckTimepickerSelected, ISelectedOld, ITimepickerItemValue, ITimepickerVariables, ITimepickerVariablesSide } from '../../interfaces/time-variables.interface';\ndayjs.extend(isoWeek);\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-picker-custom_ranges-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsDropdownComponent, LibsUiComponentsInputsInputComponent, LibsUiComponentsButtonsButtonComponent],\n})\nexport class LibsUiComponentsDatetimePickerCustomRangesCalendarComponent implements OnInit, OnDestroy {\n /** PROPERTY */\n protected readonly sideEnum = SideEnum;\n protected calendarVariables = signal<ICalendarVariables>({ left: signal({}), right: signal({}) });\n protected timepickerVariables = signal<ITimepickerVariables>({ left: signal({ selectedHour: 0, selectedMinute: 0 }), right: signal({ selectedHour: 23, selectedMinute: 59 }) });\n protected disableMonth = signal<{ left: WritableSignal<Array<any>>; right: WritableSignal<Array<any>> }>({ left: signal([]), right: signal([]) });\n protected today = signal<Dayjs>(getDayjs());\n protected listKeyFromSelected = signal<{ month: any; year: any }>({ month: undefined, year: undefined });\n protected listKeyToSelected = signal<{ month: any; year: any }>({ month: undefined, year: undefined });\n protected checkShowListDropdown = signal<{ [key: string]: boolean }>({});\n protected selectedQuickRange = signal<string>('');\n protected leftCalendar = signal<{ calendar?: ICalendar; month?: Dayjs }>({});\n protected rightCalendar = signal<{ calendar?: ICalendar; month?: Dayjs }>({});\n\n protected listMonthsConfig = signal<IListConfigItem | undefined>(undefined);\n protected monthHttpDetailConfig = signal<IHttpRequestConfig>(getMonthsDetailById());\n protected listLeftYearConfig = signal<IListConfigItem | undefined>(undefined);\n protected listRightYearConfig = signal<IListConfigItem | undefined>(undefined);\n protected listYearConfig = signal<IListConfigItem | undefined>(undefined);\n protected leftYearHttpDetailConfig = signal<IHttpRequestConfig | undefined>(undefined);\n protected rightYearHttpDetailConfig = signal<IHttpRequestConfig | undefined>(undefined);\n\n protected timePickerError = signal<boolean>(false);\n protected computedDisplayTimeLeft = computed(() => this.computedDisplayTime({ selectedHour: this.timepickerValueItem().lefthour(), selectedMinute: this.timepickerValueItem().leftminute() }));\n protected computedDisplayTimeRight = computed(() => this.computedDisplayTime({ selectedHour: this.timepickerValueItem().righthour(), selectedMinute: this.timepickerValueItem().rightminute() }));\n protected computedDisplayTimeLeftInputHour = computed(() => this.computedDisplayTimeInput(SideEnum.left, 'hour'));\n protected computedDisplayTimeLeftInputMinute = computed(() => this.computedDisplayTimeInput(SideEnum.left, 'minute'));\n protected computedDisplayTimeRightInputHour = computed(() => this.computedDisplayTimeInput(SideEnum.right, 'hour'));\n protected computedDisplayTimeRightInputMinute = computed(() => this.computedDisplayTimeInput(SideEnum.right, 'minute'));\n protected timepickerValueItem = signal<ITimepickerItemValue>({ lefthour: signal(0), leftminute: signal(0), righthour: signal(0), rightminute: signal(0) });\n\n private functionControls = new Map<string, IDropdownFunctionControlEvent | IInputFunctionControlEvent>();\n private pickingDate = signal<boolean>(false);\n private isShown = signal<boolean>(false);\n private nowHoveredDate = signal<Dayjs | null>(null);\n private timePickerIncrement = signal<number>(1);\n private selectedLabel = signal<string | undefined>(undefined);\n private keyCodeBackspace = signal<boolean>(false);\n private checkBackspaceFocus = signal<ITimepickerItemValue>({ lefthour: signal(1), leftminute: signal(1), righthour: signal(1), rightminute: signal(1) });\n private isZero = signal<boolean | undefined>(undefined);\n private oldDate = signal<ISelectedOld>({ start: dayjs(0), end: dayjs(0) });\n private isSelectedData = signal<ICheckTimepickerSelected>({ leftmonth: false, leftyear: false, rightmonth: false, rightyear: false });\n private splitPickerDate = signal<ISplitPickerDate>({ start: signal({ month: 0, year: 0, day: 0, hour: 0, minute: 0 }), end: signal({ month: 0, year: 0, day: 0, hour: 23, minute: 59 }) });\n\n /** INPUT */\n readonly quickRangesArray = input<Array<IDateRange>>([]);\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly classInclude = input<string>('');\n readonly isSingle = input<boolean>(false);\n readonly showDropdownsSelect = input<boolean>(true);\n readonly hasTimePicker = input<boolean>(true);\n readonly flagMouse = input<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n readonly dateOptions = input<LocalizationConfig>({ ...defaultLocaleConfig(), ...getDateOptions() });\n readonly autoApply = input<boolean>(false);\n readonly hasSecondPicker = input<boolean>(false);\n readonly showRangeLabelOnInput = input<boolean | undefined>(undefined);\n\n readonly startDate = model<Dayjs | undefined>(getDayjs().startOf('day'));\n readonly endDate = model<Dayjs | undefined>(getDayjs().endOf('day'));\n readonly minDate = input<Dayjs | string | undefined, Dayjs | string | undefined>(undefined, { transform: this.transformMinMaxDate.bind(this) });\n readonly maxDate = input<Dayjs | string | undefined, Dayjs | string | undefined>(undefined, { transform: this.transformMinMaxDate.bind(this) });\n readonly listYearHiddenInputSearch = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n /** OUTPUT */\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outPickerDate = output<IEmitDateCalendar>();\n readonly outCancel = output<string>();\n readonly outUpdateWidth = output<number>();\n readonly outFunctionsControl = output<ICalendarFunctionControlEvent>();\n\n /** INJECTION */\n private translate = inject(TranslateService);\n\n readonly pickerContainer = viewChild<ElementRef>('pickerContainer');\n readonly inputTimeHours = viewChildren<LibsUiComponentsInputsInputComponent>(LibsUiComponentsInputsInputComponent);\n\n constructor() {\n this.listMonthsConfig.set(getMonthsListConfig(this.translate));\n\n effect(() => {\n const oldStart = getDayjs({ date: this.startDate()?.clone() });\n const oldEnd = getDayjs({ date: this.endDate()?.clone() });\n\n untracked(() => {\n this.oldDate.set({ start: oldStart, end: oldEnd });\n });\n });\n }\n\n ngOnInit() {\n const startDate = getDayjs({ date: this.startDate()?.clone() });\n const endDate = getDayjs({ date: this.endDate()?.clone() });\n\n this.splitPickerDate.update((current) => {\n current.start.update((sideCurrent) => {\n sideCurrent.day = (startDate ?? getDayjs().startOf('day')).date();\n\n return sideCurrent;\n });\n current.end.update((sideCurrent) => {\n sideCurrent.day = (endDate ?? getDayjs().endOf('day')).date();\n\n return sideCurrent;\n });\n\n return current;\n });\n if (startDate) {\n this.updateElement();\n }\n if (startDate && this.hasTimePicker()) {\n this.setStartDate(startDate);\n this.renderTimePicker(SideEnum.left);\n }\n\n if (endDate && this.hasTimePicker()) {\n this.setEndDate(endDate);\n this.renderTimePicker(SideEnum.right);\n }\n this.buildConfigYear(SideEnum.left);\n this.buildConfigYear(SideEnum.right, startDate?.year());\n this.updateMonthsInView();\n this.renderCalendar(SideEnum.left);\n if ((getDayjs({ date: this.maxDate() })?.year() ?? DEFAULT_MAX_YEAR) < (startDate?.year() || 0)) {\n this.handlerSelectedDropdown({ key: getDayjs({ date: this.maxDate() })?.year() as unknown as string }, SideEnum.left + 'year');\n }\n\n if (!this.isSingle()) {\n this.renderCalendar(SideEnum.right);\n if ((getDayjs({ date: this.maxDate() })?.year() ?? DEFAULT_MAX_YEAR) < (endDate?.year() || 0)) {\n this.handlerSelectedDropdown({ key: getDayjs({ date: this.maxDate() })?.year() as unknown as string }, SideEnum.right + 'year');\n }\n }\n\n // this.renderRanges();\n this.formatMonthYear();\n this.outUpdateWidth.emit(1);\n this.updateElement();\n this.timepickerValueItem.set({\n lefthour: signal(this.timepickerVariables().left().selectedHour),\n righthour: signal(this.timepickerVariables().right().selectedHour),\n leftminute: signal(this.timepickerVariables().left().selectedMinute),\n rightminute: signal(this.timepickerVariables().right().selectedMinute),\n });\n\n setTimeout(() => {\n this.inputTimeHours()?.forEach((input) => {\n input.FunctionsControl.blur(true);\n });\n }, 0);\n // this.outFunctionsControl.emit({ buildDefaultRange: this.buildDefaultRange.bind(this), applyToSelect: this.applyToSelect.bind(this) })\n }\n\n private buildConfigYear(side: SideEnum, startYear?: number) {\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n const listLeftYear = [];\n const listRightYear = [];\n\n if (side === SideEnum.left) {\n const start = maxDate?.year() ?? DEFAULT_MAX_YEAR;\n const end = minDate?.year() ?? DEFAULT_MIN_YEAR;\n for (let i = start; i >= end; i--) {\n listLeftYear.push({\n id: i,\n label: `${i}`,\n });\n }\n this.listLeftYearConfig.set(getYearsListConfig(listLeftYear));\n this.leftYearHttpDetailConfig.set(getYearsDetailById(listLeftYear));\n\n return;\n }\n\n const start = maxDate?.year() ?? DEFAULT_MAX_YEAR;\n const end = startYear ?? minDate?.year() ?? getDayjs().year();\n for (let i = start; i >= end; i--) {\n listRightYear.push({\n id: i,\n label: `${i}`,\n });\n }\n\n this.listRightYearConfig.set(getYearsListConfig(listRightYear));\n this.rightYearHttpDetailConfig.set(getYearsDetailById(listRightYear));\n }\n\n protected handlerChangeFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n\n private updateStartEndDate(date: Dayjs) {\n date = getDayjs({ date });\n if (this.endDate() || date.isBefore(getDayjs({ date: this.startDate() }), 'day')) {\n if (this.hasTimePicker()) {\n date = this.getDateWithTime(date, SideEnum.left);\n }\n this.endDate.set(undefined);\n this.setStartDate(getDayjs({ date: date.clone() }));\n\n return;\n }\n if (!this.endDate() && this.startDate() && date.isBefore(getDayjs({ date: this.startDate() }))) {\n this.setEndDate(getDayjs({ date: this.startDate()?.clone() }));\n\n return;\n }\n if (this.hasTimePicker()) {\n date = getDayjs({ date: this.getDateWithTime(date, SideEnum.right) });\n }\n if (!date.isBefore(getDayjs({ date: this.startDate() }), 'day')) {\n this.setEndDate(getDayjs({ date: date.clone() }));\n }\n if (this.autoApply()) {\n this.calculateSelectedLabel();\n }\n }\n\n private calculateSelectedLabel() {\n this.updateElement();\n }\n\n private formatMonthYear() {\n const month = (this.calendarVariables().left().dropdowns?.()?.currentMonth ?? 0) + 1;\n this.listKeyFromSelected.update((current) => {\n current.month = month;\n current.year = this.calendarVariables().left().dropdowns?.()?.currentYear;\n\n return current;\n });\n if (this.isSingle()) {\n this.isSelectedData.set({ leftmonth: true, leftyear: true, rightmonth: true, rightyear: true });\n return;\n }\n const rightMonth = (this.calendarVariables().right().dropdowns?.()?.currentMonth ?? 0) + 1;\n this.listKeyToSelected.update((current) => {\n current.month = rightMonth;\n current.year = this.calendarVariables().right().dropdowns?.()?.currentYear;\n\n return current;\n });\n this.isSelectedData.set({ leftmonth: true, leftyear: true, rightmonth: true, rightyear: true });\n }\n\n private setStartDate(startDate: Dayjs | string | undefined) {\n if (!this.startDate()) {\n return;\n }\n if (typeof startDate === 'string') {\n this.startDate.set(getDayjs({ date: dayjs(startDate, this.dateOptions().format), returnDayjsIfConfigDateNotExist: true }));\n }\n if (typeof startDate === 'object') {\n this.pickingDate.set(true);\n this.startDate.set(getDayjs({ date: startDate, returnDayjsIfConfigDateNotExist: true }));\n }\n if (!this.hasTimePicker()) {\n this.pickingDate.set(true);\n this.startDate.set(getDayjs({ date: this.startDate()?.startOf('day') }));\n }\n this.setStartDateInTimePicker();\n\n if (this.minDate() && this.startDate()?.isBefore(this.minDate())) {\n this.startDate.set(getDayjs({ date: this.minDate() })?.clone());\n\n this.setStartDateInTimePicker();\n }\n if (this.maxDate() && this.startDate()?.isAfter(this.maxDate())) {\n this.startDate.set(getDayjs({ date: this.maxDate() })?.clone());\n this.setStartDateInTimePicker();\n }\n if (!this.isShown()) {\n this.updateElement();\n }\n // this.outStartDateChanged.emit({ startDate: this.startDate() });\n this.updateMonthsInView();\n }\n\n private setStartDateInTimePicker() {\n if (!this.hasTimePicker() || !this.timePickerIncrement()) {\n return;\n }\n\n this.startDate.update((current) => {\n if (!current) {\n return;\n }\n current.minute(Math.round(current.minute() / this.timePickerIncrement()) * this.timePickerIncrement());\n\n return current;\n });\n }\n private setEndDate(endDate: Dayjs | string | undefined) {\n if (typeof endDate === 'string') {\n this.endDate.set(getDayjs({ date: dayjs(endDate, this.dateOptions().format), returnDayjsIfConfigDateNotExist: true }));\n }\n if (typeof endDate === 'object') {\n this.pickingDate.set(false);\n this.endDate.set(getDayjs({ date: dayjs(endDate), returnDayjsIfConfigDateNotExist: true }));\n }\n if (!this.endDate() || !this.startDate()) {\n return this.updateMonthsInView();\n }\n if (!this.hasTimePicker()) {\n this.pickingDate.set(false);\n this.endDate.set(this.endDate()?.add(1, 'd').startOf('day').subtract(1, 'second'));\n }\n if (this.hasTimePicker() && this.timePickerIncrement()) {\n this.endDate.update((current) => {\n if (!current) {\n return;\n }\n current.minute(Math.round(current.minute() / this.timePickerIncrement()) * this.timePickerIncrement());\n\n return current;\n });\n }\n if (this.endDate()?.isBefore(this.startDate())) {\n this.endDate.set(this.startDate()?.clone());\n }\n if (this.maxDate() && this.endDate()?.isAfter(this.maxDate())) {\n this.endDate.set(getDayjs({ date: this.maxDate() })?.clone());\n }\n // this.outEndDateChanged.emit({ endDate: this.endDate() });\n this.updateMonthsInView();\n }\n protected handlerHoverDate(event: Event, side: SideEnum, row: number, col: number) {\n event.stopPropagation();\n\n const leftCalDate = this.calendarVariables().left().calendar?.[row][col];\n const rightCalDate = this.calendarVariables().right().calendar?.[row][col];\n\n if (!this.pickingDate || !rightCalDate || !leftCalDate) {\n return;\n }\n this.nowHoveredDate.set(side === SideEnum.left ? leftCalDate : rightCalDate);\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n }\n private getDisable(type: 'left' | 'right') {\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n if (type === 'left') {\n this.disableMonth().left.set([]);\n\n if (minDate && minDate?.year() === this.listKeyFromSelected().year) {\n for (let i = 1; i < minDate?.month() + 1; i++) {\n this.disableMonth().left.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n if (maxDate && maxDate?.year() === this.listKeyFromSelected().year) {\n for (let i = maxDate?.month() + 2; i < 13; i++) {\n this.disableMonth().left.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n\n return;\n }\n\n this.disableMonth().right.set([]);\n if (minDate && minDate?.year() === this.listKeyToSelected().year) {\n for (let i = 1; i < minDate?.month() + 1; i++) {\n this.disableMonth().right.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n if (maxDate && maxDate?.year() === this.listKeyToSelected().year) {\n for (let i = maxDate?.month() + 2; i < 13; i++) {\n this.disableMonth().right.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n if (Number(this.listKeyFromSelected().year) === Number(this.listKeyToSelected().year)) {\n for (let i = 1; i <= Number(this.listKeyFromSelected().month); i++) {\n this.disableMonth().right.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n }\n\n protected handlerClickPrev(side: SideEnum) {\n if (side === SideEnum.left && this.leftCalendar().month) {\n this.leftCalendar.update((current) => {\n current.month = current.month?.subtract(1, 'month');\n\n return current;\n });\n this.listKeyFromSelected.update((current) => {\n current.month = (this.leftCalendar().month?.month() ?? 0) + 1;\n current.year = this.leftCalendar().month?.year();\n\n return current;\n });\n\n return this.updateCalendars();\n }\n this.rightCalendar.update((current) => {\n current.month = current.month?.subtract(1, 'month');\n\n return current;\n });\n this.listKeyToSelected.update((current) => {\n current.month = (this.rightCalendar().month?.month() ?? 0) + 1;\n current.year = this.rightCalendar().month?.year();\n\n return current;\n });\n this.getDisable('right');\n this.updateCalendars();\n }\n\n protected handlerClickNext(side: SideEnum) {\n if (side === SideEnum.left) {\n this.leftCalendar.update((current) => {\n current.month = current.month?.add(1, 'month');\n\n return current;\n });\n this.listKeyFromSelected.update((current) => {\n current.month = (this.leftCalendar().month?.month() ?? 0) + 1;\n current.year = this.leftCalendar().month?.year();\n\n return current;\n });\n\n if (this.listKeyFromSelected().month === this.listKeyToSelected().month && this.listKeyFromSelected().year === this.listKeyToSelected().year) {\n this.rightCalendar.update((current) => {\n current.month = current.month?.add(1, 'month');\n\n return current;\n });\n this.listKeyToSelected.update((current) => {\n current.month = (this.rightCalendar().month?.month() ?? 0) + 1;\n current.year = this.rightCalendar().month?.year();\n\n return current;\n });\n }\n this.getDisable('right');\n\n return this.updateCalendars();\n }\n this.rightCalendar.update((current) => {\n current.month = current.month?.add(1, 'month');\n\n return current;\n });\n this.listKeyToSelected.update((current) => {\n current.month = (this.rightCalendar().month?.month() ?? 0) + 1;\n current.year = this.rightCalendar().month?.year();\n\n return current;\n });\n this.updateCalendars();\n }\n protected handlerPickerDate(event: any, side: SideEnum, row: number, col: number) {\n event.stopPropagation();\n\n if (event.target?.tagName === 'TD') {\n if (event.target.classList && !event.target.classList.contains('available')) {\n return;\n }\n }\n if (event.target.tagName === 'SPAN') {\n if (event.target.parentElement && event.target.parentElement.classList && !event.target.parentElement.classList.contains('available')) {\n return;\n }\n }\n if (!this.dateOptions().customRangeLabel) {\n return;\n }\n if (this.quickRangesArray().length) {\n this.selectedQuickRange.set(this.dateOptions().customRangeLabel);\n }\n const date = side === SideEnum.left ? this.leftCalendar().calendar?.[row][col] : this.rightCalendar().calendar?.[row][col];\n\n if (!date) {\n return;\n }\n this.splitPickerDate.update((current) => {\n current[side === SideEnum.left ? 'start' : 'end'].update((sideCurrent) => {\n sideCurrent.day = date.date();\n\n return sideCurrent;\n });\n\n return current;\n });\n this.updateStartEndDate(date);\n\n if (this.isSingle() && this.startDate()) {\n this.setEndDate(this.startDate());\n this.updateElement();\n\n if (this.autoApply()) {\n this.handlerClickApply();\n }\n }\n\n this.updateView();\n if (this.autoApply() && this.startDate() && this.endDate()) {\n this.handlerClickApply();\n }\n }\n\n protected handlerClickApply(event?: Event) {\n event?.stopPropagation();\n // this.validate();\n // if (!this.validate()) {\n // return;\n // }\n if (this.hasTimePicker()) {\n this.setTimeInput(SideEnum.left);\n this.setTimeInput(SideEnum.right);\n }\n this.calculateSelectedLabel();\n\n if (this.selectedLabel()) {\n this.outPickerDate.emit({ displayLabel: this.selectedLabel(), startDate: this.startDate(), endDate: this.endDate(), detailDatePicker: this.splitPickerDate() });\n }\n }\n protected handlerClickCancel(event: Event) {\n event.stopPropagation();\n this.startDate.set(dayjs(0));\n this.endDate.set(dayjs(0));\n this.outCancel.emit('');\n }\n\n protected handlerFunctionControl(event: IDropdownFunctionControlEvent | IInputFunctionControlEvent, type: string) {\n this.functionControls.set(type, event);\n }\n\n protected handlerSelectedDropdown(event: IEmitSelectKey | undefined, type: string) {\n this.outChangStageFlagMouse.emit({\n isMouseEnter: false,\n isMouseEnterContent: false,\n isContainerHasScroll: false,\n });\n if (!event) {\n return;\n }\n switch (type) {\n case `${SideEnum.left}month`:\n case `${SideEnum.right}month`:\n this.updateMonthSelect(event, type);\n\n break;\n\n case `${SideEnum.left}year`:\n case `${SideEnum.right}year`:\n this.updateYearSelect(event, type);\n break;\n\n default:\n break;\n }\n\n this.splitPickerDate.update((current) => {\n if (type === `${SideEnum.left}month` || type === `${SideEnum.left}year`) {\n current.start.update((start) => {\n if (type === `${SideEnum.left}month`) {\n start.month = event.key as number;\n }\n if (type === `${SideEnum.left}year`) {\n start.year = event.key as number;\n }\n\n return start;\n });\n\n return current;\n }\n\n current.end.update((end) => {\n if (type === `${SideEnum.right}month`) {\n end.month = event.key as number;\n }\n if (type === `${SideEnum.right}year`) {\n end.year = event.key as number;\n }\n\n return end;\n });\n\n return current;\n });\n }\n\n private updateMonthSelect(event: IEmitSelectKey, type: string) {\n const side = type.includes(SideEnum.left) ? SideEnum.left : SideEnum.right;\n const year = this.calendarVariables()[side]().dropdowns?.()?.currentYear || getDayjs().year();\n const month = Number(event.key) - 1;\n\n if (side === SideEnum.left) {\n if (this.isSelectedData().leftmonth) {\n this.isSelectedData.update((current) => {\n current.leftmonth = false;\n\n return current;\n });\n this.getDisable('right');\n\n return;\n }\n this.listKeyFromSelected.update((current) => {\n current.month = event.key;\n\n return current;\n });\n if (Number(event.key) >= Number(this.listKeyFromSelected().month) && Number(this.listKeyFromSelected().year) === Number(this.listKeyToSelected().year)) {\n if (Number(event.key) <= 11) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(event.key) + 1;\n\n return current;\n });\n }\n if (Number(event.key) === 12) {\n this.listKeyToSelected.update((current) => {\n current.month = 1;\n current.year += 1;\n\n return current;\n });\n }\n }\n }\n\n if (side === SideEnum.right) {\n if (this.isSelectedData().rightmonth) {\n this.isSelectedData.update((current) => {\n current.rightmonth = false;\n\n return current;\n });\n this.getDisable('right');\n\n return;\n }\n this.listKeyToSelected.update((current) => {\n current.month = event.key;\n\n return current;\n });\n }\n (this.functionControls.get(type) as IDropdownFunctionControlEvent)?.removeList();\n\n this.getDisable('right');\n this.monthOrYearChanged(month, year, side);\n }\n private updateYearSelect(event: IEmitSelectKey, type: string) {\n const side = type.includes(SideEnum.left) ? SideEnum.left : SideEnum.right;\n\n if (side === SideEnum.left) {\n if (this.isSelectedData()?.leftyear) {\n this.isSelectedData.update((current) => {\n current.leftyear = false;\n\n return current;\n });\n this.getDisable('left');\n // this.SetListYearRight(this.listViewKeySelectedYear as number);\n (this.functionControls.get(type) as IDropdownFunctionControlEvent)?.removeList();\n\n return;\n }\n this.listKeyFromSelected.update((current) => {\n current.year = event.key;\n return current;\n });\n if (this.listKeyFromSelected().year && this.listKeyToSelected().year && this.listKeyFromSelected().year >= this.listKeyToSelected().year) {\n this.listKeyToSelected.update((current) => {\n current.year = event.key;\n return current;\n });\n if (this.listKeyFromSelected().month && Number(this.listKeyFromSelected().month) <= 11) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month) + 1;\n return current;\n });\n }\n if (this.listKeyFromSelected().month && this.listKeyFromSelected().month === 12) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month);\n return current;\n });\n }\n }\n this.getDisable('left');\n this.buildConfigYear(SideEnum.right, this.listKeyFromSelected().year as number);\n (this.functionControls.get(type) as IDropdownFunctionControlEvent)?.removeList();\n }\n if (side === SideEnum.right) {\n if (this.isSelectedData().rightyear) {\n this.isSelectedData.update((current) => {\n current.rightyear = false;\n\n return current;\n });\n this.getDisable('right');\n\n return;\n }\n this.listKeyToSelected.update((current) => {\n current.year = event.key;\n\n return current;\n });\n if (this.listKeyFromSelected().year && this.listKeyToSelected().year && this.listKeyFromSelected().year >= this.listKeyToSelected().year) {\n if (this.listKeyFromSelected().month && Number(this.listKeyFromSelected().month) <= 11) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month) + 1;\n\n return current;\n });\n }\n if (this.listKeyFromSelected().month && this.listKeyFromSelected().month === 12) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month);\n\n return current;\n });\n }\n }\n }\n this.getDisable('right');\n let month = getDayjs().month();\n\n if (side === SideEnum.right && this.listKeyFromSelected().month) {\n month = Number(this.listKeyFromSelected().month) - 1;\n }\n if (side === SideEnum.left && this.listKeyFromSelected().month) {\n month = Number(this.listKeyFromSelected().month) - 1;\n }\n const year = Number(event.key);\n\n this.monthOrYearChanged(month, year, side);\n }\n private monthOrYearChanged(month: number, year: number, side: SideEnum) {\n const isLeft = side === SideEnum.left;\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n if (minDate && (year < minDate?.year() || (year === minDate?.year() && month < minDate?.month()))) {\n month = minDate?.month();\n year = minDate?.year();\n }\n\n if (maxDate && (year > maxDate?.year() || (year === maxDate?.year() && month > maxDate?.month()))) {\n month = maxDate?.month();\n year = maxDate?.year();\n }\n\n const dropdowns = this.calendarVariables()[side]().dropdowns;\n\n if (dropdowns?.()) {\n dropdowns.update((current) => {\n current.currentYear = year;\n current.currentMonth = month;\n\n return current;\n });\n }\n if (isLeft && this.leftCalendar().month) {\n this.leftCalendar.update((current) => {\n current.month = current.month?.month(month).year(year);\n return current;\n });\n\n return this.updateCalendars();\n }\n\n if (month === 12) {\n this.rightCalendar.update((current) => {\n current.month = current.month?.clone().add(1, 'month');\n return current;\n });\n\n return this.updateCalendars();\n }\n this.rightCalendar.update((current) => {\n current.month = current.month?.month(month).year(year);\n return current;\n });\n this.updateCalendars();\n }\n\n protected handlerInputEvent(event: IEvent, type: `lefthour` | `leftminute` | `righthour` | `rightminute`) {\n if (event.keyCode !== 8) {\n event.keyCode &&\n this.checkBackspaceFocus.update((current) => {\n current[type].set(1);\n\n return current;\n });\n\n this.keyCodeBackspace.set(false);\n\n return;\n }\n\n this.keyCodeBackspace.set(true);\n\n switch (type) {\n case 'leftminute':\n if (isEmpty(this.timepickerValueItem().leftminute())) {\n if (this.checkBackspaceFocus()[type]() === 1) {\n this.checkBackspaceFocus.update((current) => {\n current[type].set(current[type]() + 1);\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocus.update((current) => {\n current[type].set(1);\n\n return current;\n });\n (this.functionControls.get(`${SideEnum.left}hour`) as IInputFunctionControlEvent)?.focus();\n }\n break;\n\n case 'rightminute':\n if (isEmpty(this.timepickerValueItem().rightminute())) {\n if (this.checkBackspaceFocus()[type]() === 1) {\n this.checkBackspaceFocus.update((current) => {\n current[type].set(current[type]() + 1);\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocus.update((current) => {\n current[type].set(1);\n\n return current;\n });\n (this.functionControls.get(`${SideEnum.right}hour`) as IInputFunctionControlEvent)?.focus();\n }\n break;\n }\n }\n\n protected handlerFocusAndBlurTime(event: IFocusAndBlurEvent, type: `lefthour` | `leftminute` | `righthour` | `rightminute`) {\n if (event.name === 'focus') {\n return;\n }\n const eventInput = event.event as IEvent;\n const target = eventInput.target;\n\n switch (type) {\n case 'lefthour':\n this.timepickerVariables().left.update((current) => {\n current.selectedHour = !isEmpty(this.timepickerValueItem().lefthour()) ? this.timepickerValueItem().lefthour() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().lefthour()) === 0 || isEmpty(this.timepickerValueItem().lefthour())) {\n this.timepickerValueItem.update((current) => {\n current.lefthour.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n if (Number(this.timepickerValueItem().lefthour()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().lefthour())}`;\n }\n break;\n\n case 'righthour':\n this.timepickerVariables().right.update((current) => {\n current.selectedHour = !isEmpty(this.timepickerValueItem().righthour()) ? this.timepickerValueItem().righthour() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().righthour()) === 0 || isEmpty(this.timepickerValueItem().righthour())) {\n this.timepickerValueItem.update((current) => {\n current.righthour.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n\n if (Number(this.timepickerValueItem().righthour()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().righthour())}`;\n }\n break;\n\n case 'leftminute':\n this.timepickerVariables().left.update((current) => {\n current.selectedMinute = !isEmpty(this.timepickerValueItem().leftminute()) ? this.timepickerValueItem().leftminute() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().leftminute()) === 0 || isEmpty(this.timepickerValueItem().leftminute())) {\n this.timepickerValueItem.update((current) => {\n current.leftminute.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n\n if (Number(this.timepickerValueItem().leftminute()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().leftminute())}`;\n }\n break;\n\n case 'rightminute':\n this.timepickerVariables().right.update((current) => {\n current.selectedMinute = !isEmpty(this.timepickerValueItem().rightminute()) ? this.timepickerValueItem().rightminute() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().rightminute()) === 0 || isEmpty(this.timepickerValueItem().rightminute())) {\n this.timepickerValueItem.update((current) => {\n current.rightminute.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n\n if (Number(this.timepickerValueItem().rightminute()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().rightminute())}`;\n }\n break;\n }\n }\n\n protected handlerChangeTimeValue(event: string | number, type: `lefthour` | `leftminute` | `righthour` | `rightminute`) {\n this.timepickerValueItem.update((current) => {\n current[type].set(event as number);\n\n return current;\n });\n\n const side = type.includes(SideEnum.left) ? SideEnum.left : SideEnum.right;\n const attr = type.includes('hour') ? 'hour' : 'minute';\n\n this.splitPickerDate.update((current) => {\n current[side === SideEnum.left ? 'start' : 'end'].update((sideCurrent) => {\n sideCurrent[attr] = event as number;\n\n return sideCurrent;\n });\n\n return current;\n });\n if ((type !== 'lefthour' && type !== 'righthour') || event === undefined) {\n this.isZero.set(false);\n\n return;\n }\n if (`${event}`.length === 2 || Number(event) > 2 || (Number(event) <= 2 && Number(event) > 0 && this.isZero()) || (this.isZero() && !this.keyCodeBackspace())) {\n this.isZero.set(false);\n (this.functionControls.get(type === 'lefthour' ? `${SideEnum.left}minute` : `${SideEnum.right}minute`) as IInputFunctionControlEvent)?.focus();\n\n return;\n }\n if (Number(event) === 0 && !this.keyCodeBackspace()) {\n this.isZero.set(true);\n\n return;\n }\n }\n\n protected handlerShowListDropdown(event: boolean, type: string) {\n this.checkShowListDropdown.update((current) => {\n current[type] = event;\n\n return current;\n });\n }\n\n protected convertItemMonth = (item: any) => {\n if (!item) {\n return '';\n }\n set(item, 'labelDisplay', this.translate.instant(item.label || ' ', { year: '' }));\n\n return item;\n };\n protected convertItemYear = (item: any) => {\n if (!item) {\n return '';\n }\n item.labelDisplay = this.translate.instant('i18n_year_param', { year: item.label });\n\n return item;\n };\n\n private updateMonthsInView() {\n if (this.endDate()) {\n if (\n !this.isSingle() &&\n this.leftCalendar().month &&\n this.rightCalendar().month &&\n ((this.leftCalendar() && this.startDate()?.format('YYYY-MM') === this.leftCalendar().month?.format('YYYY-MM')) || (this.rightCalendar() && this.startDate()?.format('YYYY-MM') === this.rightCalendar().month?.format('YYYY-MM'))) &&\n (this.endDate()?.format('YYYY-MM') === this.leftCalendar().month?.format('YYYY-MM') || this.endDate()?.format('YYYY-MM') === this.rightCalendar().month?.format('YYYY-MM'))\n ) {\n return;\n }\n\n if (this.startDate()) {\n this.leftCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2);\n\n return current;\n });\n\n if (this.endDate()?.month() !== this.startDate()?.month() || this.endDate()?.year() !== this.startDate()?.year()) {\n this.rightCalendar.update((current) => {\n current.month = this.endDate()?.clone()?.date(2);\n\n return current;\n });\n\n return;\n }\n this.rightCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2)?.add(1, 'month');\n\n return current;\n });\n }\n }\n\n if (\n this.startDate() &&\n this.leftCalendar().month &&\n this.rightCalendar().month &&\n this.leftCalendar().month?.format('YYYY-MM') !== this.startDate()?.format('YYYY-MM') &&\n this.rightCalendar().month?.format('YYYY-MM') !== this.startDate()?.format('YYYY-MM')\n ) {\n this.leftCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2);\n\n return current;\n });\n this.rightCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2)?.add(1, 'month');\n\n return current;\n });\n }\n }\n\n private setTimeInput(side: SideEnum) {\n const hour = parseInt(`${this.timepickerVariables()[side]().selectedHour}`);\n const minute = parseInt(`${this.timepickerVariables()[side]().selectedMinute}`);\n\n if (side === SideEnum.left && this.startDate()) {\n let start = this.startDate()?.clone();\n\n start = start?.hour(hour);\n start = start?.minute(minute);\n this.setStartDate(start);\n if (this.isSingle()) {\n this.endDate.set(this.startDate()?.clone());\n }\n if (this.endDate() && this.endDate()?.format('YYYY-MM-DD') === start?.format('YYYY-MM-DD') && this.endDate()?.isBefore(start)) {\n this.setEndDate(start?.clone());\n }\n if (!this.endDate() && start && this.hasTimePicker()) {\n const startClone = this.getDateWithTime(start, SideEnum.right);\n\n if (startClone.isBefore(start)) {\n this.timepickerVariables()[SideEnum.right].update((current) => {\n current.selectedHour = hour;\n current.selectedMinute = minute;\n\n return current;\n });\n }\n }\n\n return;\n }\n if (this.endDate()) {\n let end = this.endDate()?.clone();\n\n end = end?.hour(hour);\n end = end?.minute(minute);\n this.setEndDate(end);\n }\n this.updateCalendars();\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n }\n\n private updateCalendars() {\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n if (this.endDate() === null) {\n return;\n }\n this.calculateSelectedLabel();\n }\n\n private renderCalendar(side: SideEnum) {\n // side enum\n const mainCalendar: { calendar?: ICalendar; month?: Dayjs } = side === SideEnum.left ? this.leftCalendar() : this.rightCalendar();\n\n if (!mainCalendar.month || this.dateOptions().firstDay === undefined || this.dateOptions().firstDay === undefined) {\n return;\n }\n const month = mainCalendar.month.month();\n const year = mainCalendar.month.year();\n const hour = mainCalendar.month.hour();\n const minute = mainCalendar.month.minute();\n const second = mainCalendar.month.second();\n const daysInMonth = getDayjs({ date: new Date(year, month) }).daysInMonth();\n const firstDay = getDayjs({ date: new Date(year, month, 1) });\n const lastDay = getDayjs({ date: new Date(year, month, daysInMonth) });\n const lastMonth = getDayjs({ date: firstDay.subtract(1, 'month') }).month();\n const lastYear = getDayjs({ date: firstDay.subtract(1, 'month') }).year();\n const daysInLastMonth = getDayjs({ date: new Date(lastYear, lastMonth) }).daysInMonth();\n const dayOfWeek = firstDay.day();\n const calendar: ICalendar = {};\n\n calendar.firstDay = firstDay;\n calendar.lastDay = lastDay;\n for (let i = 0; i < 6; i++) {\n calendar[i] = [];\n }\n let startDay = daysInLastMonth - dayOfWeek + (this.dateOptions().firstDay ?? 1) + 1;\n\n if (startDay > daysInLastMonth) {\n startDay -= 7;\n }\n if (dayOfWeek === this.dateOptions().firstDay) {\n startDay = daysInLastMonth - 6;\n }\n let curDate = getDayjs({ date: new Date(lastYear, lastMonth, startDay, 12, minute, second) });\n\n for (let i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = getDayjs({ date: curDate }).add(24, 'hour')) {\n if (i > 0 && col % 7 === 0) {\n col = 0;\n row++;\n }\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\n curDate = curDate.hour(12);\n\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n if (minDate && calendar[row][col].format('YYYY-MM-DD') === minDate?.format('YYYY-MM-DD') && calendar[row][col].isBefore(minDate) && side === 'left') {\n calendar[row][col] = minDate?.clone();\n }\n if (maxDate && calendar[row][col].format('YYYY-MM-DD') === maxDate?.format('YYYY-MM-DD') && calendar[row][col].isAfter(maxDate) && side === 'right') {\n calendar[row][col] = maxDate?.clone();\n }\n }\n\n if (side === SideEnum.left) {\n this.leftCalendar.update((current) => {\n current.calendar = calendar;\n\n return current;\n });\n }\n if (side === SideEnum.right) {\n this.rightCalendar.update((current) => {\n current.calendar = calendar;\n\n return current;\n });\n }\n const minDate = side === 'left' ? getDayjs({ date: this.minDate() }) : getDayjs({ date: this.startDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n this.calendarVariables()[side].set({\n month: month,\n year: year,\n hour: hour,\n minute: minute,\n second: second,\n daysInMonth: daysInMonth,\n firstDay: firstDay,\n lastDay: lastDay,\n lastMonth: lastMonth,\n lastYear: lastYear,\n daysInLastMonth: daysInLastMonth,\n dayOfWeek: dayOfWeek,\n calRows: signal(Array.from(Array(6).keys())),\n calCols: signal(Array.from(Array(7).keys())),\n classes: {},\n minDate: minDate,\n maxDate: maxDate,\n calendar: calendar,\n dropdowns: signal({}),\n });\n if (this.showDropdownsSelect()) {\n const currentMonth = calendar[1][1].month();\n const currentYear = calendar[1][1].year();\n const maxYear = maxDate?.year() ?? DEFAULT_MAX_YEAR;\n const minYear = minDate?.year() ?? DEFAULT_MIN_YEAR;\n const inMinYear = currentYear === minYear;\n const inMaxYear = currentYear === maxYear;\n const years = [];\n\n for (let y = minYear; y <= maxYear; y++) {\n years.push(y);\n }\n this.calendarVariables()\n [side]()\n .dropdowns?.set({\n currentMonth: currentMonth,\n currentYear: currentYear,\n maxYear: maxYear,\n minYear: minYear,\n inMinYear: inMinYear,\n inMaxYear: inMaxYear,\n monthArrays: signal(Array.from(Array(12).keys())),\n yearArrays: signal(years),\n });\n }\n this.buildCells(calendar, side);\n }\n\n private buildCells(calendar: ICalendar, side: SideEnum) {\n for (let row = 0; row < 6; row++) {\n const classless = this.calendarVariables()[side]();\n\n if (classless.classes) {\n classless.classes[row] = {};\n }\n for (let col = 0; col < 7; col++) {\n const classes = [];\n\n const startDate = getDayjs({ date: this.startDate() });\n const endDate = getDayjs({ date: this.endDate() });\n const nowHoveredDate = this.nowHoveredDate();\n\n if (calendar[row][col].isSame(new Date(), 'day')) {\n classes.push('today');\n }\n if (calendar[row][col].isoWeekday() > 5) {\n classes.push('weekend');\n }\n if (calendar[row][col].month() !== calendar[1][1].month()) {\n classes.push('off');\n }\n if (this.minDate() && calendar[row][col].isBefore(this.minDate(), 'day')) {\n classes.push('off', 'disabled');\n }\n if (this.calendarVariables()[side]().maxDate && calendar[row][col].isAfter(this.calendarVariables()[side]().maxDate, 'day')) {\n classes.push('off', 'disabled');\n }\n if (startDate && calendar[row][col].format('YYYY-MM-DD') === startDate?.format('YYYY-MM-DD')) {\n classes.push('active', 'start-date');\n }\n if (endDate !== null && calendar[row][col].format('YYYY-MM-DD') === endDate?.format('YYYY-MM-DD')) {\n classes.push('active', 'end-date');\n }\n if (startDate && calendar[row][col].format('YYYY-MM-DD') === startDate?.format('YYYY-MM-DD') && (!endDate || (endDate !== null && calendar[row][col].format('YYYY-MM-DD') === endDate?.format('YYYY-MM-DD')))) {\n classes.push('active', 'full-date');\n }\n\n if (\n startDate &&\n endDate &&\n ((nowHoveredDate !== null && this.pickingDate()) || endDate !== null) &&\n calendar[row][col] > startDate &&\n (calendar[row][col] < endDate || (nowHoveredDate && calendar[row][col] < nowHoveredDate && this.pickingDate()))\n ) {\n classes.push(!classes.find((el) => el === 'off') ? 'in-range' : 'focus-off');\n }\n let cname = '',\n disabled = false;\n\n for (let i = 0; i < classes.length; i++) {\n cname += classes[i] + ' ';\n\n if (classes[i] === 'disabled') {\n disabled = true;\n }\n }\n if (!disabled) {\n cname += 'available';\n }\n\n if (classless.classes) {\n classless.classes[row][col] = cname.replace(/^\\s+|\\s+$/g, '');\n }\n }\n }\n }\n\n private renderTimePicker(side: SideEnum) {\n let selected: Dayjs = getDayjs(),\n minDate;\n const maxDate = getDayjs({ date: this.maxDate() });\n const startDate = getDayjs({ date: this.startDate() });\n const endDate = getDayjs({ date: this.endDate() });\n\n if (side === SideEnum.left && startDate) {\n selected = startDate.clone();\n minDate = this.maxDate();\n }\n if (side === SideEnum.right && endDate) {\n selected = endDate.clone();\n minDate = this.startDate();\n }\n if (side === SideEnum.right && !endDate) {\n if (!startDate) {\n return;\n }\n selected = getDayjs({ date: this.getDateWithTime(startDate, SideEnum.right) });\n if (selected.isBefore(startDate)) {\n selected = startDate.clone();\n }\n minDate = startDate;\n }\n const start = 0;\n const end = 23;\n\n this.timepickerVariables()[side].set({\n hours: [],\n minutes: [],\n minutesLabel: [],\n seconds: [],\n secondsLabel: [],\n disabledHours: [],\n disabledMinutes: [],\n disabledSeconds: [],\n selectedHour: 0,\n selectedMinute: 0,\n selectedSecond: 0,\n });\n for (let i = start; i <= end; i++) {\n const i_in_24 = i;\n\n const time = selected.clone().hour(i_in_24);\n let disabled = false;\n\n if (minDate && time.minute(59).isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.minute(0).isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables()[side].update((current) => {\n current.hours?.push(i);\n if (i_in_24 === selected.hour() && !disabled) {\n current.selectedHour = i;\n }\n if (disabled) {\n current.disabledHours?.push(i);\n }\n\n return current;\n });\n }\n for (let i = 0; i < 60; i += this.timePickerIncrement()) {\n const padded = i < 10 ? '0' + i : `${i}`;\n const time = selected.clone().minute(i);\n\n let disabled = false;\n\n if (minDate && time.second(59).isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.second(0).isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables()[side].update((current) => {\n current.minutes?.push(i);\n current.minutesLabel?.push(padded);\n if (selected.minute() === i && !disabled) {\n current.selectedMinute = i;\n }\n if (disabled) {\n current.disabledMinutes?.push(i);\n }\n\n return current;\n });\n }\n\n this.timepickerVariables()[side].update((current) => {\n current.selected = selected;\n\n return current;\n });\n }\n\n private updateElement() {\n if (!this.startDate()) {\n return;\n }\n if (this.isSingle()) {\n this.selectedLabel.set(this.startDate()?.format('DD/MM/YYYY'));\n\n return;\n }\n if (this.endDate()) {\n // if we use ranges and should show range label on input\n if (this.quickRangesArray().length && this.showRangeLabelOnInput() && this.selectedQuickRange() && this.dateOptions().customRangeLabel !== this.selectedQuickRange()) {\n this.selectedLabel.set(this.selectedQuickRange());\n\n return;\n }\n this.selectedLabel.set(`${this.startDate()?.format('DD/MM/YYYY')}${this.dateOptions().separator}${this.endDate()?.format('DD/MM/YYYY')}`);\n\n return;\n }\n this.selectedLabel.set(`${this.startDate()?.format('DD/MM/YYYY')}${this.dateOptions().separator}${this.startDate()?.format('DD/MM/YYYY')}`);\n }\n\n private updateView() {\n if (this.hasTimePicker()) {\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n }\n this.updateMonthsInView();\n this.updateCalendars();\n }\n\n private getDateWithTime(date: Dayjs, side: SideEnum): Dayjs {\n const hour = parseInt(`${this.timepickerVariables()[side]().selectedHour}`, 10);\n const minute = parseInt(`${this.timepickerVariables()[side]().selectedMinute}`, 10);\n const second = this.hasSecondPicker() && !isEmpty(this.timepickerVariables()[side]().selectedSecond) ? parseInt(`${this.timepickerVariables()[side]().selectedSecond}`, 10) : 0;\n\n return date.clone().hour(hour).minute(minute).second(second);\n }\n\n private transformMinMaxDate(value: Dayjs | string | undefined): Dayjs | undefined {\n if (isEmpty(value)) {\n return undefined;\n }\n if (dayjs.isDayjs(value)) {\n return value;\n }\n if (typeof value === 'string') {\n return getDayjs({ date: value });\n }\n\n return undefined;\n }\n\n private computedDisplayTime(side: ITimepickerVariablesSide) {\n let strHours: string | number | undefined = side.selectedHour;\n let strMinute: string | number | undefined = side.selectedMinute;\n\n if ((side.selectedHour || 0) < 10) {\n strHours = `0${side.selectedHour ?? 0}`;\n }\n\n if ((side.selectedMinute || 0) < 10) {\n strMinute = `0${side.selectedMinute ?? 0}`;\n }\n\n return `${strHours}:${strMinute}`;\n }\n\n private computedDisplayTimeInput(side: SideEnum, timeType: 'hour' | 'minute') {\n const time =\n timeType === 'hour' ? (side === SideEnum.left ? this.timepickerValueItem().lefthour() : this.timepickerValueItem().righthour()) : side === SideEnum.left ? this.timepickerValueItem().leftminute() : this.timepickerValueItem().rightminute();\n\n if (!time) {\n return '00';\n }\n if (time < 10) {\n return `0${time}`;\n }\n\n return time;\n }\n\n ngOnDestroy() {\n return;\n }\n}\n","<div class=\"libs-ui-component-custom_ranges-calendar test-class\">\n <div class=\"relative flex\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar\"\n [class.right]=\"isSingle()\"\n [class.left]=\"!isSingle()\">\n <div class=\"rounded-[4px] bg-[#ffffff]\">\n @if (calendarVariables(); as calendarVariables) {\n <table>\n <thead>\n <tr>\n <th\n colspan=\"7\"\n class=\"month\">\n @if (showDropdownsSelect() && calendarVariables.left().dropdowns?.()) {\n <div class=\"!flex mb-[10px] w-full\">\n <div class=\"w-3/4 flex items-center\">\n <div class=\"mr-[8px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[130px]', position: { mode: 'center', distance: 0 } }\"\n [listMaxItemShow]=\"10\"\n [listClickExactly]=\"false\"\n [listKeysDisable]=\"disableMonth().left()\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemMonth\"\n [listConfig]=\"listMonthsConfig()\"\n [listKeySelected]=\"listKeyFromSelected().month\"\n [flagMouse]=\"flagMouse()\"\n [listHiddenInputSearch]=\"true\"\n [httpRequestDetailItemById]=\"monthHttpDetailConfig()\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.left + 'month')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'month')\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.left + 'month')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'month']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.left + 'month']\">\n <div\n class=\"libs-ui-font-h4m\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dateOptions().monthNames && calendarVariables.left().calendar && dateOptions().monthNames[calendarVariables.left().calendar?.[1]?.[1]?.month() ?? -1] }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'month']\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.left + 'month'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n <div>\n <libs_ui-components-dropdown\n [listMaxItemShow]=\"10\"\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[110px]', position: { mode: 'center', distance: 0 } }\"\n [listClickExactly]=\"false\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemYear\"\n [listHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [listConfig]=\"listLeftYearConfig()\"\n [listKeySelected]=\"listKeyFromSelected().year\"\n [flagMouse]=\"flagMouse()\"\n [httpRequestDetailItemById]=\"leftYearHttpDetailConfig()\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.left + 'year')\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.left + 'year')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'year')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'year']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.left + 'year']\">\n <div\n class=\"libs-ui-font-h4m\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ calendarVariables.left().calendar && calendarVariables.left().calendar?.[1]?.[1]?.format(' YYYY') }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'year']\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.left + 'year'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n </div>\n\n <div class=\"w-1/4 flex items-center relative\">\n @if (!calendarVariables.left().minDate || calendarVariables.left().minDate?.isBefore(calendarVariables.left().calendar && calendarVariables.left().calendar?.firstDay)) {\n <div (click)=\"handlerClickPrev(sideEnum.left)\">\n <div class=\"flex items-center justify-center absolute left-0 top-[-3px]\">\n <i class=\"libs-ui-icon-chevron-right rotate-[180deg] text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n </div>\n }\n @if ((!calendarVariables.left().maxDate || calendarVariables.left().maxDate?.isAfter(calendarVariables.left().calendar && calendarVariables.left().calendar?.lastDay)) && isSingle()) {\n <div (click)=\"handlerClickNext(sideEnum.left)\">\n <div class=\"flex items-center justify-center ml-[12px] absolute right-0 top-[-3px]\">\n <i class=\"libs-ui-icon-chevron-right text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (!showDropdownsSelect() || !calendarVariables.left().dropdowns) {\n {{ dateOptions().monthNames && calendarVariables.left().calendar && dateOptions().monthNames[calendarVariables.left().calendar?.[1]?.[1]?.month() ?? -1] }}\n {{ calendarVariables.left().calendar && calendarVariables.left().calendar?.[1]?.[1]?.format(' YYYY') }}\n }\n </th>\n </tr>\n <tr class=\"week-days\">\n @for (dayofweek of dateOptions().daysOfWeek; track dayofweek) {\n <th>\n <span\n class=\"libs-ui-font-h6m text-[#6a7383]\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dayofweek }}\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"drp-animate\">\n @for (row of calendarVariables.left().calRows?.(); track row) {\n <tr\n class=\"h-[32px]\"\n [class]=\"calendarVariables.left().classes && calendarVariables.left().classes?.[row]?.classList\">\n @for (col of calendarVariables.left().calCols?.(); track col) {\n <td\n class=\"libs-ui-font-h5r\"\n [class.today]=\"\n calendarVariables.left().calendar &&\n calendarVariables.left().calendar?.[row]?.[col]?.date() === today().date() &&\n calendarVariables.left().calendar?.[row]?.[col]?.month() === today().month() &&\n calendarVariables.left().calendar?.[row]?.[col]?.year() === today().year()\n \"\n [class]=\"calendarVariables.left().classes && calendarVariables.left().classes?.[row]?.[col]\"\n (click)=\"handlerPickerDate($event, sideEnum.left, row, col)\"\n (mouseenter)=\"handlerHoverDate($event, sideEnum.left, row, col)\">\n <span class=\"libs-ui-font-h5r\">{{ calendarVariables.left().calendar && calendarVariables.left().calendar?.[row]?.[col]?.date() }}</span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n @if (hasTimePicker()) {\n <div>\n <div class=\"flex justify-center column items-center pt-[12px]\">\n <div\n class=\"w-full flex justify-center items-center rounded-[4px] border\"\n [class.border-[#e6e8ed]]=\"!timePickerError()\"\n [class.border-[#ff5454]]=\"timePickerError()\">\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center libs-ui-font-h4s !text-[#071631]\"\n dataType=\"int\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().lefthour()\"\n (outInputEvent)=\"handlerInputEvent($event, 'lefthour')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'hour')\"\n (outChange)=\"handlerChangeTimeValue($event, 'lefthour')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'lefthour')\" />\n <span class=\"libs-ui-font-h3s text-[#333333]\">:</span>\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center !libs-ui-font-h4s !text-[#071631]\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n dataType=\"int\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [maxValueNumber]=\"59\"\n [minValueNumber]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().leftminute()\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'minute')\"\n (outInputEvent)=\"handlerInputEvent($event, 'leftminute')\"\n (outChange)=\"handlerChangeTimeValue($event, 'leftminute')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'leftminute')\" />\n </div>\n </div>\n </div>\n }\n </div>\n\n @if (!isSingle()) {\n <div class=\"libs-ui-component-custom_ranges-calendar right ml-[24px]\">\n <div class=\"rounded-[4px] bg-[#ffffff]\">\n @if (calendarVariables()) {\n <table>\n <thead>\n <tr>\n <th\n colspan=\"7\"\n class=\"month\">\n @if (showDropdownsSelect() && calendarVariables().left().dropdowns?.()) {\n <div class=\"!flex mb-[10px] w-full\">\n <div class=\"w-3/4 flex items-center\">\n <div class=\"mr-[8px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[130px]', position: { mode: 'center', distance: 0 } }\"\n [listMaxItemShow]=\"10\"\n [listClickExactly]=\"false\"\n [listKeysDisable]=\"disableMonth().right()\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemMonth\"\n [listHiddenInputSearch]=\"true\"\n [listConfig]=\"listMonthsConfig()\"\n [listKeySelected]=\"listKeyToSelected().month\"\n [flagMouse]=\"flagMouse()\"\n [httpRequestDetailItemById]=\"monthHttpDetailConfig()\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.right + 'month')\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.right + 'month')\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.right + 'month')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'month']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.right + 'month']\">\n <div\n class=\"libs-ui-font-h4m\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'month']\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dateOptions().monthNames && calendarVariables().right().calendar && dateOptions().monthNames[calendarVariables().right().calendar?.[1]?.[1]?.month() ?? -1] }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.right + 'month'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n <div>\n <libs_ui-components-dropdown\n [listMaxItemShow]=\"10\"\n [zIndex]=\"zIndex() + 1\"\n [isNgContent]=\"true\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[110px]', position: { mode: 'center', distance: 0 } }\"\n [listClickExactly]=\"false\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemYear\"\n [listHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [listConfig]=\"listRightYearConfig()\"\n [listKeySelected]=\"listKeyToSelected().year\"\n [flagMouse]=\"flagMouse()\"\n [httpRequestDetailItemById]=\"rightYearHttpDetailConfig()\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.right + 'year')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.right + 'year')\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.right + 'year')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'year']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.right + 'year']\">\n <div\n class=\"libs-ui-font-h4m\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ calendarVariables().right().calendar && calendarVariables().right().calendar?.[1]?.[1]?.format('YYYY') }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'year']\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.right + 'year'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n </div>\n <div class=\"w-1/4 flex items-center relative\">\n @if (\n (listKeyFromSelected().year &&\n listKeyToSelected().year &&\n !(listKeyFromSelected().year + 1 === listKeyToSelected().year && listKeyFromSelected().month === 12 && listKeyToSelected().month === 1) &&\n listKeyFromSelected().year < listKeyToSelected().year) ||\n (listKeyFromSelected().month && listKeyToSelected().month && listKeyFromSelected().month + 1 < +listKeyToSelected().month)\n ) {\n <div\n class=\"flex items-center justify-center absolute left-0 top-[-3px]\"\n (click)=\"handlerClickPrev(sideEnum.right)\">\n <i class=\"libs-ui-icon-chevron-right rotate-[180deg] text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n }\n @if (\n listKeyFromSelected().month &&\n listKeyToSelected().month &&\n listKeyFromSelected().month > listKeyToSelected().month &&\n listKeyFromSelected().year &&\n listKeyToSelected().year &&\n listKeyFromSelected().year === listKeyToSelected().year\n ) {\n <div class=\"bg-[#ffffff] w-[21px] h-[21px] cursor-none flex items-center justify-center rounded-[50px]\"></div>\n }\n @if (\n !calendarVariables().right().maxDate ||\n calendarVariables()\n .right()\n .maxDate?.isAfter(calendarVariables().right().calendar && calendarVariables().right().calendar?.lastDay)\n ) {\n <div (click)=\"handlerClickNext(sideEnum.right)\">\n <div class=\"flex items-center justify-center ml-[12px] absolute right-0 top-[-3px]\">\n <i class=\"libs-ui-icon-chevron-right text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (!showDropdownsSelect() || !calendarVariables().right().dropdowns) {\n {{ dateOptions().monthNames && calendarVariables().right().calendar && dateOptions().monthNames[calendarVariables().right().calendar?.[1]?.[1]?.month() ?? -1] }}\n {{ calendarVariables().right().calendar && calendarVariables().right().calendar?.[1]?.[1]?.format('YYYY') }}\n }\n </th>\n </tr>\n <tr class=\"week-days\">\n @for (dayofweek of dateOptions().daysOfWeek; track dayofweek) {\n <th>\n <span\n class=\"libs-ui-font-h6m text-[#6a7383]\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dayofweek }}\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of calendarVariables().right().calRows?.(); track row) {\n <tr\n class=\"h-[32px]\"\n [class]=\"calendarVariables().right().classes && calendarVariables().right().classes?.[row]?.classList\">\n @for (col of calendarVariables().right().calCols?.(); track col) {\n <td\n class=\"libs-ui-font-h5r\"\n [class]=\"calendarVariables().right().classes && calendarVariables().right().classes?.[row]?.[col]\"\n [class.today]=\"\n calendarVariables().right().calendar &&\n calendarVariables().right().calendar?.[row]?.[col]?.date() === today().date() &&\n calendarVariables().right().calendar?.[row]?.[col]?.month() === today().month() &&\n calendarVariables().right().calendar &&\n calendarVariables().right().calendar?.[row]?.[col]?.year() === today().year()\n \"\n (click)=\"handlerPickerDate($event, sideEnum.right, row, col)\"\n (mouseenter)=\"handlerHoverDate($event, sideEnum.right, row, col)\">\n <span>{{ calendarVariables().right().calendar?.[row]?.[col]?.date() }}</span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n @if (hasTimePicker()) {\n <div>\n <div class=\"flex justify-center items-center pt-[12px]\">\n <div\n class=\"w-full flex justify-center items-center rounded-[4px] border\"\n [class.border-[#e6e8ed]]=\"!timePickerError()\"\n [class.border-[#ff5454]]=\"timePickerError()\">\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center !libs-ui-font-h4s !text-[#071631]\"\n dataType=\"int\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().righthour()\"\n (outChange)=\"handlerChangeTimeValue($event, 'righthour')\"\n (outInputEvent)=\"handlerInputEvent($event, 'righthour')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, 'righthour')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'righthour')\" />\n <span class=\"libs-ui-font-h3s text-[#333333]\">:</span>\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center libs-ui-font-h4s !text-[#071631]\"\n dataType=\"int\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"59\"\n [minValueNumber]=\"0\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().rightminute()\"\n (outInputEvent)=\"handlerInputEvent($event, 'rightminute')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, 'rightminute')\"\n (outChange)=\"handlerChangeTimeValue($event, 'rightminute')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'rightminute')\" />\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n <div>\n <div class=\"flex w-full\">\n @if (!isSingle() && hasTimePicker()) {\n <div class=\"mt-[8px] libs-ui-font-h7r text-[#ff5454] h-[14px]\">\n @if (timePickerError()) {\n <span>{{ 'i18n_date_compare_start_end_message_error' | translate }}</span>\n }\n </div>\n }\n </div>\n @if (!quickRangesArray().length || !isSingle()) {\n <div class=\"flex w-full pt-[16px] justify-between\">\n <div class=\"flex items-center\">\n @if (!isSingle()) {\n @if (!endDate()) {\n <div class=\"text-[#cdd0d6] libs-ui-font-h6r\">\n <span>{{ startDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeLeft() }}</span>\n }\n &hyphen;\n <span>{{ startDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeRight() }}</span>\n }\n </div>\n }\n @if (endDate()) {\n <div class=\"text-[#cdd0d6] libs-ui-font-h6r\">\n <span>{{ startDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeLeft() }}</span>\n }\n &hyphen;\n <span>{{ endDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeRight() }}</span>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"flex\">\n <libs_ui-components-buttons-button\n class=\"mr-[12px]\"\n label=\"i18n_cancel\"\n type=\"button-third\"\n (outClick)=\"handlerClickCancel($event)\" />\n <libs_ui-components-buttons-button\n label=\"i18n_select\"\n (outClick)=\"handlerClickApply($event)\" />\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, model, OnDestroy, output, signal, untracked } from '@angular/core';\nimport { IFlagMouse, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { TYPE_OBJECT } from '@libs-ui/interfaces-types';\nimport { getDayjs } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Dayjs } from 'dayjs';\nimport { getDateOptionsDefault, getDateRangeDefault } from '../defines/date-options.define';\nimport { IEmitDateCalendar, IEmitDateRange, IEmitSingleDate } from '../interfaces/calendar-emit.interface';\nimport { IDateRange } from '../interfaces/calendar-variables.interface';\nimport { ICalendarFunctionControlEvent } from '../interfaces/function-control.interface';\nimport { LocalizationConfig } from '../interfaces/picker.interface';\nimport { LibsUiComponentsDatetimePickerCustomRangesCalendarComponent } from './calendar/calendar.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-picker-custom_ranges',\n templateUrl: './custom-ranges.component.html',\n styleUrls: ['./custom-ranges.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsDatetimePickerCustomRangesCalendarComponent, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsDatetimePickerCustomRangesComponent implements OnDestroy {\n /** PROPERTY */\n protected showCalTableInRanges = signal<boolean>(false);\n protected quickRangesArray = signal<Array<IDateRange>>([]);\n protected selectedQuickRange = signal<string>(''); // quick range đã được lưu trước đó\n protected chosenQuickRange = signal<string | undefined>(undefined); // quick range đang được chọn\n\n private calendarShowing = signal<boolean>(false);\n private timeouts = signal<Array<number>>([]);\n private calendarFunctionControlEvent = signal<ICalendarFunctionControlEvent | undefined>(undefined);\n private chosenSingleDate = signal<IEmitSingleDate | undefined>(undefined);\n private chosenDateRange = signal<IEmitDateRange | undefined>(undefined);\n\n /** INPUT */\n // readonly SelectedQuickRange = input<string>('');\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly classInclude = input<string>('');\n readonly extendRanges = input<Array<IDateRange>>([]);\n readonly widthByParent = input<boolean>(false);\n readonly autoApply = input<boolean>(false);\n readonly minDate = input<Dayjs | string | undefined>();\n readonly maxDate = input<Dayjs | string | undefined>();\n readonly listYearHiddenInputSearch = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly positionQuickRanges = input<'left' | 'right', 'left' | 'right'>('left', { transform: (value) => value ?? 'left' });\n readonly isSingle = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly hasTimePicker = input<boolean>(true);\n readonly flagMouse = input<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n readonly dateOptions = input<LocalizationConfig>(getDateOptionsDefault());\n readonly alwaysShowCalendars = input<boolean>(false);\n readonly startDate = model<Dayjs | undefined>(getDayjs().startOf('day'));\n readonly endDate = model<Dayjs | undefined>(getDayjs().endOf('day'));\n readonly showCustomRangeLabel = input<boolean | undefined>(undefined);\n readonly keepCalendarOpeningWithRange = input<boolean | undefined>(undefined);\n\n readonly singleDateSelected = input<IEmitSingleDate | undefined, IEmitSingleDate | undefined>(undefined, {\n transform: (value) => {\n if (!value || !value.date) {\n return;\n }\n let date = value.date;\n\n if (typeof date === 'string') {\n date = getDayjs({ date, returnDayjsIfConfigDateNotExist: true });\n }\n\n return {\n ...value,\n date,\n };\n },\n });\n readonly dateRangeSelected = input<IEmitDateRange | undefined, IEmitDateRange | undefined>(undefined, {\n transform: (value) => {\n if (!value) {\n return;\n }\n let startDate = value.startDate;\n let endDate = value.endDate;\n\n if (typeof startDate === 'string') {\n startDate = getDayjs({ date: startDate, returnDayjsIfConfigDateNotExist: true });\n }\n\n if (typeof endDate === 'string') {\n endDate = getDayjs({ date: endDate, returnDayjsIfConfigDateNotExist: true });\n }\n\n return {\n ...value,\n startDate,\n endDate,\n };\n },\n });\n\n /** OUTPUT */\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outUpdateWidth = output<number>();\n readonly outCancel = output<string>();\n readonly outSelectSingleDate = output<IEmitSingleDate>();\n readonly outSelectDateRange = output<IEmitDateRange>();\n readonly outClickMenuRangeCustom = output<TYPE_OBJECT>();\n\n constructor() {\n effect(() => untracked(this.onAfterViewInit.bind(this)));\n }\n\n private onAfterViewInit() {\n if (!this.startDate()) {\n this.startDate.set(getDayjs().startOf('day'));\n }\n if (!this.endDate()) {\n this.endDate.set(getDayjs().endOf('day'));\n }\n const dateRangeSelected = this.dateRangeSelected();\n const singleDateSelected = this.singleDateSelected();\n const customRange = {\n id: this.dateOptions()?.customRangeLabel || '',\n label: this.dateOptions()?.customRangeLabel || '',\n };\n\n if (this.isSingle()) {\n if (this.hasTimePicker()) {\n const now = getDayjs();\n\n this.startDate.update((current) => {\n if (current) {\n current.set('hour', 10).set('minute', 30);\n // current.hour(now.hour()).minute(now.minute());\n }\n\n return current;\n });\n this.endDate.update((current) => {\n if (current) {\n current.hour(now.hour()).minute(now.minute());\n }\n\n return current;\n });\n }\n if (singleDateSelected?.date) {\n this.startDate.set(getDayjs({ date: singleDateSelected.date }));\n this.endDate.set(getDayjs({ date: singleDateSelected.date }));\n }\n this.renderRanges();\n\n return;\n }\n\n if (dateRangeSelected) {\n this.selectedQuickRange.set(dateRangeSelected.quickRangeId ? dateRangeSelected.quickRangeId : customRange.id);\n this.chosenQuickRange.set(dateRangeSelected.quickRangeId ?? customRange.id);\n\n this.startDate.set(getDayjs({ date: dateRangeSelected.startDate }));\n this.endDate.set(getDayjs({ date: dateRangeSelected.endDate }));\n }\n if (this.hasTimePicker()) {\n this.selectedQuickRange.set(customRange.id);\n this.chosenQuickRange.set(customRange.id);\n }\n if (this.selectedQuickRange() === this.dateOptions()?.customRangeLabel) {\n this.showCalTableInRanges.set(true);\n }\n this.renderRanges();\n }\n\n private updateWidth() {\n const timeoutId = setTimeout(() => {\n this.outUpdateWidth.emit(1);\n }) as unknown as number;\n\n this.timeouts.update((ids) => [...ids, timeoutId]);\n }\n\n private renderRanges() {\n if (this.isSingle()) {\n this.showCalTableInRanges.set(true);\n\n return;\n }\n const rangesDefault = getDateRangeDefault();\n const ranges = this.dateOptions()?.ranges;\n\n this.quickRangesArray.set([]);\n\n for (const key in ranges) {\n const rangeValue = rangesDefault[key];\n const start = getDayjs({ date: rangeValue[0], returnDayjsIfConfigDateNotExist: true });\n const end = getDayjs({ date: rangeValue[1], returnDayjsIfConfigDateNotExist: true });\n\n this.quickRangesArray.update((current) => {\n current.push({\n id: key,\n label: ranges[key],\n values: [start, end],\n });\n\n return current;\n });\n }\n if (this.showCustomRangeLabel() && this.dateOptions()?.customRangeLabel) {\n this.quickRangesArray.update((current) => {\n current.push({\n id: this.dateOptions()?.customRangeLabel || '',\n label: this.dateOptions()?.customRangeLabel || '',\n });\n\n return current;\n });\n }\n if (this.extendRanges()) {\n this.quickRangesArray.update((current) => {\n current.unshift(...this.extendRanges());\n\n return current;\n });\n }\n if (!this.quickRangesArray().length) {\n this.showCalTableInRanges.set(true);\n }\n }\n\n protected handlerCancel() {\n this.outCancel.emit('');\n }\n\n protected handlerPickerDate(event: IEmitDateCalendar) {\n this.chosenSingleDate.set({\n displayLabel: event.displayLabel,\n date: event.startDate,\n values: event.detailDatePicker.start(),\n });\n if (!this.isSingle() && event.startDate && !event.endDate) {\n const endTime = event.detailDatePicker.end();\n event.endDate = event.startDate\n .clone()\n .hour(endTime.hour as number)\n .minute(endTime.minute as number)\n .second(59);\n }\n this.chosenDateRange.set({\n quickRangeId: this.chosenQuickRange(),\n ...event,\n });\n const chosenSingleDate = this.chosenSingleDate();\n const chosenDateRange = this.chosenDateRange();\n if (this.isSingle() && chosenSingleDate) {\n this.outSelectSingleDate.emit(chosenSingleDate);\n\n return;\n }\n if (!chosenDateRange || (!chosenDateRange.startDate && !chosenDateRange.endDate)) {\n return;\n }\n this.outSelectDateRange.emit(chosenDateRange);\n }\n\n protected handlerClickRange(e: Event, range: IDateRange) {\n e.stopPropagation();\n\n this.chosenQuickRange.set(range.id);\n\n if (range.id === this.dateOptions()?.customRangeLabel) {\n if (!this.calendarShowing() && !this.showCalTableInRanges()) {\n this.calendarShowing.set(true);\n this.showCalTableInRanges.set(true);\n this.outClickMenuRangeCustom.emit(range);\n this.updateWidth();\n }\n return;\n }\n this.updateWidth();\n if (this.extendRanges()) {\n const findExternalRange = this.extendRanges().find((item) => item.label === range.id);\n\n if (findExternalRange && range.id === findExternalRange.label) {\n if (findExternalRange.values) {\n this.outSelectDateRange.emit({ quickRangeId: findExternalRange.id, displayLabel: findExternalRange.label, startDate: findExternalRange.values[0], endDate: findExternalRange.values[1] });\n\n return;\n }\n this.outSelectDateRange.emit({ quickRangeId: findExternalRange.id, displayLabel: findExternalRange.label, startDate: undefined, endDate: undefined });\n\n return;\n }\n }\n // const dates = range.values ?? [];\n\n // this.startDate.set(dates[0].clone().hour(0).minute(0).second(0));\n // this.endDate.set(dates[1].clone().hour(23).minute(59).second(59));\n // this.timeValue = { hour: 0, toHour: 0, minute: 23, toMinute: 59 };\n // this.timepickerVariables.left.selectedHour = 0;\n // this.timepickerVariables.left.selectedMinute = 0;\n // this.timepickerVariables.right.selectedHour = 23;\n // this.timepickerVariables.right.selectedMinute = 59;\n\n // this.showRangeLabelOnInput && label !== this.localeDay.customRangeLabel ? this.chosenLabel = label : this.calculateChosenLabel();\n\n // // this.autoApply.set(true);\n // if (!this.hasTimePicker()) {\n // if(this.startDate()) {\n // this.startDate.set(this.startDate()?.startOf('day'));\n // }\n // if(this.endDate()) {\n // this.endDate.set(this.endDate()?.endOf('day'));\n // }\n // }\n // if (!this.alwaysShowCalendars()) {\n // this.calendarShowing.set(false);\n // }\n // this.outClickRange.emit(range);\n\n if (!this.keepCalendarOpeningWithRange() || !this.alwaysShowCalendars()) {\n this.outSelectDateRange.emit({ quickRangeId: range.id, displayLabel: range.label, startDate: range.values?.[0], endDate: range.values?.[1] });\n\n return;\n }\n // if (this.timePicker) {\n // this.renderTimePicker(SideEnum.left);\n // this.renderTimePicker(SideEnum.right);\n // }\n // if (this.getMaxDate() && this.getMaxDate().isSame(dates[0], 'month')) {\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.month(dates[0].month());\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.year(dates[0].year());\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.month(dates[0].month() - 1);\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.year(dates[1].year());\n\n // return this.updateCalendars();\n // }\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.month(dates[0].month());\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.year(dates[0].year());\n // const nextMonth = dates[0].clone().add(1, 'month');\n\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.month(nextMonth.month());\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.year(nextMonth.year());\n // this.updateCalendars();\n\n return;\n }\n\n protected handlerClickCancel(event: Event) {\n event.stopPropagation();\n // this.startDate.set(dayjs(0));\n // this.endDate.set(dayjs(0));\n this.outCancel.emit('');\n }\n\n protected handlerChangeFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n\n protected handlerFunctionsControl(event: ICalendarFunctionControlEvent) {\n this.calendarFunctionControlEvent.set(event);\n }\n\n ngOnDestroy() {\n this.timeouts().forEach((item) => clearTimeout(item));\n // this.onDestroy.next();\n // this.onDestroy.complete();\n }\n}\n","<div\n #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div\n class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div\n class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div\n LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{ maxWidth: 160, direction: 'top', zIndex: (zIndex() || 1000) + 1 }\"\n [innerHTML]=\"range.label\"></div>\n </div>\n <i\n class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar\n [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IFlagMouse, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { TYPE_OBJECT } from '@libs-ui/interfaces-types';\nimport { ERROR_MESSAGE_EMPTY_VALID, getDayjs } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Dayjs } from 'dayjs';\nimport { LibsUiComponentsDatetimePickerCustomRangesComponent } from './custom-ranges/custom-ranges.component';\nimport { getDateOptionsDefault } from './defines/date-options.define';\nimport { IEmitDateRange, IEmitSingleDate } from './interfaces/calendar-emit.interface';\nimport { IDateRange } from './interfaces/calendar-variables.interface';\nimport { IDateTimePickerFunctionControlEvent } from './interfaces/function-control.interface';\nimport { IChosenDate, LocalizationConfig, TYPE_RANGE_KEY } from './interfaces/picker.interface';\nimport { IDateTimeValid } from './interfaces/valid.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-picker',\n templateUrl: './picker.component.html',\n styleUrls: ['./picker.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsDatetimePickerCustomRangesComponent],\n})\nexport class LibsUiComponentsDatetimePickerComponent implements OnInit, OnDestroy {\n /** PROPERTY */\n protected readonly ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;\n protected showRangesPopup = signal<boolean>(false);\n protected width = computed(this.computedWidth.bind(this));\n protected singleError = signal<IDateTimeValid>({ message: undefined });\n protected chosenDateFromRanges = signal<IChosenDate>({});\n protected selectedDateFromCalendar!: { start?: Dayjs; end?: Dayjs };\n protected displayRangeTitle = computed(() => {\n const selectedLabel = this.chosenDateFromRanges().selectedLabel as TYPE_RANGE_KEY;\n\n if (this.isSingle() || !selectedLabel) {\n return;\n }\n\n return selectedLabel;\n });\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n /** INPUT */\n readonly dateOptions = input<LocalizationConfig, LocalizationConfig | undefined>(getDateOptionsDefault(), { transform: (value) => value ?? getDateOptionsDefault() });\n readonly showCustomRangeLabel = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly labelConfig = input<ILabel>();\n readonly disable = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly classInclude = input<string>('');\n readonly classPickerInclude = input<string>('');\n readonly classPickerContentInclude = input<string>('');\n readonly ignoreBorderQuickRange = input<boolean>(false);\n readonly useColorModeExist = input<boolean>(false);\n readonly hasTimePicker = input<boolean>(true);\n readonly allowReset = input<boolean>(true);\n readonly widthByLabel = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly directionPopover = input<TYPE_POPOVER_DIRECTION, TYPE_POPOVER_DIRECTION | undefined>('bottom', { transform: (value) => value ?? 'bottom' });\n readonly defaultWidth = input<number | undefined>(undefined);\n readonly isSingle = input<boolean>(false);\n readonly extendRanges = input<Array<IDateRange>>([]);\n readonly isBorderError = input<boolean>(false);\n readonly minDate = input<Dayjs | string | undefined>();\n readonly maxDate = input<Dayjs | string | undefined>();\n readonly placeholder = input<string>();\n readonly listYearHiddenInputSearch = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n\n readonly validRequired = input<IDateTimeValid | undefined>(undefined);\n readonly ignoreStopPropagationEvent = input<boolean>(false);\n readonly flagMouse = model<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n readonly widthByParent = input<boolean>(false);\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly rangesPopoverPosition = input<'start' | 'center' | 'end', 'start' | 'center' | 'end'>('start', { transform: (value) => value ?? 'start' });\n readonly rangesPopoverPositionDistance = input<number, number>(0, { transform: (value) => value ?? 0 });\n readonly isNgContent = input<boolean>(false);\n readonly classIncludeCustomRanges = input<string>('');\n readonly autoApply = input<boolean>(false);\n readonly positionQuickRanges = input<'left' | 'right'>('left'); // vị trí list chọn nhanh khoảng thời gian\n readonly trackDateRageUpdateLabel = input<boolean>(false);\n\n readonly singleDateSelected = model<IEmitSingleDate>();\n readonly dateRangeSelected = model<IEmitDateRange>();\n\n /** OUTPUT */\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outReset = output<IEmitDateRange | IEmitSingleDate | undefined>();\n readonly outSelectSingleDate = output<IEmitSingleDate>();\n readonly outSelectDateRange = output<IEmitDateRange>();\n readonly outFunctionsControl = output<IDateTimePickerFunctionControlEvent>();\n\n constructor() {\n effect(() => {\n const date = this.singleDateSelected()?.date;\n\n if (date) {\n untracked(() => {\n const formatDate = this.hasTimePicker() ? 'DD/MM/YYYY HH:mm' : 'DD/MM/YYYY';\n const startTime = getDayjs({ date }).format(formatDate);\n this.chosenDateFromRanges.set({ selectedLabel: startTime });\n });\n }\n });\n effect(() => {\n if (this.trackDateRageUpdateLabel()) {\n this.updateChosenDateFromRangesFromDateRangeSelected(this.dateRangeSelected() as IEmitDateRange);\n\n return;\n }\n untracked(() => this.updateChosenDateFromRangesFromDateRangeSelected(this.dateRangeSelected() as IEmitDateRange));\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n public get FunctionsControl(): IDateTimePickerFunctionControlEvent {\n return {\n checkIsValid: this.checkIsValid.bind(this),\n resetError: this.resetError.bind(this),\n reset: this.reset.bind(this),\n };\n }\n\n protected handlerSelectRanges(event: Event) {\n event.stopPropagation();\n }\n\n protected handlerChangStageFlagMouse(flagMouse: IFlagMouse) {\n this.flagMouse.set(flagMouse);\n }\n\n protected handlerChangStagePopoverFlagMouse(flagMouse: IFlagMouse) {\n if (this.flagMouse()?.isMouseEnterContent) {\n flagMouse.isMouseEnterContent = true;\n }\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n\n protected handlerFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event === 'remove') {\n this.showRangesPopup.set(false);\n }\n }\n\n protected async handlerPickerSingleDate(data: IEmitSingleDate) {\n this.outSelectSingleDate.emit(data);\n this.chosenDateFromRanges.set({ selectedLabel: data.displayLabel });\n if (this.hasTimePicker()) {\n const startTime = getDayjs({ date: data.date, returnDayjsIfConfigDateNotExist: true }).format('DD/MM/YYYY HH:mm');\n\n this.chosenDateFromRanges.update((current) => {\n current.selectedLabel = `${startTime}`;\n return current;\n });\n }\n this.singleDateSelected.set(data);\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n await this.checkIsValid();\n }\n\n protected async handlerPickerDateRange(data: IEmitDateRange) {\n if ((data.displayLabel?.indexOf('Invalid Date') ?? -1) > -1) {\n return;\n }\n // this.selectedKey = data.selectedLabel;\n this.chosenDateFromRanges.set({ selectedLabel: data.displayLabel });\n\n // this.selected.start = getDayjs<Dayjs>({date:data.startDate});\n // this.selected.end = getDayjs<Dayjs>({date:data.endDate});\n if (this.hasTimePicker()) {\n const startTime = getDayjs({ date: data.startDate, returnDayjsIfConfigDateNotExist: true }).format('DD/MM/YYYY HH:mm');\n const endTime = getDayjs({ date: data.endDate, returnDayjsIfConfigDateNotExist: true }).format('DD/MM/YYYY HH:mm');\n\n this.chosenDateFromRanges.update((current) => {\n current.selectedLabel = `${startTime} - ${endTime}`;\n return current;\n });\n }\n // this.moDatePicker.emit(this.singleDatePicker ? { chosenLabel: this.dateValue.chosenLabel, singleDate: this.dateValue.startDate?.utc(), startDate: this.dateValue.startDate?.utc(), endDate: this.dateValue.endDate?.utc() } : { chosenLabel: this.dateValue.chosenLabel, startDate: this.dateValue.startDate?.utc(), endDate: this.dateValue.endDate?.utc() });\n const showViewExternalRangeLabel = this.extendRanges()?.find((item) => item.id === this.chosenDateFromRanges().selectedLabel);\n\n if (this.extendRanges() && showViewExternalRangeLabel) {\n this.chosenDateFromRanges.update((current) => {\n current.selectedLabel = showViewExternalRangeLabel && showViewExternalRangeLabel.label;\n return current;\n });\n }\n\n this.dateRangeSelected.set({ quickRangeId: data.quickRangeId, displayLabel: data.displayLabel, startDate: data.startDate, endDate: data.endDate });\n this.outSelectDateRange.emit({ quickRangeId: data.quickRangeId, displayLabel: data.displayLabel, startDate: data.startDate, endDate: data.endDate });\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n await this.checkIsValid();\n }\n\n private updateChosenDateFromRangesFromDateRangeSelected(dateRangeSelected?: IEmitDateRange) {\n untracked(() => {\n if (dateRangeSelected?.quickRangeId) {\n const findKeyRange = Object.keys(this.dateOptions().ranges).find((key) => key === dateRangeSelected?.quickRangeId);\n if (findKeyRange) {\n this.chosenDateFromRanges.set({ selectedLabel: this.dateOptions().ranges[findKeyRange] });\n return;\n }\n }\n if (dateRangeSelected?.startDate && dateRangeSelected?.endDate) {\n const formatDate = this.hasTimePicker() ? 'DD/MM/YYYY HH:mm' : 'DD/MM/YYYY';\n const startTime = getDayjs({ date: dateRangeSelected?.startDate })?.format(formatDate);\n const endTime = getDayjs({ date: dateRangeSelected?.endDate })?.format(formatDate);\n\n this.chosenDateFromRanges.set({ selectedLabel: `${startTime} - ${endTime}` });\n }\n });\n }\n\n protected async handlerReset(event?: Event) {\n event?.stopPropagation();\n await this.reset(true);\n }\n\n private async reset(checkIsValid?: boolean, dateRangeReset?: IEmitDateRange, singleDateReset?: IEmitSingleDate) {\n this.chosenDateFromRanges.set({});\n this.dateRangeSelected.set(dateRangeReset);\n if (dateRangeReset) {\n this.updateChosenDateFromRangesFromDateRangeSelected(dateRangeReset);\n }\n if (singleDateReset) {\n this.singleDateSelected.set(singleDateReset);\n }\n this.outReset.emit(dateRangeReset || singleDateReset);\n if (checkIsValid && this.validRequired()) {\n await this.checkIsValid();\n }\n }\n\n protected handlerUpdateWidth() {\n this.popoverFunctionControlEvent()?.updatePopoverOverlayPosition();\n }\n\n protected handlerCancel() {\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n }\n\n private async checkIsValid() {\n if (this.readonly() || this.disable()) {\n return true;\n }\n await this.validate();\n\n return this.singleError().message ? false : true;\n }\n\n private async validate() {\n this.singleError.set({ message: undefined });\n\n if (!this.validRequired()) {\n return;\n }\n\n if (this.validRequired() && !this.chosenDateFromRanges().selectedLabel) {\n this.singleError.set({\n message: this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID,\n interpolateParams: this.validRequired()?.interpolateParams || {},\n });\n\n return;\n }\n }\n\n private async resetError(message?: string, interpolateParams?: TYPE_OBJECT) {\n this.singleError.set({ message, interpolateParams });\n }\n\n private computedWidth() {\n if (this.widthByLabel()) {\n return;\n }\n\n if (this.defaultWidth()) {\n return this.defaultWidth();\n }\n\n if (this.hasTimePicker()) {\n return !this.isSingle() ? 322 : 190;\n }\n return !this.isSingle() ? 232 : 152;\n }\n\n ngOnDestroy() {\n return;\n }\n}\n","<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span>&nbsp;hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span>&nbsp;hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span>&nbsp;hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n @let constHtmlMessage = singleError().message || ERROR_MESSAGE_EMPTY_VALID;\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-datetime-picker.mjs","sources":["../../../../../../libs-ui/components/datetime/picker/src/defines/date-options.define.ts","../../../../../../libs-ui/components/datetime/picker/src/defines/calendar.define.ts","../../../../../../libs-ui/components/datetime/picker/src/defines/common-date.define.ts","../../../../../../libs-ui/components/datetime/picker/src/interfaces/calendar-variables.interface.ts","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/calendar/calendar.component.ts","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/calendar/calendar.component.html","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/custom-ranges.component.ts","../../../../../../libs-ui/components/datetime/picker/src/custom-ranges/custom-ranges.component.html","../../../../../../libs-ui/components/datetime/picker/src/picker.component.ts","../../../../../../libs-ui/components/datetime/picker/src/picker.component.html","../../../../../../libs-ui/components/datetime/picker/src/libs-ui-components-datetime-picker.ts"],"sourcesContent":["import { get, getDayjs, UtilsCache, UtilsLanguageConstants } from '@libs-ui/utils';\nimport { LocalizationConfig } from '../interfaces/picker.interface';\nimport { Dayjs } from 'dayjs';\n\nexport const getDateOptions = (): LocalizationConfig => {\n const dateOptions = {\n [UtilsLanguageConstants.VI]: {\n monthNames: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],\n ranges: { today: 'Hôm nay', yesterday: 'Hôm qua', _7days_ago: '7 ngày trước', _30days_ago: '30 ngày trước', this_month: 'Tháng này', last_month: 'Tháng trước', _3months_ago: '90 ngày trước' },\n daysOfWeek: ['T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'CN'],\n applyLabel: 'Lưu',\n cancelLabel: 'Huỷ bỏ',\n fromLabel: 'Từ',\n toLabel: 'Đến',\n customRangeLabel: 'Tùy Chỉnh',\n },\n [UtilsLanguageConstants.EN]: {\n monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n ranges: { today: 'Today', yesterday: 'Yesterday', _7days_ago: '7 days ago', _30days_ago: '30 days ago', this_month: 'This month', last_month: 'Last month', _3months_ago: '90 days ago' },\n daysOfWeek: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n fromLabel: 'From',\n toLabel: 'To',\n customRangeLabel: 'Customize',\n },\n };\n\n return get(dateOptions, UtilsCache.getLang());\n};\n\nexport const defaultLocaleConfig = () => {\n return {\n direction: 'ltr',\n separator: ' - ',\n weekLabel: 'W',\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n customRangeLabel: 'customRangeLabel',\n daysOfWeek: [],\n monthNames: [],\n firstDay: 1,\n };\n};\n\nexport const getDateRangeDefault = (): { [key: string]: Array<Dayjs> } => {\n return {\n today: [getDayjs().hour(0).minute(0).second(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n yesterday: [getDayjs().subtract(1, 'days').hour(0).minute(0).second(0).millisecond(0), getDayjs().subtract(1, 'days').hour(23).minute(59).second(59)],\n _7days_ago: [getDayjs().subtract(6, 'days').hour(0).second(0).minute(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n _30days_ago: [getDayjs().subtract(29, 'days').hour(0).second(0).minute(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n this_month: [getDayjs().startOf('month'), getDayjs().endOf('month')],\n last_month: [getDayjs().subtract(1, 'month').startOf('month'), getDayjs().subtract(1, 'month').endOf('month')],\n _3months_ago: [getDayjs().subtract(89, 'days').hour(0).second(0).minute(0).millisecond(0), getDayjs().hour(23).minute(59).second(59)],\n };\n};\n\nexport const getDateOptionsDefault = (): LocalizationConfig => ({ ...defaultLocaleConfig(), ...getDateOptions() });\n","import { signal } from '@angular/core';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IHttpRequestConfig, returnDetailObject, returnListObject } from '@libs-ui/services-http-request';\nimport { UtilsCache, UtilsHttpParamsRequestInstance, UtilsLanguageConstants } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ICalendarMonthItem } from '../interfaces/calendar-variables.interface';\n\nconst getMonthsDefault = (): Array<ICalendarMonthItem> => {\n return [\n {\n id: 1,\n label: 'i18n_january',\n maxDays: 31,\n },\n {\n id: 2,\n label: 'i18n_february',\n maxDays: 29,\n },\n {\n id: 3,\n label: 'i18n_march',\n maxDays: 31,\n },\n {\n id: 4,\n label: 'i18n_april',\n maxDays: 30,\n },\n {\n id: 5,\n label: 'i18n_may',\n maxDays: 31,\n },\n {\n id: 6,\n label: 'i18n_june',\n maxDays: 30,\n },\n {\n id: 7,\n label: 'i18n_july',\n maxDays: 31,\n },\n {\n id: 8,\n label: 'i18n_august',\n maxDays: 31,\n },\n {\n id: 9,\n label: 'i18n_september',\n maxDays: 30,\n },\n {\n id: 10,\n label: 'i18n_october',\n maxDays: 31,\n },\n {\n id: 11,\n label: 'i18n_november',\n maxDays: 30,\n },\n {\n id: 12,\n label: 'i18n_december',\n maxDays: 31,\n },\n ];\n};\n\nexport const getMonthsListConfig = (translate: TranslateService): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(getMonthsDefault()),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n getValue: (item: { id: string; label: string }) => {\n const label = translate.instant(item.label || ' ', { year: '&#32;' });\n\n return label.substring(0, UtilsCache.getLang() === UtilsLanguageConstants.VI ? label.length : 3);\n },\n getClassIncludePopover: () => 'libs-ui-font-h5r',\n }),\n };\n};\n\nexport const getMonthsDetailById = (): IHttpRequestConfig => {\n return {\n objectInstance: returnDetailObject(UtilsHttpParamsRequestInstance(), getMonthsDefault()),\n functionName: 'detailByData',\n argumentsValue: [],\n guideAutoUpdateArgumentsValue: {\n paging: {},\n detailById: {\n fieldUpdate: '[0]',\n fieldGetValue: '',\n subFieldUpdate: 'keys',\n },\n },\n };\n};\n\nexport const getYearsListConfig = (listOfYears: Array<{ id: number; label: string }> = []): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(listOfYears),\n functionName: 'list',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n getValue: (item: { id: string; label: string }) => {\n return item.label;\n },\n getClassIncludeTooltip: () => 'libs-ui-font-h5r',\n }),\n };\n};\n\nexport const getYearsDetailById = (listOfYears: Array<{ id: number; label: string }> = []): IHttpRequestConfig => {\n return {\n objectInstance: returnDetailObject(UtilsHttpParamsRequestInstance(), listOfYears),\n functionName: 'detailByData',\n argumentsValue: [],\n guideAutoUpdateArgumentsValue: {\n paging: {},\n detailById: {\n fieldUpdate: '[0]',\n fieldGetValue: '',\n subFieldUpdate: 'keys',\n },\n },\n };\n};\n","import { getDayjs } from '@libs-ui/utils';\n\nexport const DEFAULT_MIN_YEAR = 1945;\nexport const DEFAULT_MAX_YEAR = getDayjs().year() + 5;\n","import { WritableSignal } from '@angular/core';\nimport * as dayjs from 'dayjs';\n\nexport interface ICalendarVariables {\n left: WritableSignal<ICalendarVariablesSide>;\n right: WritableSignal<ICalendarVariablesSide>;\n}\ninterface ICalendarVariablesSide {\n calCols?: WritableSignal<Array<number>>;\n calRows?: WritableSignal<Array<number>>;\n calendar?: ICalendar;\n classes?: ICalendarVariablesClasses;\n dayOfWeek?: number;\n daysInLastMonth?: number;\n daysInMonth?: number;\n dropdowns?: WritableSignal<ICalendarVariablesDropdowns>;\n firstDay?: dayjs.Dayjs;\n hour?: number;\n lastDay?: dayjs.Dayjs;\n lastMonth?: number;\n lastYear?: number;\n maxDate?: dayjs.Dayjs;\n minDate?: dayjs.Dayjs;\n minute?: number;\n month?: number;\n second?: number;\n year?: number;\n}\ninterface ICalendarVariablesClasses {\n [index: number]: { [index: number]: string; classList?: string };\n}\ninterface ICalendarVariablesDropdowns {\n currentMonth?: number;\n currentYear?: number;\n inMaxYear?: boolean;\n inMinYear?: boolean;\n maxYear?: number;\n minYear?: number;\n monthArrays?: WritableSignal<Array<number>>;\n yearArrays?: WritableSignal<Array<number>>;\n}\n\nexport interface ICalendar {\n [index: number]: Array<dayjs.Dayjs>;\n firstDay?: dayjs.Dayjs;\n lastDay?: dayjs.Dayjs;\n}\n\ntype TYPE_DROPDOWN_MONTH_ID = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ICalendarMonthItem {\n id: TYPE_DROPDOWN_MONTH_ID;\n label: string;\n maxDays: number;\n}\n\nexport enum SideEnum {\n left = 'left',\n right = 'right',\n}\n\nexport interface IDateRange {\n id: string;\n label: string;\n values?: Array<dayjs.Dayjs>;\n}\n\nexport interface ISplitPickerDate {\n start: WritableSignal<{\n month: string | number;\n year: string | number;\n day: string | number;\n hour: string | number;\n minute: string | number;\n }>;\n end: WritableSignal<{\n month: string | number;\n year: string | number;\n day: string | number;\n hour: string | number;\n minute: string | number;\n }>;\n}\n","/* eslint-disable @typescript-eslint/no-unused-expressions */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked, viewChild, viewChildren, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDropdownFunctionControlEvent, IEmitSelectKey, LibsUiComponentsDropdownComponent } from '@libs-ui/components-dropdown';\nimport { IFocusAndBlurEvent, IInputFunctionControlEvent, LibsUiComponentsInputsInputComponent } from '@libs-ui/components-inputs-input';\nimport { IListConfigItem } from '@libs-ui/components-list';\nimport { IFlagMouse } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { IHttpRequestConfig } from '@libs-ui/services-http-request';\nimport { getDayjs, isNil, set } from '@libs-ui/utils';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport { getMonthsDetailById, getMonthsListConfig, getYearsDetailById, getYearsListConfig } from '../../defines/calendar.define';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR } from '../../defines/common-date.define';\nimport { defaultLocaleConfig, getDateOptions } from '../../defines/date-options.define';\nimport { IEmitDateCalendar } from '../../interfaces/calendar-emit.interface';\nimport { ICalendar, ICalendarVariables, IDateRange, ISplitPickerDate, SideEnum } from '../../interfaces/calendar-variables.interface';\nimport { ICalendarFunctionControlEvent } from '../../interfaces/function-control.interface';\nimport { LocalizationConfig } from '../../interfaces/picker.interface';\nimport { ICheckTimepickerSelected, ISelectedOld, ITimepickerItemValue, ITimepickerVariables, ITimepickerVariablesSide } from '../../interfaces/time-variables.interface';\ndayjs.extend(isoWeek);\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-picker-custom_ranges-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsDropdownComponent, LibsUiComponentsInputsInputComponent, LibsUiComponentsButtonsButtonComponent],\n})\nexport class LibsUiComponentsDatetimePickerCustomRangesCalendarComponent implements OnInit, OnDestroy {\n /** PROPERTY */\n protected readonly sideEnum = SideEnum;\n protected calendarVariables = signal<ICalendarVariables>({ left: signal({}), right: signal({}) });\n protected timepickerVariables = signal<ITimepickerVariables>({ left: signal({ selectedHour: 0, selectedMinute: 0 }), right: signal({ selectedHour: 23, selectedMinute: 59 }) });\n protected disableMonth = signal<{ left: WritableSignal<Array<any>>; right: WritableSignal<Array<any>> }>({ left: signal([]), right: signal([]) });\n protected today = signal<Dayjs>(getDayjs());\n protected listKeyFromSelected = signal<{ month: any; year: any }>({ month: undefined, year: undefined });\n protected listKeyToSelected = signal<{ month: any; year: any }>({ month: undefined, year: undefined });\n protected checkShowListDropdown = signal<{ [key: string]: boolean }>({});\n protected selectedQuickRange = signal<string>('');\n protected leftCalendar = signal<{ calendar?: ICalendar; month?: Dayjs }>({});\n protected rightCalendar = signal<{ calendar?: ICalendar; month?: Dayjs }>({});\n\n protected listMonthsConfig = signal<IListConfigItem | undefined>(undefined);\n protected monthHttpDetailConfig = signal<IHttpRequestConfig>(getMonthsDetailById());\n protected listLeftYearConfig = signal<IListConfigItem | undefined>(undefined);\n protected listRightYearConfig = signal<IListConfigItem | undefined>(undefined);\n protected listYearConfig = signal<IListConfigItem | undefined>(undefined);\n protected leftYearHttpDetailConfig = signal<IHttpRequestConfig | undefined>(undefined);\n protected rightYearHttpDetailConfig = signal<IHttpRequestConfig | undefined>(undefined);\n\n protected timePickerError = signal<boolean>(false);\n protected computedDisplayTimeLeft = computed(() => this.computedDisplayTime({ selectedHour: this.timepickerValueItem().lefthour(), selectedMinute: this.timepickerValueItem().leftminute() }));\n protected computedDisplayTimeRight = computed(() => this.computedDisplayTime({ selectedHour: this.timepickerValueItem().righthour(), selectedMinute: this.timepickerValueItem().rightminute() }));\n protected computedDisplayTimeLeftInputHour = computed(() => this.computedDisplayTimeInput(SideEnum.left, 'hour'));\n protected computedDisplayTimeLeftInputMinute = computed(() => this.computedDisplayTimeInput(SideEnum.left, 'minute'));\n protected computedDisplayTimeRightInputHour = computed(() => this.computedDisplayTimeInput(SideEnum.right, 'hour'));\n protected computedDisplayTimeRightInputMinute = computed(() => this.computedDisplayTimeInput(SideEnum.right, 'minute'));\n protected timepickerValueItem = signal<ITimepickerItemValue>({ lefthour: signal(0), leftminute: signal(0), righthour: signal(0), rightminute: signal(0) });\n\n private functionControls = new Map<string, IDropdownFunctionControlEvent | IInputFunctionControlEvent>();\n private pickingDate = signal<boolean>(false);\n private isShown = signal<boolean>(false);\n private nowHoveredDate = signal<Dayjs | null>(null);\n private timePickerIncrement = signal<number>(1);\n private selectedLabel = signal<string | undefined>(undefined);\n private keyCodeBackspace = signal<boolean>(false);\n private checkBackspaceFocus = signal<ITimepickerItemValue>({ lefthour: signal(1), leftminute: signal(1), righthour: signal(1), rightminute: signal(1) });\n private isZero = signal<boolean | undefined>(undefined);\n private oldDate = signal<ISelectedOld>({ start: dayjs(0), end: dayjs(0) });\n private isSelectedData = signal<ICheckTimepickerSelected>({ leftmonth: false, leftyear: false, rightmonth: false, rightyear: false });\n private splitPickerDate = signal<ISplitPickerDate>({ start: signal({ month: 0, year: 0, day: 0, hour: 0, minute: 0 }), end: signal({ month: 0, year: 0, day: 0, hour: 23, minute: 59 }) });\n\n /** INPUT */\n readonly quickRangesArray = input<Array<IDateRange>>([]);\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly classInclude = input<string>('');\n readonly isSingle = input<boolean>(false);\n readonly showDropdownsSelect = input<boolean>(true);\n readonly hasTimePicker = input<boolean>(true);\n readonly flagMouse = input<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n readonly dateOptions = input<LocalizationConfig>({ ...defaultLocaleConfig(), ...getDateOptions() });\n readonly autoApply = input<boolean>(false);\n readonly hasSecondPicker = input<boolean>(false);\n readonly showRangeLabelOnInput = input<boolean | undefined>(undefined);\n\n readonly startDate = model<Dayjs | undefined>(getDayjs().startOf('day'));\n readonly endDate = model<Dayjs | undefined>(getDayjs().endOf('day'));\n readonly minDate = input<Dayjs | string | undefined, Dayjs | string | undefined>(undefined, { transform: this.transformMinMaxDate.bind(this) });\n readonly maxDate = input<Dayjs | string | undefined, Dayjs | string | undefined>(undefined, { transform: this.transformMinMaxDate.bind(this) });\n readonly listYearHiddenInputSearch = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n /** OUTPUT */\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outPickerDate = output<IEmitDateCalendar>();\n readonly outCancel = output<string>();\n readonly outUpdateWidth = output<number>();\n readonly outFunctionsControl = output<ICalendarFunctionControlEvent>();\n\n /** INJECTION */\n private translate = inject(TranslateService);\n\n readonly pickerContainer = viewChild<ElementRef>('pickerContainer');\n readonly inputTimeHours = viewChildren<LibsUiComponentsInputsInputComponent>(LibsUiComponentsInputsInputComponent);\n\n constructor() {\n this.listMonthsConfig.set(getMonthsListConfig(this.translate));\n\n effect(() => {\n const oldStart = getDayjs({ date: this.startDate()?.clone() });\n const oldEnd = getDayjs({ date: this.endDate()?.clone() });\n\n untracked(() => {\n this.oldDate.set({ start: oldStart, end: oldEnd });\n });\n });\n }\n\n ngOnInit() {\n const startDate = getDayjs({ date: this.startDate()?.clone() });\n const endDate = getDayjs({ date: this.endDate()?.clone() });\n\n this.splitPickerDate.update((current) => {\n current.start.update((sideCurrent) => {\n sideCurrent.day = (startDate ?? getDayjs().startOf('day')).date();\n\n return sideCurrent;\n });\n current.end.update((sideCurrent) => {\n sideCurrent.day = (endDate ?? getDayjs().endOf('day')).date();\n\n return sideCurrent;\n });\n\n return current;\n });\n if (startDate) {\n this.updateElement();\n }\n if (startDate && this.hasTimePicker()) {\n this.setStartDate(startDate);\n this.renderTimePicker(SideEnum.left);\n }\n\n if (endDate && this.hasTimePicker()) {\n this.setEndDate(endDate);\n this.renderTimePicker(SideEnum.right);\n }\n this.buildConfigYear(SideEnum.left);\n this.buildConfigYear(SideEnum.right, startDate?.year());\n this.updateMonthsInView();\n this.renderCalendar(SideEnum.left);\n if ((getDayjs({ date: this.maxDate() })?.year() ?? DEFAULT_MAX_YEAR) < (startDate?.year() || 0)) {\n this.handlerSelectedDropdown({ key: getDayjs({ date: this.maxDate() })?.year() as unknown as string }, SideEnum.left + 'year');\n }\n\n if (!this.isSingle()) {\n this.renderCalendar(SideEnum.right);\n if ((getDayjs({ date: this.maxDate() })?.year() ?? DEFAULT_MAX_YEAR) < (endDate?.year() || 0)) {\n this.handlerSelectedDropdown({ key: getDayjs({ date: this.maxDate() })?.year() as unknown as string }, SideEnum.right + 'year');\n }\n }\n\n // this.renderRanges();\n this.formatMonthYear();\n this.outUpdateWidth.emit(1);\n this.updateElement();\n this.timepickerValueItem.set({\n lefthour: signal(this.timepickerVariables().left().selectedHour),\n righthour: signal(this.timepickerVariables().right().selectedHour),\n leftminute: signal(this.timepickerVariables().left().selectedMinute),\n rightminute: signal(this.timepickerVariables().right().selectedMinute),\n });\n\n if (this.hasTimePicker()) {\n setTimeout(() => {\n this.inputTimeHours()?.forEach((input) => {\n input.FunctionsControl.blur(true);\n });\n }, 0);\n }\n // this.outFunctionsControl.emit({ buildDefaultRange: this.buildDefaultRange.bind(this), applyToSelect: this.applyToSelect.bind(this) })\n }\n\n private buildConfigYear(side: SideEnum, startYear?: number) {\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n const listLeftYear = [];\n const listRightYear = [];\n\n if (side === SideEnum.left) {\n const start = maxDate?.year() ?? DEFAULT_MAX_YEAR;\n const end = minDate?.year() ?? DEFAULT_MIN_YEAR;\n for (let i = start; i >= end; i--) {\n listLeftYear.push({\n id: i,\n label: `${i}`,\n });\n }\n this.listLeftYearConfig.set(getYearsListConfig(listLeftYear));\n this.leftYearHttpDetailConfig.set(getYearsDetailById(listLeftYear));\n\n return;\n }\n\n const start = maxDate?.year() ?? DEFAULT_MAX_YEAR;\n const end = startYear ?? minDate?.year() ?? getDayjs().year();\n for (let i = start; i >= end; i--) {\n listRightYear.push({\n id: i,\n label: `${i}`,\n });\n }\n\n this.listRightYearConfig.set(getYearsListConfig(listRightYear));\n this.rightYearHttpDetailConfig.set(getYearsDetailById(listRightYear));\n }\n\n protected handlerChangeFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n\n private updateStartEndDate(date: Dayjs) {\n date = getDayjs({ date });\n if (this.endDate() || date.isBefore(getDayjs({ date: this.startDate() }), 'day')) {\n if (this.hasTimePicker()) {\n date = this.getDateWithTime(date, SideEnum.left);\n }\n this.endDate.set(undefined);\n this.setStartDate(getDayjs({ date: date.clone() }));\n\n return;\n }\n if (!this.endDate() && this.startDate() && date.isBefore(getDayjs({ date: this.startDate() }))) {\n this.setEndDate(getDayjs({ date: this.startDate()?.clone() }));\n\n return;\n }\n if (this.hasTimePicker()) {\n date = getDayjs({ date: this.getDateWithTime(date, SideEnum.right) });\n }\n if (!date.isBefore(getDayjs({ date: this.startDate() }), 'day')) {\n this.setEndDate(getDayjs({ date: date.clone() }));\n }\n if (this.autoApply()) {\n this.calculateSelectedLabel();\n }\n }\n\n private calculateSelectedLabel() {\n this.updateElement();\n }\n\n private formatMonthYear() {\n const month = (this.calendarVariables().left().dropdowns?.()?.currentMonth ?? 0) + 1;\n this.listKeyFromSelected.update((current) => {\n current.month = month;\n current.year = this.calendarVariables().left().dropdowns?.()?.currentYear;\n\n return current;\n });\n if (this.isSingle()) {\n this.isSelectedData.set({ leftmonth: true, leftyear: true, rightmonth: true, rightyear: true });\n return;\n }\n const rightMonth = (this.calendarVariables().right().dropdowns?.()?.currentMonth ?? 0) + 1;\n this.listKeyToSelected.update((current) => {\n current.month = rightMonth;\n current.year = this.calendarVariables().right().dropdowns?.()?.currentYear;\n\n return current;\n });\n this.isSelectedData.set({ leftmonth: true, leftyear: true, rightmonth: true, rightyear: true });\n }\n\n private setStartDate(startDate: Dayjs | string | undefined) {\n if (!this.startDate()) {\n return;\n }\n if (typeof startDate === 'string') {\n this.startDate.set(getDayjs({ date: dayjs(startDate, this.dateOptions().format), returnDayjsIfConfigDateNotExist: true }));\n }\n if (typeof startDate === 'object') {\n this.pickingDate.set(true);\n this.startDate.set(getDayjs({ date: startDate, returnDayjsIfConfigDateNotExist: true }));\n }\n if (!this.hasTimePicker()) {\n this.pickingDate.set(true);\n this.startDate.set(getDayjs({ date: this.startDate()?.startOf('day') }));\n }\n this.setStartDateInTimePicker();\n\n if (this.minDate() && this.startDate()?.isBefore(this.minDate())) {\n this.startDate.set(getDayjs({ date: this.minDate() })?.clone());\n\n this.setStartDateInTimePicker();\n }\n if (this.maxDate() && this.startDate()?.isAfter(this.maxDate())) {\n this.startDate.set(getDayjs({ date: this.maxDate() })?.clone());\n this.setStartDateInTimePicker();\n }\n if (!this.isShown()) {\n this.updateElement();\n }\n // this.outStartDateChanged.emit({ startDate: this.startDate() });\n this.updateMonthsInView();\n }\n\n private setStartDateInTimePicker() {\n if (!this.hasTimePicker() || !this.timePickerIncrement()) {\n return;\n }\n\n this.startDate.update((current) => {\n if (!current) {\n return;\n }\n current.minute(Math.round(current.minute() / this.timePickerIncrement()) * this.timePickerIncrement());\n\n return current;\n });\n }\n private setEndDate(endDate: Dayjs | string | undefined) {\n if (typeof endDate === 'string') {\n this.endDate.set(getDayjs({ date: dayjs(endDate, this.dateOptions().format), returnDayjsIfConfigDateNotExist: true }));\n }\n if (typeof endDate === 'object') {\n this.pickingDate.set(false);\n this.endDate.set(getDayjs({ date: dayjs(endDate), returnDayjsIfConfigDateNotExist: true }));\n }\n if (!this.endDate() || !this.startDate()) {\n return this.updateMonthsInView();\n }\n if (!this.hasTimePicker()) {\n this.pickingDate.set(false);\n this.endDate.set(this.endDate()?.add(1, 'd').startOf('day').subtract(1, 'second'));\n }\n if (this.hasTimePicker() && this.timePickerIncrement()) {\n this.endDate.update((current) => {\n if (!current) {\n return;\n }\n current.minute(Math.round(current.minute() / this.timePickerIncrement()) * this.timePickerIncrement());\n\n return current;\n });\n }\n if (this.endDate()?.isBefore(this.startDate())) {\n this.endDate.set(this.startDate()?.clone());\n }\n if (this.maxDate() && this.endDate()?.isAfter(this.maxDate())) {\n this.endDate.set(getDayjs({ date: this.maxDate() })?.clone());\n }\n // this.outEndDateChanged.emit({ endDate: this.endDate() });\n this.updateMonthsInView();\n }\n protected handlerHoverDate(event: Event, side: SideEnum, row: number, col: number) {\n event.stopPropagation();\n\n const leftCalDate = this.calendarVariables().left().calendar?.[row][col];\n const rightCalDate = this.calendarVariables().right().calendar?.[row][col];\n\n if (!this.pickingDate || !rightCalDate || !leftCalDate) {\n return;\n }\n this.nowHoveredDate.set(side === SideEnum.left ? leftCalDate : rightCalDate);\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n }\n private getDisable(type: 'left' | 'right') {\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n if (type === 'left') {\n this.disableMonth().left.set([]);\n\n if (minDate && minDate?.year() === this.listKeyFromSelected().year) {\n for (let i = 1; i < minDate?.month() + 1; i++) {\n this.disableMonth().left.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n if (maxDate && maxDate?.year() === this.listKeyFromSelected().year) {\n for (let i = maxDate?.month() + 2; i < 13; i++) {\n this.disableMonth().left.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n\n return;\n }\n\n this.disableMonth().right.set([]);\n if (minDate && minDate?.year() === this.listKeyToSelected().year) {\n for (let i = 1; i < minDate?.month() + 1; i++) {\n this.disableMonth().right.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n if (maxDate && maxDate?.year() === this.listKeyToSelected().year) {\n for (let i = maxDate?.month() + 2; i < 13; i++) {\n this.disableMonth().right.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n if (Number(this.listKeyFromSelected().year) === Number(this.listKeyToSelected().year)) {\n for (let i = 1; i <= Number(this.listKeyFromSelected().month); i++) {\n this.disableMonth().right.update((current) => {\n current.push(i);\n\n return current;\n });\n }\n }\n }\n\n protected handlerClickPrev(side: SideEnum) {\n if (side === SideEnum.left && this.leftCalendar().month) {\n this.leftCalendar.update((current) => {\n current.month = current.month?.subtract(1, 'month');\n\n return current;\n });\n this.listKeyFromSelected.update((current) => {\n current.month = (this.leftCalendar().month?.month() ?? 0) + 1;\n current.year = this.leftCalendar().month?.year();\n\n return current;\n });\n\n return this.updateCalendars();\n }\n this.rightCalendar.update((current) => {\n current.month = current.month?.subtract(1, 'month');\n\n return current;\n });\n this.listKeyToSelected.update((current) => {\n current.month = (this.rightCalendar().month?.month() ?? 0) + 1;\n current.year = this.rightCalendar().month?.year();\n\n return current;\n });\n this.getDisable('right');\n this.updateCalendars();\n }\n\n protected handlerClickNext(side: SideEnum) {\n if (side === SideEnum.left) {\n this.leftCalendar.update((current) => {\n current.month = current.month?.add(1, 'month');\n\n return current;\n });\n this.listKeyFromSelected.update((current) => {\n current.month = (this.leftCalendar().month?.month() ?? 0) + 1;\n current.year = this.leftCalendar().month?.year();\n\n return current;\n });\n\n if (this.listKeyFromSelected().month === this.listKeyToSelected().month && this.listKeyFromSelected().year === this.listKeyToSelected().year) {\n this.rightCalendar.update((current) => {\n current.month = current.month?.add(1, 'month');\n\n return current;\n });\n this.listKeyToSelected.update((current) => {\n current.month = (this.rightCalendar().month?.month() ?? 0) + 1;\n current.year = this.rightCalendar().month?.year();\n\n return current;\n });\n }\n this.getDisable('right');\n\n return this.updateCalendars();\n }\n this.rightCalendar.update((current) => {\n current.month = current.month?.add(1, 'month');\n\n return current;\n });\n this.listKeyToSelected.update((current) => {\n current.month = (this.rightCalendar().month?.month() ?? 0) + 1;\n current.year = this.rightCalendar().month?.year();\n\n return current;\n });\n this.updateCalendars();\n }\n protected handlerPickerDate(event: any, side: SideEnum, row: number, col: number) {\n event.stopPropagation();\n\n if (event.target?.tagName === 'TD') {\n if (event.target.classList && !event.target.classList.contains('available')) {\n return;\n }\n }\n if (event.target.tagName === 'SPAN') {\n if (event.target.parentElement && event.target.parentElement.classList && !event.target.parentElement.classList.contains('available')) {\n return;\n }\n }\n if (!this.dateOptions().customRangeLabel) {\n return;\n }\n if (this.quickRangesArray().length) {\n this.selectedQuickRange.set(this.dateOptions().customRangeLabel);\n }\n const date = side === SideEnum.left ? this.leftCalendar().calendar?.[row][col] : this.rightCalendar().calendar?.[row][col];\n\n if (!date) {\n return;\n }\n this.splitPickerDate.update((current) => {\n current[side === SideEnum.left ? 'start' : 'end'].update((sideCurrent) => {\n sideCurrent.day = date.date();\n\n return sideCurrent;\n });\n\n return current;\n });\n this.updateStartEndDate(date);\n\n if (this.isSingle() && this.startDate()) {\n this.setEndDate(this.startDate());\n this.updateElement();\n\n if (this.autoApply()) {\n this.handlerClickApply();\n }\n }\n\n this.updateView();\n if (this.autoApply() && this.startDate() && this.endDate()) {\n this.handlerClickApply();\n }\n }\n\n protected handlerClickApply(event?: Event) {\n event?.stopPropagation();\n if (this.hasTimePicker()) {\n this.setTimeInput(SideEnum.left);\n this.setTimeInput(SideEnum.right);\n }\n this.calculateSelectedLabel();\n\n if (this.selectedLabel()) {\n this.outPickerDate.emit({ displayLabel: this.selectedLabel(), startDate: this.startDate(), endDate: this.endDate(), detailDatePicker: this.splitPickerDate() });\n }\n }\n protected handlerClickCancel(event: Event) {\n event.stopPropagation();\n this.startDate.set(dayjs(0));\n this.endDate.set(dayjs(0));\n this.outCancel.emit('');\n }\n\n protected handlerFunctionControl(event: IDropdownFunctionControlEvent | IInputFunctionControlEvent, type: string) {\n this.functionControls.set(type, event);\n }\n\n protected handlerSelectedDropdown(event: IEmitSelectKey | undefined, type: string) {\n this.outChangStageFlagMouse.emit({\n isMouseEnter: false,\n isMouseEnterContent: false,\n isContainerHasScroll: false,\n });\n if (!event) {\n return;\n }\n switch (type) {\n case `${SideEnum.left}month`:\n case `${SideEnum.right}month`:\n this.updateMonthSelect(event, type);\n\n break;\n\n case `${SideEnum.left}year`:\n case `${SideEnum.right}year`:\n this.updateYearSelect(event, type);\n break;\n\n default:\n break;\n }\n\n this.splitPickerDate.update((current) => {\n if (type === `${SideEnum.left}month` || type === `${SideEnum.left}year`) {\n current.start.update((start) => {\n if (type === `${SideEnum.left}month`) {\n start.month = event.key as number;\n }\n if (type === `${SideEnum.left}year`) {\n start.year = event.key as number;\n }\n\n return start;\n });\n\n return current;\n }\n\n current.end.update((end) => {\n if (type === `${SideEnum.right}month`) {\n end.month = event.key as number;\n }\n if (type === `${SideEnum.right}year`) {\n end.year = event.key as number;\n }\n\n return end;\n });\n\n return current;\n });\n }\n\n private updateMonthSelect(event: IEmitSelectKey, type: string) {\n const side = type.includes(SideEnum.left) ? SideEnum.left : SideEnum.right;\n const year = this.calendarVariables()[side]().dropdowns?.()?.currentYear || getDayjs().year();\n const month = Number(event.key) - 1;\n\n if (side === SideEnum.left) {\n if (this.isSelectedData().leftmonth) {\n this.isSelectedData.update((current) => {\n current.leftmonth = false;\n\n return current;\n });\n this.getDisable('right');\n\n return;\n }\n this.listKeyFromSelected.update((current) => {\n current.month = event.key;\n\n return current;\n });\n if (Number(event.key) >= Number(this.listKeyFromSelected().month) && Number(this.listKeyFromSelected().year) === Number(this.listKeyToSelected().year)) {\n if (Number(event.key) <= 11) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(event.key) + 1;\n\n return current;\n });\n }\n if (Number(event.key) === 12) {\n this.listKeyToSelected.update((current) => {\n current.month = 1;\n current.year += 1;\n\n return current;\n });\n }\n }\n }\n\n if (side === SideEnum.right) {\n if (this.isSelectedData().rightmonth) {\n this.isSelectedData.update((current) => {\n current.rightmonth = false;\n\n return current;\n });\n this.getDisable('right');\n\n return;\n }\n this.listKeyToSelected.update((current) => {\n current.month = event.key;\n\n return current;\n });\n }\n (this.functionControls.get(type) as IDropdownFunctionControlEvent)?.removeList();\n\n this.getDisable('right');\n this.monthOrYearChanged(month, year, side);\n }\n private updateYearSelect(event: IEmitSelectKey, type: string) {\n const side = type.includes(SideEnum.left) ? SideEnum.left : SideEnum.right;\n\n if (side === SideEnum.left) {\n if (this.isSelectedData()?.leftyear) {\n this.isSelectedData.update((current) => {\n current.leftyear = false;\n\n return current;\n });\n this.getDisable('left');\n // this.SetListYearRight(this.listViewKeySelectedYear as number);\n (this.functionControls.get(type) as IDropdownFunctionControlEvent)?.removeList();\n\n return;\n }\n this.listKeyFromSelected.update((current) => {\n current.year = event.key;\n return current;\n });\n if (this.listKeyFromSelected().year && this.listKeyToSelected().year && this.listKeyFromSelected().year >= this.listKeyToSelected().year) {\n this.listKeyToSelected.update((current) => {\n current.year = event.key;\n return current;\n });\n if (this.listKeyFromSelected().month && Number(this.listKeyFromSelected().month) <= 11) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month) + 1;\n return current;\n });\n }\n if (this.listKeyFromSelected().month && this.listKeyFromSelected().month === 12) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month);\n return current;\n });\n }\n }\n this.getDisable('left');\n this.buildConfigYear(SideEnum.right, this.listKeyFromSelected().year as number);\n (this.functionControls.get(type) as IDropdownFunctionControlEvent)?.removeList();\n }\n if (side === SideEnum.right) {\n if (this.isSelectedData().rightyear) {\n this.isSelectedData.update((current) => {\n current.rightyear = false;\n\n return current;\n });\n this.getDisable('right');\n\n return;\n }\n this.listKeyToSelected.update((current) => {\n current.year = event.key;\n\n return current;\n });\n if (this.listKeyFromSelected().year && this.listKeyToSelected().year && this.listKeyFromSelected().year >= this.listKeyToSelected().year) {\n if (this.listKeyFromSelected().month && Number(this.listKeyFromSelected().month) <= 11) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month) + 1;\n\n return current;\n });\n }\n if (this.listKeyFromSelected().month && this.listKeyFromSelected().month === 12) {\n this.listKeyToSelected.update((current) => {\n current.month = Number(this.listKeyFromSelected().month);\n\n return current;\n });\n }\n }\n }\n this.getDisable('right');\n let month = getDayjs().month();\n\n if (side === SideEnum.right && this.listKeyFromSelected().month) {\n month = Number(this.listKeyFromSelected().month) - 1;\n }\n if (side === SideEnum.left && this.listKeyFromSelected().month) {\n month = Number(this.listKeyFromSelected().month) - 1;\n }\n const year = Number(event.key);\n\n this.monthOrYearChanged(month, year, side);\n }\n private monthOrYearChanged(month: number, year: number, side: SideEnum) {\n const isLeft = side === SideEnum.left;\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n if (minDate && (year < minDate?.year() || (year === minDate?.year() && month < minDate?.month()))) {\n month = minDate?.month();\n year = minDate?.year();\n }\n\n if (maxDate && (year > maxDate?.year() || (year === maxDate?.year() && month > maxDate?.month()))) {\n month = maxDate?.month();\n year = maxDate?.year();\n }\n\n const dropdowns = this.calendarVariables()[side]().dropdowns;\n\n if (dropdowns?.()) {\n dropdowns.update((current) => {\n current.currentYear = year;\n current.currentMonth = month;\n\n return current;\n });\n }\n if (isLeft && this.leftCalendar().month) {\n this.leftCalendar.update((current) => {\n current.month = current.month?.month(month).year(year);\n return current;\n });\n\n return this.updateCalendars();\n }\n\n if (month === 12) {\n this.rightCalendar.update((current) => {\n current.month = current.month?.clone().add(1, 'month');\n return current;\n });\n\n return this.updateCalendars();\n }\n this.rightCalendar.update((current) => {\n current.month = current.month?.month(month).year(year);\n return current;\n });\n this.updateCalendars();\n }\n\n protected handlerInputEvent(event: IEvent, type: `lefthour` | `leftminute` | `righthour` | `rightminute`) {\n if (event.keyCode !== 8) {\n event.keyCode &&\n this.checkBackspaceFocus.update((current) => {\n current[type].set(1);\n\n return current;\n });\n\n this.keyCodeBackspace.set(false);\n\n return;\n }\n\n this.keyCodeBackspace.set(true);\n\n switch (type) {\n case 'leftminute':\n if (isNil(this.timepickerValueItem().leftminute())) {\n if (this.checkBackspaceFocus()[type]() === 1) {\n this.checkBackspaceFocus.update((current) => {\n current[type].set(current[type]() + 1);\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocus.update((current) => {\n current[type].set(1);\n\n return current;\n });\n (this.functionControls.get(`${SideEnum.left}hour`) as IInputFunctionControlEvent)?.focus();\n }\n break;\n\n case 'rightminute':\n if (isNil(this.timepickerValueItem().rightminute())) {\n if (this.checkBackspaceFocus()[type]() === 1) {\n this.checkBackspaceFocus.update((current) => {\n current[type].set(current[type]() + 1);\n\n return current;\n });\n\n return;\n }\n this.checkBackspaceFocus.update((current) => {\n current[type].set(1);\n\n return current;\n });\n (this.functionControls.get(`${SideEnum.right}hour`) as IInputFunctionControlEvent)?.focus();\n }\n break;\n }\n }\n\n protected handlerFocusAndBlurTime(event: IFocusAndBlurEvent, type: `lefthour` | `leftminute` | `righthour` | `rightminute`) {\n if (event.name === 'focus') {\n return;\n }\n const eventInput = event.event as IEvent;\n const target = eventInput.target;\n\n switch (type) {\n case 'lefthour':\n this.timepickerVariables().left.update((current) => {\n current.selectedHour = !isNil(this.timepickerValueItem().lefthour()) ? this.timepickerValueItem().lefthour() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().lefthour()) === 0 || isNil(this.timepickerValueItem().lefthour())) {\n this.timepickerValueItem.update((current) => {\n current.lefthour.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n if (Number(this.timepickerValueItem().lefthour()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().lefthour())}`;\n }\n break;\n\n case 'righthour':\n this.timepickerVariables().right.update((current) => {\n current.selectedHour = !isNil(this.timepickerValueItem().righthour()) ? this.timepickerValueItem().righthour() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().righthour()) === 0 || isNil(this.timepickerValueItem().righthour())) {\n this.timepickerValueItem.update((current) => {\n current.righthour.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n\n if (Number(this.timepickerValueItem().righthour()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().righthour())}`;\n }\n break;\n\n case 'leftminute':\n this.timepickerVariables().left.update((current) => {\n current.selectedMinute = !isNil(this.timepickerValueItem().leftminute()) ? this.timepickerValueItem().leftminute() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().leftminute()) === 0 || isNil(this.timepickerValueItem().leftminute())) {\n this.timepickerValueItem.update((current) => {\n current.leftminute.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n\n if (Number(this.timepickerValueItem().leftminute()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().leftminute())}`;\n }\n break;\n\n case 'rightminute':\n this.timepickerVariables().right.update((current) => {\n current.selectedMinute = !isNil(this.timepickerValueItem().rightminute()) ? this.timepickerValueItem().rightminute() : 0;\n\n return current;\n });\n if (Number(this.timepickerValueItem().rightminute()) === 0 || isNil(this.timepickerValueItem().rightminute())) {\n this.timepickerValueItem.update((current) => {\n current.rightminute.set(0);\n\n return current;\n });\n target.value = '00';\n\n break;\n }\n\n if (Number(this.timepickerValueItem().rightminute()) < 10) {\n target.value = `0${Number(this.timepickerValueItem().rightminute())}`;\n }\n break;\n }\n }\n\n protected handlerChangeTimeValue(event: string | number, type: `lefthour` | `leftminute` | `righthour` | `rightminute`) {\n this.timepickerValueItem.update((current) => {\n current[type].set(event as number);\n\n return current;\n });\n\n const side = type.includes(SideEnum.left) ? SideEnum.left : SideEnum.right;\n const attr = type.includes('hour') ? 'hour' : 'minute';\n\n this.splitPickerDate.update((current) => {\n current[side === SideEnum.left ? 'start' : 'end'].update((sideCurrent) => {\n sideCurrent[attr] = event as number;\n\n return sideCurrent;\n });\n\n return current;\n });\n if ((type !== 'lefthour' && type !== 'righthour') || event === undefined) {\n this.isZero.set(false);\n\n return;\n }\n if (`${event}`.length === 2 || Number(event) > 2 || (Number(event) <= 2 && Number(event) > 0 && this.isZero()) || (this.isZero() && !this.keyCodeBackspace())) {\n this.isZero.set(false);\n (this.functionControls.get(type === 'lefthour' ? `${SideEnum.left}minute` : `${SideEnum.right}minute`) as IInputFunctionControlEvent)?.focus();\n\n return;\n }\n if (Number(event) === 0 && !this.keyCodeBackspace()) {\n this.isZero.set(true);\n\n return;\n }\n }\n\n protected handlerShowListDropdown(event: boolean, type: string) {\n this.checkShowListDropdown.update((current) => {\n current[type] = event;\n\n return current;\n });\n }\n\n protected convertItemMonth = (item: any) => {\n if (!item) {\n return '';\n }\n set(item, 'labelDisplay', this.translate.instant(item.label || ' ', { year: '' }));\n\n return item;\n };\n protected convertItemYear = (item: any) => {\n if (!item) {\n return '';\n }\n item.labelDisplay = this.translate.instant('i18n_year_param', { year: item.label });\n\n return item;\n };\n\n private updateMonthsInView() {\n if (this.endDate()) {\n if (\n !this.isSingle() &&\n this.leftCalendar().month &&\n this.rightCalendar().month &&\n ((this.leftCalendar() && this.startDate()?.format('YYYY-MM') === this.leftCalendar().month?.format('YYYY-MM')) || (this.rightCalendar() && this.startDate()?.format('YYYY-MM') === this.rightCalendar().month?.format('YYYY-MM'))) &&\n (this.endDate()?.format('YYYY-MM') === this.leftCalendar().month?.format('YYYY-MM') || this.endDate()?.format('YYYY-MM') === this.rightCalendar().month?.format('YYYY-MM'))\n ) {\n return;\n }\n\n if (this.startDate()) {\n this.leftCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2);\n\n return current;\n });\n\n if (this.endDate()?.month() !== this.startDate()?.month() || this.endDate()?.year() !== this.startDate()?.year()) {\n this.rightCalendar.update((current) => {\n current.month = this.endDate()?.clone()?.date(2);\n\n return current;\n });\n\n return;\n }\n this.rightCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2)?.add(1, 'month');\n\n return current;\n });\n }\n }\n\n if (\n this.startDate() &&\n this.leftCalendar().month &&\n this.rightCalendar().month &&\n this.leftCalendar().month?.format('YYYY-MM') !== this.startDate()?.format('YYYY-MM') &&\n this.rightCalendar().month?.format('YYYY-MM') !== this.startDate()?.format('YYYY-MM')\n ) {\n this.leftCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2);\n\n return current;\n });\n this.rightCalendar.update((current) => {\n current.month = this.startDate()?.clone()?.date(2)?.add(1, 'month');\n\n return current;\n });\n }\n }\n\n private setTimeInput(side: SideEnum) {\n const hour = parseInt(`${this.timepickerVariables()[side]().selectedHour}`);\n const minute = parseInt(`${this.timepickerVariables()[side]().selectedMinute}`);\n\n if (side === SideEnum.left && this.startDate()) {\n let start = this.startDate()?.clone();\n\n start = start?.hour(hour);\n start = start?.minute(minute);\n this.setStartDate(start);\n if (this.isSingle()) {\n this.endDate.set(this.startDate()?.clone());\n }\n if (this.endDate() && this.endDate()?.format('YYYY-MM-DD') === start?.format('YYYY-MM-DD') && this.endDate()?.isBefore(start)) {\n this.setEndDate(start?.clone());\n }\n if (!this.endDate() && start && this.hasTimePicker()) {\n const startClone = this.getDateWithTime(start, SideEnum.right);\n\n if (startClone.isBefore(start)) {\n this.timepickerVariables()[SideEnum.right].update((current) => {\n current.selectedHour = hour;\n current.selectedMinute = minute;\n\n return current;\n });\n }\n }\n\n return;\n }\n if (this.endDate()) {\n let end = this.endDate()?.clone();\n\n end = end?.hour(hour);\n end = end?.minute(minute);\n this.setEndDate(end);\n }\n this.updateCalendars();\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n }\n\n private updateCalendars() {\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n if (this.endDate() === null) {\n return;\n }\n this.calculateSelectedLabel();\n }\n\n private renderCalendar(side: SideEnum) {\n // side enum\n const mainCalendar: { calendar?: ICalendar; month?: Dayjs } = side === SideEnum.left ? this.leftCalendar() : this.rightCalendar();\n\n if (!mainCalendar.month || this.dateOptions().firstDay === undefined || this.dateOptions().firstDay === undefined) {\n return;\n }\n const month = mainCalendar.month.month();\n const year = mainCalendar.month.year();\n const hour = mainCalendar.month.hour();\n const minute = mainCalendar.month.minute();\n const second = mainCalendar.month.second();\n const daysInMonth = getDayjs({ date: new Date(year, month) }).daysInMonth();\n const firstDay = getDayjs({ date: new Date(year, month, 1) });\n const lastDay = getDayjs({ date: new Date(year, month, daysInMonth) });\n const lastMonth = getDayjs({ date: firstDay.subtract(1, 'month') }).month();\n const lastYear = getDayjs({ date: firstDay.subtract(1, 'month') }).year();\n const daysInLastMonth = getDayjs({ date: new Date(lastYear, lastMonth) }).daysInMonth();\n const dayOfWeek = firstDay.day();\n const calendar: ICalendar = {};\n\n calendar.firstDay = firstDay;\n calendar.lastDay = lastDay;\n for (let i = 0; i < 6; i++) {\n calendar[i] = [];\n }\n let startDay = daysInLastMonth - dayOfWeek + (this.dateOptions().firstDay ?? 1) + 1;\n\n if (startDay > daysInLastMonth) {\n startDay -= 7;\n }\n if (dayOfWeek === this.dateOptions().firstDay) {\n startDay = daysInLastMonth - 6;\n }\n let curDate = getDayjs({ date: new Date(lastYear, lastMonth, startDay, 12, minute, second) });\n\n for (let i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = getDayjs({ date: curDate }).add(24, 'hour')) {\n if (i > 0 && col % 7 === 0) {\n col = 0;\n row++;\n }\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\n curDate = curDate.hour(12);\n\n const minDate = getDayjs({ date: this.minDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n if (minDate && calendar[row][col].format('YYYY-MM-DD') === minDate?.format('YYYY-MM-DD') && calendar[row][col].isBefore(minDate) && side === 'left') {\n calendar[row][col] = minDate?.clone();\n }\n if (maxDate && calendar[row][col].format('YYYY-MM-DD') === maxDate?.format('YYYY-MM-DD') && calendar[row][col].isAfter(maxDate) && side === 'right') {\n calendar[row][col] = maxDate?.clone();\n }\n }\n\n if (side === SideEnum.left) {\n this.leftCalendar.update((current) => {\n current.calendar = calendar;\n\n return current;\n });\n }\n if (side === SideEnum.right) {\n this.rightCalendar.update((current) => {\n current.calendar = calendar;\n\n return current;\n });\n }\n const minDate = side === 'left' ? getDayjs({ date: this.minDate() }) : getDayjs({ date: this.startDate() });\n const maxDate = getDayjs({ date: this.maxDate() });\n\n this.calendarVariables()[side].set({\n month: month,\n year: year,\n hour: hour,\n minute: minute,\n second: second,\n daysInMonth: daysInMonth,\n firstDay: firstDay,\n lastDay: lastDay,\n lastMonth: lastMonth,\n lastYear: lastYear,\n daysInLastMonth: daysInLastMonth,\n dayOfWeek: dayOfWeek,\n calRows: signal(Array.from(Array(6).keys())),\n calCols: signal(Array.from(Array(7).keys())),\n classes: {},\n minDate: minDate,\n maxDate: maxDate,\n calendar: calendar,\n dropdowns: signal({}),\n });\n if (this.showDropdownsSelect()) {\n const currentMonth = calendar[1][1].month();\n const currentYear = calendar[1][1].year();\n const maxYear = maxDate?.year() ?? DEFAULT_MAX_YEAR;\n const minYear = minDate?.year() ?? DEFAULT_MIN_YEAR;\n const inMinYear = currentYear === minYear;\n const inMaxYear = currentYear === maxYear;\n const years = [];\n\n for (let y = minYear; y <= maxYear; y++) {\n years.push(y);\n }\n this.calendarVariables()\n [side]()\n .dropdowns?.set({\n currentMonth: currentMonth,\n currentYear: currentYear,\n maxYear: maxYear,\n minYear: minYear,\n inMinYear: inMinYear,\n inMaxYear: inMaxYear,\n monthArrays: signal(Array.from(Array(12).keys())),\n yearArrays: signal(years),\n });\n }\n this.buildCells(calendar, side);\n }\n\n private buildCells(calendar: ICalendar, side: SideEnum) {\n for (let row = 0; row < 6; row++) {\n const classless = this.calendarVariables()[side]();\n\n if (classless.classes) {\n classless.classes[row] = {};\n }\n for (let col = 0; col < 7; col++) {\n const classes = [];\n\n const startDate = getDayjs({ date: this.startDate() });\n const endDate = getDayjs({ date: this.endDate() });\n const nowHoveredDate = this.nowHoveredDate();\n\n if (calendar[row][col].isSame(new Date(), 'day')) {\n classes.push('today');\n }\n if (calendar[row][col].isoWeekday() > 5) {\n classes.push('weekend');\n }\n if (calendar[row][col].month() !== calendar[1][1].month()) {\n classes.push('off');\n }\n if (this.minDate() && calendar[row][col].isBefore(this.minDate(), 'day')) {\n classes.push('off', 'disabled');\n }\n if (this.calendarVariables()[side]().maxDate && calendar[row][col].isAfter(this.calendarVariables()[side]().maxDate, 'day')) {\n classes.push('off', 'disabled');\n }\n if (startDate && calendar[row][col].format('YYYY-MM-DD') === startDate?.format('YYYY-MM-DD')) {\n classes.push('active', 'start-date');\n }\n if (endDate !== null && calendar[row][col].format('YYYY-MM-DD') === endDate?.format('YYYY-MM-DD')) {\n classes.push('active', 'end-date');\n }\n if (startDate && calendar[row][col].format('YYYY-MM-DD') === startDate?.format('YYYY-MM-DD') && (!endDate || (endDate !== null && calendar[row][col].format('YYYY-MM-DD') === endDate?.format('YYYY-MM-DD')))) {\n classes.push('active', 'full-date');\n }\n\n if (\n startDate &&\n endDate &&\n ((nowHoveredDate !== null && this.pickingDate()) || endDate !== null) &&\n calendar[row][col] > startDate &&\n (calendar[row][col] < endDate || (nowHoveredDate && calendar[row][col] < nowHoveredDate && this.pickingDate()))\n ) {\n classes.push(!classes.find((el) => el === 'off') ? 'in-range' : 'focus-off');\n }\n let cname = '',\n disabled = false;\n\n for (let i = 0; i < classes.length; i++) {\n cname += classes[i] + ' ';\n\n if (classes[i] === 'disabled') {\n disabled = true;\n }\n }\n if (!disabled) {\n cname += 'available';\n }\n\n if (classless.classes) {\n classless.classes[row][col] = cname.replace(/^\\s+|\\s+$/g, '');\n }\n }\n }\n }\n\n private renderTimePicker(side: SideEnum) {\n let selected: Dayjs = getDayjs(),\n minDate;\n const maxDate = getDayjs({ date: this.maxDate() });\n const startDate = getDayjs({ date: this.startDate() });\n const endDate = getDayjs({ date: this.endDate() });\n\n if (side === SideEnum.left && startDate) {\n selected = startDate.clone();\n minDate = this.maxDate();\n }\n if (side === SideEnum.right && endDate) {\n selected = endDate.clone();\n minDate = this.startDate();\n }\n if (side === SideEnum.right && !endDate) {\n if (!startDate) {\n return;\n }\n selected = getDayjs({ date: this.getDateWithTime(startDate, SideEnum.right) });\n if (selected.isBefore(startDate)) {\n selected = startDate.clone();\n }\n minDate = startDate;\n }\n const start = 0;\n const end = 23;\n\n this.timepickerVariables()[side].set({\n hours: [],\n minutes: [],\n minutesLabel: [],\n seconds: [],\n secondsLabel: [],\n disabledHours: [],\n disabledMinutes: [],\n disabledSeconds: [],\n selectedHour: 0,\n selectedMinute: 0,\n selectedSecond: 0,\n });\n for (let i = start; i <= end; i++) {\n const i_in_24 = i;\n\n const time = selected.clone().hour(i_in_24);\n let disabled = false;\n\n if (minDate && time.minute(59).isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.minute(0).isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables()[side].update((current) => {\n current.hours?.push(i);\n if (i_in_24 === selected.hour() && !disabled) {\n current.selectedHour = i;\n }\n if (disabled) {\n current.disabledHours?.push(i);\n }\n\n return current;\n });\n }\n for (let i = 0; i < 60; i += this.timePickerIncrement()) {\n const padded = i < 10 ? '0' + i : `${i}`;\n const time = selected.clone().minute(i);\n\n let disabled = false;\n\n if (minDate && time.second(59).isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.second(0).isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables()[side].update((current) => {\n current.minutes?.push(i);\n current.minutesLabel?.push(padded);\n if (selected.minute() === i && !disabled) {\n current.selectedMinute = i;\n }\n if (disabled) {\n current.disabledMinutes?.push(i);\n }\n\n return current;\n });\n }\n\n this.timepickerVariables()[side].update((current) => {\n current.selected = selected;\n\n return current;\n });\n }\n\n private updateElement() {\n if (!this.startDate()) {\n return;\n }\n if (this.isSingle()) {\n this.selectedLabel.set(this.startDate()?.format('DD/MM/YYYY'));\n\n return;\n }\n if (this.endDate()) {\n // if we use ranges and should show range label on input\n if (this.quickRangesArray().length && this.showRangeLabelOnInput() && this.selectedQuickRange() && this.dateOptions().customRangeLabel !== this.selectedQuickRange()) {\n this.selectedLabel.set(this.selectedQuickRange());\n\n return;\n }\n this.selectedLabel.set(`${this.startDate()?.format('DD/MM/YYYY')}${this.dateOptions().separator}${this.endDate()?.format('DD/MM/YYYY')}`);\n\n return;\n }\n this.selectedLabel.set(`${this.startDate()?.format('DD/MM/YYYY')}${this.dateOptions().separator}${this.startDate()?.format('DD/MM/YYYY')}`);\n }\n\n private updateView() {\n if (this.hasTimePicker()) {\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n }\n this.updateMonthsInView();\n this.updateCalendars();\n }\n\n private getDateWithTime(date: Dayjs, side: SideEnum): Dayjs {\n const hour = parseInt(`${this.timepickerVariables()[side]().selectedHour}`, 10);\n const minute = parseInt(`${this.timepickerVariables()[side]().selectedMinute}`, 10);\n const second = this.hasSecondPicker() && !isNil(this.timepickerVariables()[side]().selectedSecond) ? parseInt(`${this.timepickerVariables()[side]().selectedSecond}`, 10) : 0;\n\n return date.clone().hour(hour).minute(minute).second(second);\n }\n\n private transformMinMaxDate(value: Dayjs | string | undefined): Dayjs | undefined {\n if (isNil(value)) {\n return undefined;\n }\n if (dayjs.isDayjs(value)) {\n return value;\n }\n if (typeof value === 'string') {\n return getDayjs({ date: value });\n }\n\n return undefined;\n }\n\n private computedDisplayTime(side: ITimepickerVariablesSide) {\n let strHours: string | number | undefined = side.selectedHour;\n let strMinute: string | number | undefined = side.selectedMinute;\n\n if ((side.selectedHour || 0) < 10) {\n strHours = `0${side.selectedHour ?? 0}`;\n }\n\n if ((side.selectedMinute || 0) < 10) {\n strMinute = `0${side.selectedMinute ?? 0}`;\n }\n\n return `${strHours}:${strMinute}`;\n }\n\n private computedDisplayTimeInput(side: SideEnum, timeType: 'hour' | 'minute') {\n const time =\n timeType === 'hour' ? (side === SideEnum.left ? this.timepickerValueItem().lefthour() : this.timepickerValueItem().righthour()) : side === SideEnum.left ? this.timepickerValueItem().leftminute() : this.timepickerValueItem().rightminute();\n\n if (!time) {\n return '00';\n }\n if (time < 10) {\n return `0${time}`;\n }\n\n return time;\n }\n\n ngOnDestroy() {\n return;\n }\n}\n","<div class=\"libs-ui-component-custom_ranges-calendar test-class\">\n <div class=\"relative flex\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar\"\n [class.right]=\"isSingle()\"\n [class.left]=\"!isSingle()\">\n <div class=\"rounded-[4px] bg-[#ffffff]\">\n @if (calendarVariables(); as calendarVariables) {\n <table>\n <thead>\n <tr>\n <th\n colspan=\"7\"\n class=\"month\">\n @if (showDropdownsSelect() && calendarVariables.left().dropdowns?.()) {\n <div class=\"!flex mb-[10px] w-full\">\n <div class=\"w-3/4 flex items-center\">\n <div class=\"mr-[8px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[130px]', position: { mode: 'center', distance: 0 } }\"\n [listMaxItemShow]=\"10\"\n [listClickExactly]=\"false\"\n [listKeysDisable]=\"disableMonth().left()\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemMonth\"\n [listConfig]=\"listMonthsConfig()\"\n [listKeySelected]=\"listKeyFromSelected().month\"\n [flagMouse]=\"flagMouse()\"\n [listHiddenInputSearch]=\"true\"\n [httpRequestDetailItemById]=\"monthHttpDetailConfig()\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.left + 'month')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'month')\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.left + 'month')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'month']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.left + 'month']\">\n <div\n class=\"libs-ui-font-h4m\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dateOptions().monthNames && calendarVariables.left().calendar && dateOptions().monthNames[calendarVariables.left().calendar?.[1]?.[1]?.month() ?? -1] }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'month']\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.left + 'month'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n <div>\n <libs_ui-components-dropdown\n [listMaxItemShow]=\"10\"\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[110px]', position: { mode: 'center', distance: 0 } }\"\n [listClickExactly]=\"false\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemYear\"\n [listHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [listConfig]=\"listLeftYearConfig()\"\n [listKeySelected]=\"listKeyFromSelected().year\"\n [flagMouse]=\"flagMouse()\"\n [httpRequestDetailItemById]=\"leftYearHttpDetailConfig()\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.left + 'year')\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.left + 'year')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'year')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'year']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.left + 'year']\">\n <div\n class=\"libs-ui-font-h4m\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ calendarVariables.left().calendar && calendarVariables.left().calendar?.[1]?.[1]?.format(' YYYY') }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.left + 'year']\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.left + 'year'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n </div>\n\n <div class=\"w-1/4 flex items-center relative\">\n @if (!calendarVariables.left().minDate || calendarVariables.left().minDate?.isBefore(calendarVariables.left().calendar && calendarVariables.left().calendar?.firstDay)) {\n <div (click)=\"handlerClickPrev(sideEnum.left)\">\n <div class=\"flex items-center justify-center absolute left-0 top-[-3px]\">\n <i class=\"libs-ui-icon-chevron-right rotate-[180deg] text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n </div>\n }\n @if ((!calendarVariables.left().maxDate || calendarVariables.left().maxDate?.isAfter(calendarVariables.left().calendar && calendarVariables.left().calendar?.lastDay)) && isSingle()) {\n <div (click)=\"handlerClickNext(sideEnum.left)\">\n <div class=\"flex items-center justify-center ml-[12px] absolute right-0 top-[-3px]\">\n <i class=\"libs-ui-icon-chevron-right text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (!showDropdownsSelect() || !calendarVariables.left().dropdowns) {\n {{ dateOptions().monthNames && calendarVariables.left().calendar && dateOptions().monthNames[calendarVariables.left().calendar?.[1]?.[1]?.month() ?? -1] }}\n {{ calendarVariables.left().calendar && calendarVariables.left().calendar?.[1]?.[1]?.format(' YYYY') }}\n }\n </th>\n </tr>\n <tr class=\"week-days\">\n @for (dayofweek of dateOptions().daysOfWeek; track dayofweek) {\n <th>\n <span\n class=\"libs-ui-font-h6m text-[#6a7383]\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dayofweek }}\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"drp-animate\">\n @for (row of calendarVariables.left().calRows?.(); track row) {\n <tr\n class=\"h-[32px]\"\n [class]=\"calendarVariables.left().classes && calendarVariables.left().classes?.[row]?.classList\">\n @for (col of calendarVariables.left().calCols?.(); track col) {\n <td\n class=\"libs-ui-font-h5r\"\n [class.today]=\"\n calendarVariables.left().calendar &&\n calendarVariables.left().calendar?.[row]?.[col]?.date() === today().date() &&\n calendarVariables.left().calendar?.[row]?.[col]?.month() === today().month() &&\n calendarVariables.left().calendar?.[row]?.[col]?.year() === today().year()\n \"\n [class]=\"calendarVariables.left().classes && calendarVariables.left().classes?.[row]?.[col]\"\n (click)=\"handlerPickerDate($event, sideEnum.left, row, col)\"\n (mouseenter)=\"handlerHoverDate($event, sideEnum.left, row, col)\">\n <span class=\"libs-ui-font-h5r\">{{ calendarVariables.left().calendar && calendarVariables.left().calendar?.[row]?.[col]?.date() }}</span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n @if (hasTimePicker()) {\n <div>\n <div class=\"flex justify-center column items-center pt-[12px]\">\n <div\n class=\"w-full flex justify-center items-center rounded-[4px] border\"\n [class.border-[#e6e8ed]]=\"!timePickerError()\"\n [class.border-[#ff5454]]=\"timePickerError()\">\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center libs-ui-font-h4s !text-[#071631]\"\n dataType=\"int\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().lefthour()\"\n (outInputEvent)=\"handlerInputEvent($event, 'lefthour')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'hour')\"\n (outChange)=\"handlerChangeTimeValue($event, 'lefthour')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'lefthour')\" />\n <span class=\"libs-ui-font-h3s text-[#333333]\">:</span>\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center !libs-ui-font-h4s !text-[#071631]\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n dataType=\"int\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [maxValueNumber]=\"59\"\n [minValueNumber]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().leftminute()\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.left + 'minute')\"\n (outInputEvent)=\"handlerInputEvent($event, 'leftminute')\"\n (outChange)=\"handlerChangeTimeValue($event, 'leftminute')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'leftminute')\" />\n </div>\n </div>\n </div>\n }\n </div>\n\n @if (!isSingle()) {\n <div class=\"libs-ui-component-custom_ranges-calendar right ml-[24px]\">\n <div class=\"rounded-[4px] bg-[#ffffff]\">\n @if (calendarVariables()) {\n <table>\n <thead>\n <tr>\n <th\n colspan=\"7\"\n class=\"month\">\n @if (showDropdownsSelect() && calendarVariables().left().dropdowns?.()) {\n <div class=\"!flex mb-[10px] w-full\">\n <div class=\"w-3/4 flex items-center\">\n <div class=\"mr-[8px]\">\n <libs_ui-components-dropdown\n [isNgContent]=\"true\"\n [zIndex]=\"zIndex() + 1\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[130px]', position: { mode: 'center', distance: 0 } }\"\n [listMaxItemShow]=\"10\"\n [listClickExactly]=\"false\"\n [listKeysDisable]=\"disableMonth().right()\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemMonth\"\n [listHiddenInputSearch]=\"true\"\n [listConfig]=\"listMonthsConfig()\"\n [listKeySelected]=\"listKeyToSelected().month\"\n [flagMouse]=\"flagMouse()\"\n [httpRequestDetailItemById]=\"monthHttpDetailConfig()\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.right + 'month')\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.right + 'month')\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.right + 'month')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'month']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.right + 'month']\">\n <div\n class=\"libs-ui-font-h4m\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'month']\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dateOptions().monthNames && calendarVariables().right().calendar && dateOptions().monthNames[calendarVariables().right().calendar?.[1]?.[1]?.month() ?? -1] }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.right + 'month'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n <div>\n <libs_ui-components-dropdown\n [listMaxItemShow]=\"10\"\n [zIndex]=\"zIndex() + 1\"\n [isNgContent]=\"true\"\n [popoverCustomConfig]=\"{ widthByParent: false, ignoreArrow: true, paddingLeftItem: true, classInclude: '!w-[110px]', position: { mode: 'center', distance: 0 } }\"\n [listClickExactly]=\"false\"\n [listHasButtonUnSelectOption]=\"false\"\n [convertItemSelected]=\"convertItemYear\"\n [listHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [listConfig]=\"listRightYearConfig()\"\n [listKeySelected]=\"listKeyToSelected().year\"\n [flagMouse]=\"flagMouse()\"\n [httpRequestDetailItemById]=\"rightYearHttpDetailConfig()\"\n (outSelectKey)=\"handlerSelectedDropdown($event, sideEnum.right + 'year')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, sideEnum.right + 'year')\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\"\n (outShowList)=\"handlerShowListDropdown($event, sideEnum.right + 'year')\">\n <div\n class=\"libs-ui-component-custom_ranges-calendar-dropdown\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'year']\"\n [class.text-[#6a7383]]=\"!checkShowListDropdown()[sideEnum.right + 'year']\">\n <div\n class=\"libs-ui-font-h4m\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ calendarVariables().right().calendar && calendarVariables().right().calendar?.[1]?.[1]?.format('YYYY') }}\n </div>\n <i\n class=\"libs-ui-icon-chevron-right text-[13px] text-[#6a7383]\"\n [class.text-[var(--libs-ui-color-dark)]]=\"checkShowListDropdown()[sideEnum.right + 'year']\"\n [style.fontWeight]=\"500\"\n [style.rotate]=\"!checkShowListDropdown()[sideEnum.right + 'year'] ? '90deg' : '270deg'\"></i>\n </div>\n </libs_ui-components-dropdown>\n </div>\n </div>\n <div class=\"w-1/4 flex items-center relative\">\n @if (\n (listKeyFromSelected().year &&\n listKeyToSelected().year &&\n !(listKeyFromSelected().year + 1 === listKeyToSelected().year && listKeyFromSelected().month === 12 && listKeyToSelected().month === 1) &&\n listKeyFromSelected().year < listKeyToSelected().year) ||\n (listKeyFromSelected().month && listKeyToSelected().month && listKeyFromSelected().month + 1 < +listKeyToSelected().month)\n ) {\n <div\n class=\"flex items-center justify-center absolute left-0 top-[-3px]\"\n (click)=\"handlerClickPrev(sideEnum.right)\">\n <i class=\"libs-ui-icon-chevron-right rotate-[180deg] text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n }\n @if (\n listKeyFromSelected().month &&\n listKeyToSelected().month &&\n listKeyFromSelected().month > listKeyToSelected().month &&\n listKeyFromSelected().year &&\n listKeyToSelected().year &&\n listKeyFromSelected().year === listKeyToSelected().year\n ) {\n <div class=\"bg-[#ffffff] w-[21px] h-[21px] cursor-none flex items-center justify-center rounded-[50px]\"></div>\n }\n @if (\n !calendarVariables().right().maxDate ||\n calendarVariables()\n .right()\n .maxDate?.isAfter(calendarVariables().right().calendar && calendarVariables().right().calendar?.lastDay)\n ) {\n <div (click)=\"handlerClickNext(sideEnum.right)\">\n <div class=\"flex items-center justify-center ml-[12px] absolute right-0 top-[-3px]\">\n <i class=\"libs-ui-icon-chevron-right text-[#6a7383] cursor-pointer libs-ui-component-custom_ranges-calendar-icon\"></i>\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (!showDropdownsSelect() || !calendarVariables().right().dropdowns) {\n {{ dateOptions().monthNames && calendarVariables().right().calendar && dateOptions().monthNames[calendarVariables().right().calendar?.[1]?.[1]?.month() ?? -1] }}\n {{ calendarVariables().right().calendar && calendarVariables().right().calendar?.[1]?.[1]?.format('YYYY') }}\n }\n </th>\n </tr>\n <tr class=\"week-days\">\n @for (dayofweek of dateOptions().daysOfWeek; track dayofweek) {\n <th>\n <span\n class=\"libs-ui-font-h6m text-[#6a7383]\"\n [style.fontWeight]=\"500\"\n [style.fontStyle]=\"'normal'\">\n {{ dayofweek }}\n </span>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of calendarVariables().right().calRows?.(); track row) {\n <tr\n class=\"h-[32px]\"\n [class]=\"calendarVariables().right().classes && calendarVariables().right().classes?.[row]?.classList\">\n @for (col of calendarVariables().right().calCols?.(); track col) {\n <td\n class=\"libs-ui-font-h5r\"\n [class]=\"calendarVariables().right().classes && calendarVariables().right().classes?.[row]?.[col]\"\n [class.today]=\"\n calendarVariables().right().calendar &&\n calendarVariables().right().calendar?.[row]?.[col]?.date() === today().date() &&\n calendarVariables().right().calendar?.[row]?.[col]?.month() === today().month() &&\n calendarVariables().right().calendar &&\n calendarVariables().right().calendar?.[row]?.[col]?.year() === today().year()\n \"\n (click)=\"handlerPickerDate($event, sideEnum.right, row, col)\"\n (mouseenter)=\"handlerHoverDate($event, sideEnum.right, row, col)\">\n <span>{{ calendarVariables().right().calendar?.[row]?.[col]?.date() }}</span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n </div>\n @if (hasTimePicker()) {\n <div>\n <div class=\"flex justify-center items-center pt-[12px]\">\n <div\n class=\"w-full flex justify-center items-center rounded-[4px] border\"\n [class.border-[#e6e8ed]]=\"!timePickerError()\"\n [class.border-[#ff5454]]=\"timePickerError()\">\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center !libs-ui-font-h4s !text-[#071631]\"\n dataType=\"int\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"23\"\n [minValueNumber]=\"0\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().righthour()\"\n (outChange)=\"handlerChangeTimeValue($event, 'righthour')\"\n (outInputEvent)=\"handlerInputEvent($event, 'righthour')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, 'righthour')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'righthour')\" />\n <span class=\"libs-ui-font-h3s text-[#333333]\">:</span>\n <libs_ui-components-inputs-input\n classInclude=\"!w-[30px] !p-0 !border-none !text-center libs-ui-font-h4s !text-[#071631]\"\n dataType=\"int\"\n [autoAddZeroLessThan10InTypeInt]=\"true\"\n [emitEmptyInDataTypeNumber]=\"true\"\n [maxValueNumber]=\"59\"\n [minValueNumber]=\"0\"\n [focusTimeOut]=\"0\"\n [blurTimeOut]=\"0\"\n [maxLength]=\"2\"\n [value]=\"timepickerValueItem().rightminute()\"\n (outInputEvent)=\"handlerInputEvent($event, 'rightminute')\"\n (outFunctionsControl)=\"handlerFunctionControl($event, 'rightminute')\"\n (outChange)=\"handlerChangeTimeValue($event, 'rightminute')\"\n (outFocusAndBlurEvent)=\"handlerFocusAndBlurTime($event, 'rightminute')\" />\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n <div>\n <div class=\"flex w-full\">\n @if (!isSingle() && hasTimePicker()) {\n <div class=\"mt-[8px] libs-ui-font-h7r text-[#ff5454] h-[14px]\">\n @if (timePickerError()) {\n <span>{{ 'i18n_date_compare_start_end_message_error' | translate }}</span>\n }\n </div>\n }\n </div>\n @if (!quickRangesArray().length || !isSingle()) {\n <div class=\"flex w-full pt-[16px] justify-between\">\n <div class=\"flex items-center\">\n @if (!isSingle()) {\n @if (!endDate()) {\n <div class=\"text-[#cdd0d6] libs-ui-font-h6r\">\n <span>{{ startDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeLeft() }}</span>\n }\n &hyphen;\n <span>{{ startDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeRight() }}</span>\n }\n </div>\n }\n @if (endDate()) {\n <div class=\"text-[#cdd0d6] libs-ui-font-h6r\">\n <span>{{ startDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeLeft() }}</span>\n }\n &hyphen;\n <span>{{ endDate()?.format('DD/MM/YYYY') }}</span>\n @if (hasTimePicker()) {\n <span>{{ computedDisplayTimeRight() }}</span>\n }\n </div>\n }\n }\n </div>\n\n <div class=\"flex\">\n <libs_ui-components-buttons-button\n class=\"mr-[12px]\"\n label=\"i18n_cancel\"\n type=\"button-third\"\n (outClick)=\"handlerClickCancel($event)\" />\n <libs_ui-components-buttons-button\n label=\"i18n_select\"\n (outClick)=\"handlerClickApply($event)\" />\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, model, OnDestroy, output, signal, untracked } from '@angular/core';\nimport { IFlagMouse, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { TYPE_OBJECT } from '@libs-ui/interfaces-types';\nimport { getDayjs } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Dayjs } from 'dayjs';\nimport { getDateOptionsDefault, getDateRangeDefault } from '../defines/date-options.define';\nimport { IEmitDateCalendar, IEmitDateRange, IEmitSingleDate } from '../interfaces/calendar-emit.interface';\nimport { IDateRange } from '../interfaces/calendar-variables.interface';\nimport { ICalendarFunctionControlEvent } from '../interfaces/function-control.interface';\nimport { LocalizationConfig } from '../interfaces/picker.interface';\nimport { LibsUiComponentsDatetimePickerCustomRangesCalendarComponent } from './calendar/calendar.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-picker-custom_ranges',\n templateUrl: './custom-ranges.component.html',\n styleUrls: ['./custom-ranges.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsDatetimePickerCustomRangesCalendarComponent, LibsUiComponentsPopoverComponent],\n})\nexport class LibsUiComponentsDatetimePickerCustomRangesComponent implements OnDestroy {\n /** PROPERTY */\n protected showCalTableInRanges = signal<boolean>(false);\n protected quickRangesArray = signal<Array<IDateRange>>([]);\n protected selectedQuickRange = signal<string>(''); // quick range đã được lưu trước đó\n protected chosenQuickRange = signal<string | undefined>(undefined); // quick range đang được chọn\n\n private calendarShowing = signal<boolean>(false);\n private timeouts = signal<Array<number>>([]);\n private calendarFunctionControlEvent = signal<ICalendarFunctionControlEvent | undefined>(undefined);\n private chosenSingleDate = signal<IEmitSingleDate | undefined>(undefined);\n private chosenDateRange = signal<IEmitDateRange | undefined>(undefined);\n\n /** INPUT */\n // readonly SelectedQuickRange = input<string>('');\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly classInclude = input<string>('');\n readonly extendRanges = input<Array<IDateRange>>([]);\n readonly widthByParent = input<boolean>(false);\n readonly autoApply = input<boolean>(false);\n readonly minDate = input<Dayjs | string | undefined>();\n readonly maxDate = input<Dayjs | string | undefined>();\n readonly listYearHiddenInputSearch = input<boolean, boolean | undefined>(true, { transform: (value) => value ?? true });\n\n readonly positionQuickRanges = input<'left' | 'right', 'left' | 'right'>('left', { transform: (value) => value ?? 'left' });\n readonly isSingle = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly hasTimePicker = input<boolean>(true);\n readonly flagMouse = input<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n readonly dateOptions = input<LocalizationConfig>(getDateOptionsDefault());\n readonly alwaysShowCalendars = input<boolean>(false);\n readonly startDate = model<Dayjs | undefined>(getDayjs().startOf('day'));\n readonly endDate = model<Dayjs | undefined>(getDayjs().endOf('day'));\n readonly showCustomRangeLabel = input<boolean | undefined>(undefined);\n readonly keepCalendarOpeningWithRange = input<boolean | undefined>(undefined);\n\n readonly singleDateSelected = input<IEmitSingleDate | undefined, IEmitSingleDate | undefined>(undefined, {\n transform: (value) => {\n if (!value || !value.date) {\n return;\n }\n let date = value.date;\n\n if (typeof date === 'string') {\n date = getDayjs({ date, returnDayjsIfConfigDateNotExist: true });\n }\n\n return {\n ...value,\n date,\n };\n },\n });\n readonly dateRangeSelected = input<IEmitDateRange | undefined, IEmitDateRange | undefined>(undefined, {\n transform: (value) => {\n if (!value) {\n return;\n }\n let startDate = value.startDate;\n let endDate = value.endDate;\n\n if (typeof startDate === 'string') {\n startDate = getDayjs({ date: startDate, returnDayjsIfConfigDateNotExist: true });\n }\n\n if (typeof endDate === 'string') {\n endDate = getDayjs({ date: endDate, returnDayjsIfConfigDateNotExist: true });\n }\n\n return {\n ...value,\n startDate,\n endDate,\n };\n },\n });\n\n /** OUTPUT */\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outUpdateWidth = output<number>();\n readonly outCancel = output<string>();\n readonly outSelectSingleDate = output<IEmitSingleDate>();\n readonly outSelectDateRange = output<IEmitDateRange>();\n readonly outClickMenuRangeCustom = output<TYPE_OBJECT>();\n\n constructor() {\n effect(() => untracked(this.onAfterViewInit.bind(this)));\n }\n\n private onAfterViewInit() {\n if (!this.startDate()) {\n this.startDate.set(getDayjs().startOf('day'));\n }\n if (!this.endDate()) {\n this.endDate.set(getDayjs().endOf('day'));\n }\n const dateRangeSelected = this.dateRangeSelected();\n const singleDateSelected = this.singleDateSelected();\n const customRange = {\n id: this.dateOptions()?.customRangeLabel || '',\n label: this.dateOptions()?.customRangeLabel || '',\n };\n\n if (this.isSingle()) {\n if (this.hasTimePicker()) {\n const now = getDayjs();\n this.startDate.update((current) => {\n return current?.set('hour', now.hour()).set('minute', now.minute());\n });\n this.endDate.update((current) => {\n return current?.set('hour', now.hour()).set('minute', now.minute());\n });\n }\n if (singleDateSelected?.date) {\n this.startDate.set(getDayjs({ date: singleDateSelected.date }));\n this.endDate.set(getDayjs({ date: singleDateSelected.date }));\n }\n this.renderRanges();\n\n return;\n }\n\n if (dateRangeSelected) {\n this.selectedQuickRange.set(dateRangeSelected.quickRangeId ? dateRangeSelected.quickRangeId : customRange.id);\n this.chosenQuickRange.set(dateRangeSelected.quickRangeId ?? customRange.id);\n\n this.startDate.set(getDayjs({ date: dateRangeSelected.startDate }));\n this.endDate.set(getDayjs({ date: dateRangeSelected.endDate }));\n }\n if (this.hasTimePicker()) {\n this.selectedQuickRange.set(customRange.id);\n this.chosenQuickRange.set(customRange.id);\n }\n if (this.selectedQuickRange() === this.dateOptions()?.customRangeLabel) {\n this.showCalTableInRanges.set(true);\n }\n this.renderRanges();\n }\n\n private updateWidth() {\n const timeoutId = setTimeout(() => {\n this.outUpdateWidth.emit(1);\n }) as unknown as number;\n\n this.timeouts.update((ids) => [...ids, timeoutId]);\n }\n\n private renderRanges() {\n if (this.isSingle()) {\n this.showCalTableInRanges.set(true);\n\n return;\n }\n const rangesDefault = getDateRangeDefault();\n const ranges = this.dateOptions()?.ranges;\n\n this.quickRangesArray.set([]);\n\n for (const key in ranges) {\n const rangeValue = rangesDefault[key];\n const start = getDayjs({ date: rangeValue[0], returnDayjsIfConfigDateNotExist: true });\n const end = getDayjs({ date: rangeValue[1], returnDayjsIfConfigDateNotExist: true });\n\n this.quickRangesArray.update((current) => {\n current.push({\n id: key,\n label: ranges[key],\n values: [start, end],\n });\n\n return current;\n });\n }\n if (this.showCustomRangeLabel() && this.dateOptions()?.customRangeLabel) {\n this.quickRangesArray.update((current) => {\n current.push({\n id: this.dateOptions()?.customRangeLabel || '',\n label: this.dateOptions()?.customRangeLabel || '',\n });\n\n return current;\n });\n }\n if (this.extendRanges()) {\n this.quickRangesArray.update((current) => {\n current.unshift(...this.extendRanges());\n\n return current;\n });\n }\n if (!this.quickRangesArray().length) {\n this.showCalTableInRanges.set(true);\n }\n }\n\n protected handlerCancel() {\n this.outCancel.emit('');\n }\n\n protected handlerPickerDate(event: IEmitDateCalendar) {\n this.chosenSingleDate.set({\n displayLabel: event.displayLabel,\n date: event.startDate,\n values: event.detailDatePicker.start(),\n });\n if (!this.isSingle() && event.startDate && !event.endDate) {\n const endTime = event.detailDatePicker.end();\n event.endDate = event.startDate\n .clone()\n .hour(endTime.hour as number)\n .minute(endTime.minute as number)\n .second(59);\n }\n this.chosenDateRange.set({\n quickRangeId: this.chosenQuickRange(),\n ...event,\n });\n const chosenSingleDate = this.chosenSingleDate();\n const chosenDateRange = this.chosenDateRange();\n if (this.isSingle() && chosenSingleDate) {\n this.outSelectSingleDate.emit(chosenSingleDate);\n\n return;\n }\n if (!chosenDateRange || (!chosenDateRange.startDate && !chosenDateRange.endDate)) {\n return;\n }\n this.outSelectDateRange.emit(chosenDateRange);\n }\n\n protected handlerClickRange(e: Event, range: IDateRange) {\n e.stopPropagation();\n\n this.chosenQuickRange.set(range.id);\n\n if (range.id === this.dateOptions()?.customRangeLabel) {\n if (!this.calendarShowing() && !this.showCalTableInRanges()) {\n this.calendarShowing.set(true);\n this.showCalTableInRanges.set(true);\n this.outClickMenuRangeCustom.emit(range);\n this.updateWidth();\n }\n return;\n }\n this.updateWidth();\n if (this.extendRanges()) {\n const findExternalRange = this.extendRanges().find((item) => item.label === range.id);\n\n if (findExternalRange && range.id === findExternalRange.label) {\n if (findExternalRange.values) {\n this.outSelectDateRange.emit({ quickRangeId: findExternalRange.id, displayLabel: findExternalRange.label, startDate: findExternalRange.values[0], endDate: findExternalRange.values[1] });\n\n return;\n }\n this.outSelectDateRange.emit({ quickRangeId: findExternalRange.id, displayLabel: findExternalRange.label, startDate: undefined, endDate: undefined });\n\n return;\n }\n }\n // const dates = range.values ?? [];\n\n // this.startDate.set(dates[0].clone().hour(0).minute(0).second(0));\n // this.endDate.set(dates[1].clone().hour(23).minute(59).second(59));\n // this.timeValue = { hour: 0, toHour: 0, minute: 23, toMinute: 59 };\n // this.timepickerVariables.left.selectedHour = 0;\n // this.timepickerVariables.left.selectedMinute = 0;\n // this.timepickerVariables.right.selectedHour = 23;\n // this.timepickerVariables.right.selectedMinute = 59;\n\n // this.showRangeLabelOnInput && label !== this.localeDay.customRangeLabel ? this.chosenLabel = label : this.calculateChosenLabel();\n\n // // this.autoApply.set(true);\n // if (!this.hasTimePicker()) {\n // if(this.startDate()) {\n // this.startDate.set(this.startDate()?.startOf('day'));\n // }\n // if(this.endDate()) {\n // this.endDate.set(this.endDate()?.endOf('day'));\n // }\n // }\n // if (!this.alwaysShowCalendars()) {\n // this.calendarShowing.set(false);\n // }\n // this.outClickRange.emit(range);\n\n if (!this.keepCalendarOpeningWithRange() || !this.alwaysShowCalendars()) {\n this.outSelectDateRange.emit({ quickRangeId: range.id, displayLabel: range.label, startDate: range.values?.[0], endDate: range.values?.[1] });\n\n return;\n }\n // if (this.timePicker) {\n // this.renderTimePicker(SideEnum.left);\n // this.renderTimePicker(SideEnum.right);\n // }\n // if (this.getMaxDate() && this.getMaxDate().isSame(dates[0], 'month')) {\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.month(dates[0].month());\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.year(dates[0].year());\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.month(dates[0].month() - 1);\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.year(dates[1].year());\n\n // return this.updateCalendars();\n // }\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.month(dates[0].month());\n // this.leftCalendar.month = this.leftCalendar.month && this.leftCalendar.month.year(dates[0].year());\n // const nextMonth = dates[0].clone().add(1, 'month');\n\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.month(nextMonth.month());\n // this.rightCalendar.month = this.rightCalendar.month && this.rightCalendar.month.year(nextMonth.year());\n // this.updateCalendars();\n\n return;\n }\n\n protected handlerClickCancel(event: Event) {\n event.stopPropagation();\n // this.startDate.set(dayjs(0));\n // this.endDate.set(dayjs(0));\n this.outCancel.emit('');\n }\n\n protected handlerChangeFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n\n protected handlerFunctionsControl(event: ICalendarFunctionControlEvent) {\n this.calendarFunctionControlEvent.set(event);\n }\n\n ngOnDestroy() {\n this.timeouts().forEach((item) => clearTimeout(item));\n // this.onDestroy.next();\n // this.onDestroy.complete();\n }\n}\n","<div\n #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div\n class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div\n class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div\n LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{ maxWidth: 160, direction: 'top', zIndex: (zIndex() || 1000) + 1 }\"\n [innerHTML]=\"range.label\"></div>\n </div>\n <i\n class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar\n [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { ILabel, LibsUiComponentsLabelComponent } from '@libs-ui/components-label';\nimport { IFlagMouse, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { TYPE_OBJECT } from '@libs-ui/interfaces-types';\nimport { ERROR_MESSAGE_EMPTY_VALID, getDayjs } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Dayjs } from 'dayjs';\nimport { LibsUiComponentsDatetimePickerCustomRangesComponent } from './custom-ranges/custom-ranges.component';\nimport { getDateOptionsDefault } from './defines/date-options.define';\nimport { IEmitDateRange, IEmitSingleDate } from './interfaces/calendar-emit.interface';\nimport { IDateRange } from './interfaces/calendar-variables.interface';\nimport { IDateTimePickerFunctionControlEvent } from './interfaces/function-control.interface';\nimport { IChosenDate, LocalizationConfig, TYPE_RANGE_KEY } from './interfaces/picker.interface';\nimport { IDateTimeValid } from './interfaces/valid.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-picker',\n templateUrl: './picker.component.html',\n styleUrls: ['./picker.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsDatetimePickerCustomRangesComponent],\n})\nexport class LibsUiComponentsDatetimePickerComponent implements OnInit, OnDestroy {\n /** PROPERTY */\n protected readonly ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;\n protected showRangesPopup = signal<boolean>(false);\n protected width = computed(this.computedWidth.bind(this));\n protected singleError = signal<IDateTimeValid>({ message: undefined });\n protected chosenDateFromRanges = signal<IChosenDate>({});\n protected selectedDateFromCalendar!: { start?: Dayjs; end?: Dayjs };\n protected displayRangeTitle = computed(() => {\n const selectedLabel = this.chosenDateFromRanges().selectedLabel as TYPE_RANGE_KEY;\n\n if (this.isSingle() || !selectedLabel) {\n return;\n }\n\n return selectedLabel;\n });\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n /** INPUT */\n readonly dateOptions = input<LocalizationConfig, LocalizationConfig | undefined>(getDateOptionsDefault(), { transform: (value) => value ?? getDateOptionsDefault() });\n readonly showCustomRangeLabel = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly labelConfig = input<ILabel>();\n readonly disable = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly classInclude = input<string>('');\n readonly classPickerInclude = input<string>('');\n readonly classPickerContentInclude = input<string>('');\n readonly ignoreBorderQuickRange = input<boolean>(false);\n readonly useColorModeExist = input<boolean>(false);\n readonly hasTimePicker = input<boolean>(true);\n readonly allowReset = input<boolean>(true);\n readonly widthByLabel = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly directionPopover = input<TYPE_POPOVER_DIRECTION, TYPE_POPOVER_DIRECTION | undefined>('bottom', { transform: (value) => value ?? 'bottom' });\n readonly defaultWidth = input<number | undefined>(undefined);\n readonly isSingle = input<boolean>(false);\n readonly extendRanges = input<Array<IDateRange>>([]);\n readonly isBorderError = input<boolean>(false);\n readonly minDate = input<Dayjs | string | undefined>();\n readonly maxDate = input<Dayjs | string | undefined>();\n readonly placeholder = input<string>();\n readonly listYearHiddenInputSearch = input<boolean, boolean | undefined>(false, { transform: (value) => value ?? false });\n\n readonly validRequired = input<IDateTimeValid | undefined>(undefined);\n readonly ignoreStopPropagationEvent = input<boolean>(false);\n readonly flagMouse = model<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false });\n readonly widthByParent = input<boolean>(false);\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly rangesPopoverPosition = input<'start' | 'center' | 'end', 'start' | 'center' | 'end'>('start', { transform: (value) => value ?? 'start' });\n readonly rangesPopoverPositionDistance = input<number, number>(0, { transform: (value) => value ?? 0 });\n readonly isNgContent = input<boolean>(false);\n readonly classIncludeCustomRanges = input<string>('');\n readonly autoApply = input<boolean>(false);\n readonly positionQuickRanges = input<'left' | 'right'>('left'); // vị trí list chọn nhanh khoảng thời gian\n readonly trackDateRageUpdateLabel = input<boolean>(false);\n\n readonly singleDateSelected = model<IEmitSingleDate>();\n readonly dateRangeSelected = model<IEmitDateRange>();\n\n /** OUTPUT */\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outReset = output<IEmitDateRange | IEmitSingleDate | undefined>();\n readonly outSelectSingleDate = output<IEmitSingleDate>();\n readonly outSelectDateRange = output<IEmitDateRange>();\n readonly outFunctionsControl = output<IDateTimePickerFunctionControlEvent>();\n\n constructor() {\n effect(() => {\n const date = this.singleDateSelected()?.date;\n\n if (date) {\n untracked(() => {\n const formatDate = this.hasTimePicker() ? 'DD/MM/YYYY HH:mm' : 'DD/MM/YYYY';\n const startTime = getDayjs({ date }).format(formatDate);\n this.chosenDateFromRanges.set({ selectedLabel: startTime });\n });\n }\n });\n effect(() => {\n if (this.trackDateRageUpdateLabel()) {\n this.updateChosenDateFromRangesFromDateRangeSelected(this.dateRangeSelected() as IEmitDateRange);\n\n return;\n }\n untracked(() => this.updateChosenDateFromRangesFromDateRangeSelected(this.dateRangeSelected() as IEmitDateRange));\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit(this.FunctionsControl);\n }\n\n public get FunctionsControl(): IDateTimePickerFunctionControlEvent {\n return {\n checkIsValid: this.checkIsValid.bind(this),\n resetError: this.resetError.bind(this),\n reset: this.reset.bind(this),\n };\n }\n\n protected handlerSelectRanges(event: Event) {\n event.stopPropagation();\n }\n\n protected handlerChangStageFlagMouse(flagMouse: IFlagMouse) {\n this.flagMouse.set(flagMouse);\n }\n\n protected handlerChangStagePopoverFlagMouse(flagMouse: IFlagMouse) {\n if (this.flagMouse()?.isMouseEnterContent) {\n flagMouse.isMouseEnterContent = true;\n }\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n\n protected handlerFunctionControl(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event === 'remove') {\n this.showRangesPopup.set(false);\n }\n }\n\n protected async handlerPickerSingleDate(data: IEmitSingleDate) {\n this.outSelectSingleDate.emit(data);\n this.chosenDateFromRanges.set({ selectedLabel: data.displayLabel });\n if (this.hasTimePicker()) {\n const startTime = getDayjs({ date: data.date, returnDayjsIfConfigDateNotExist: true }).format('DD/MM/YYYY HH:mm');\n\n this.chosenDateFromRanges.update((current) => {\n current.selectedLabel = `${startTime}`;\n return current;\n });\n }\n this.singleDateSelected.set(data);\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n await this.checkIsValid();\n }\n\n protected async handlerPickerDateRange(data: IEmitDateRange) {\n if ((data.displayLabel?.indexOf('Invalid Date') ?? -1) > -1) {\n return;\n }\n // this.selectedKey = data.selectedLabel;\n this.chosenDateFromRanges.set({ selectedLabel: data.displayLabel });\n\n // this.selected.start = getDayjs<Dayjs>({date:data.startDate});\n // this.selected.end = getDayjs<Dayjs>({date:data.endDate});\n if (this.hasTimePicker()) {\n const startTime = getDayjs({ date: data.startDate, returnDayjsIfConfigDateNotExist: true }).format('DD/MM/YYYY HH:mm');\n const endTime = getDayjs({ date: data.endDate, returnDayjsIfConfigDateNotExist: true }).format('DD/MM/YYYY HH:mm');\n\n this.chosenDateFromRanges.update((current) => {\n current.selectedLabel = `${startTime} - ${endTime}`;\n return current;\n });\n }\n // this.moDatePicker.emit(this.singleDatePicker ? { chosenLabel: this.dateValue.chosenLabel, singleDate: this.dateValue.startDate?.utc(), startDate: this.dateValue.startDate?.utc(), endDate: this.dateValue.endDate?.utc() } : { chosenLabel: this.dateValue.chosenLabel, startDate: this.dateValue.startDate?.utc(), endDate: this.dateValue.endDate?.utc() });\n const showViewExternalRangeLabel = this.extendRanges()?.find((item) => item.id === this.chosenDateFromRanges().selectedLabel);\n\n if (this.extendRanges() && showViewExternalRangeLabel) {\n this.chosenDateFromRanges.update((current) => {\n current.selectedLabel = showViewExternalRangeLabel && showViewExternalRangeLabel.label;\n return current;\n });\n }\n\n this.dateRangeSelected.set({ quickRangeId: data.quickRangeId, displayLabel: data.displayLabel, startDate: data.startDate, endDate: data.endDate });\n this.outSelectDateRange.emit({ quickRangeId: data.quickRangeId, displayLabel: data.displayLabel, startDate: data.startDate, endDate: data.endDate });\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n await this.checkIsValid();\n }\n\n private updateChosenDateFromRangesFromDateRangeSelected(dateRangeSelected?: IEmitDateRange) {\n untracked(() => {\n if (dateRangeSelected?.quickRangeId) {\n const findKeyRange = Object.keys(this.dateOptions().ranges).find((key) => key === dateRangeSelected?.quickRangeId);\n if (findKeyRange) {\n this.chosenDateFromRanges.set({ selectedLabel: this.dateOptions().ranges[findKeyRange] });\n return;\n }\n }\n if (dateRangeSelected?.startDate && dateRangeSelected?.endDate) {\n const formatDate = this.hasTimePicker() ? 'DD/MM/YYYY HH:mm' : 'DD/MM/YYYY';\n const startTime = getDayjs({ date: dateRangeSelected?.startDate })?.format(formatDate);\n const endTime = getDayjs({ date: dateRangeSelected?.endDate })?.format(formatDate);\n\n this.chosenDateFromRanges.set({ selectedLabel: `${startTime} - ${endTime}` });\n }\n });\n }\n\n protected async handlerReset(event?: Event) {\n event?.stopPropagation();\n await this.reset(true);\n }\n\n private async reset(checkIsValid?: boolean, dateRangeReset?: IEmitDateRange, singleDateReset?: IEmitSingleDate) {\n this.chosenDateFromRanges.set({});\n this.dateRangeSelected.set(dateRangeReset);\n if (dateRangeReset) {\n this.updateChosenDateFromRangesFromDateRangeSelected(dateRangeReset);\n }\n if (singleDateReset) {\n this.singleDateSelected.set(singleDateReset);\n }\n this.outReset.emit(dateRangeReset || singleDateReset);\n if (checkIsValid && this.validRequired()) {\n await this.checkIsValid();\n }\n }\n\n protected handlerUpdateWidth() {\n this.popoverFunctionControlEvent()?.updatePopoverOverlayPosition();\n }\n\n protected handlerCancel() {\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n }\n\n private async checkIsValid() {\n if (this.readonly() || this.disable()) {\n return true;\n }\n await this.validate();\n\n return this.singleError().message ? false : true;\n }\n\n private async validate() {\n this.singleError.set({ message: undefined });\n\n if (!this.validRequired()) {\n return;\n }\n\n if (this.validRequired() && !this.chosenDateFromRanges().selectedLabel) {\n this.singleError.set({\n message: this.validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID,\n interpolateParams: this.validRequired()?.interpolateParams || {},\n });\n\n return;\n }\n }\n\n private async resetError(message?: string, interpolateParams?: TYPE_OBJECT) {\n this.singleError.set({ message, interpolateParams });\n }\n\n private computedWidth() {\n if (this.widthByLabel()) {\n return;\n }\n\n if (this.defaultWidth()) {\n return this.defaultWidth();\n }\n\n if (this.hasTimePicker()) {\n return !this.isSingle() ? 322 : 190;\n }\n return !this.isSingle() ? 232 : 152;\n }\n\n ngOnDestroy() {\n return;\n }\n}\n","<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span>&nbsp;hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span>&nbsp;hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span>&nbsp;hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n @let constHtmlMessage = singleError().message || ERROR_MESSAGE_EMPTY_VALID;\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}