ngx-jalali-date-picker
Version:
This is a configurable date-picker build for Angular applications. Supports latest (Angular 18) version. This date-picker is based on ng2-date-piker and ngx-jalali-date-picker date pickers.
1 lines • 217 kB
Source Map (JSON)
{"version":3,"file":"ngx-jalali-date-picker.mjs","sources":["../../../projects/ngx-jalali-date-picker/src/lib/common/types/calendar-mode-enum.ts","../../../projects/ngx-jalali-date-picker/src/lib/common/types/calendar-value-enum.ts","../../../projects/ngx-jalali-date-picker/src/lib/common/types/selection-event.enum.ts","../../../projects/ngx-jalali-date-picker/src/lib/common/services/utils/utils.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/day-calendar/day-calendar.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/time-select/time-select.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/day-time-calendar/day-time-calendar.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/date-picker/date-picker.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/common/services/dom-appender/dom-appender.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/month-calendar/month-calendar.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/calendar-nav/calendar-nav.component.ts","../../../projects/ngx-jalali-date-picker/src/lib/calendar-nav/calendar-nav.component.html","../../../projects/ngx-jalali-date-picker/src/lib/month-calendar/month-calendar.component.ts","../../../projects/ngx-jalali-date-picker/src/lib/month-calendar/month-calendar.component.html","../../../projects/ngx-jalali-date-picker/src/lib/day-calendar/day-calendar.component.ts","../../../projects/ngx-jalali-date-picker/src/lib/day-calendar/day-calendar.component.html","../../../projects/ngx-jalali-date-picker/src/lib/time-select/time-select.component.ts","../../../projects/ngx-jalali-date-picker/src/lib/time-select/time-select.component.html","../../../projects/ngx-jalali-date-picker/src/lib/day-time-calendar/day-time-calendar.component.ts","../../../projects/ngx-jalali-date-picker/src/lib/day-time-calendar/day-time-calendar.component.html","../../../projects/ngx-jalali-date-picker/src/lib/date-picker/date-picker.component.ts","../../../projects/ngx-jalali-date-picker/src/lib/date-picker/date-picker.component.html","../../../projects/ngx-jalali-date-picker/src/lib/date-picker/date-picker-directive.service.ts","../../../projects/ngx-jalali-date-picker/src/lib/date-picker/date-picker.directive.ts","../../../projects/ngx-jalali-date-picker/src/lib/date-picker.module.ts","../../../projects/ngx-jalali-date-picker/src/ngx-jalali-date-picker.ts"],"sourcesContent":["export enum ECalendarMode {\n Day,\n DayTime,\n Month,\n Time\n}\n","export enum ECalendarValue {\n Moment = 1,\n MomentArr,\n String,\n StringArr\n}\n","export enum SelectEvent {\n INPUT = 'input',\n SELECTION = 'selection'\n}\n","import {ECalendarValue} from '../../types/calendar-value-enum';\nimport {SingleCalendarValue} from '../../types/single-calendar-value';\nimport {Injectable} from '@angular/core';\nimport moment from 'jalali-moment';\nimport {Moment, MomentInput, unitOfTime} from 'jalali-moment';\nimport {CalendarValue} from '../../types/calendar-value';\nimport {IDate} from '../../models/date.model';\nimport {CalendarMode} from '../../types/calendar-mode';\nimport {DateValidator} from '../../types/validator.type';\nimport {ICalendarInternal} from '../../models/calendar.model';\n\n//const moment = momentNs;\n\nexport interface DateLimits {\n minDate?: SingleCalendarValue;\n maxDate?: SingleCalendarValue;\n minTime?: SingleCalendarValue;\n maxTime?: SingleCalendarValue;\n}\n\n@Injectable()\nexport class UtilsService {\n static debounce(func: Function, wait: number) {\n let timeout;\n return function () {\n const context = this, args = arguments;\n timeout = clearTimeout(timeout);\n setTimeout(() => {\n func.apply(context, args);\n }, wait);\n };\n };\n\n createArray(size: number): number[] {\n return new Array(size).fill(1);\n }\n\n convertToMoment(date: SingleCalendarValue, format: string, locale?: string): Moment {\n let m;\n if (!date) {\n m = null;\n } else if (typeof date === 'string') {\n m = moment(date, format);\n } else {\n m = date.clone();\n }\n if (m && locale) {\n m.locale(locale);\n }\n return m;\n }\n\n isDateValid(date: string, format: string, locale?: string): boolean {\n if (date === '') {\n return true;\n }\n if (date.length !== format.length) {\n return false;\n }\n return moment.from(date, locale || 'fa', format).isValid();\n // return moment(date, format, true).isValid();\n }\n\n // todo:: add unit test\n getDefaultDisplayDate(current: Moment,\n selected: Moment[],\n allowMultiSelect: boolean,\n minDate: Moment,\n locale: string): Moment {\n let m = moment();\n if (current) {\n m = current.clone();\n } else if (minDate && minDate.isAfter(moment())) {\n m = minDate.clone();\n } else if (allowMultiSelect) {\n if (selected && selected[selected.length]) {\n m = selected[selected.length].clone();\n }\n } else if (selected && selected[0]) {\n m = selected[0].clone();\n }\n if (locale) {\n m.locale(locale);\n }\n return m;\n }\n\n // todo:: add unit test\n getInputType(value: CalendarValue, allowMultiSelect: boolean): ECalendarValue {\n if (Array.isArray(value)) {\n if (!value.length) {\n return ECalendarValue.MomentArr;\n } else if (typeof value[0] === 'string') {\n return ECalendarValue.StringArr;\n } else if (moment.isMoment(value[0])) {\n return ECalendarValue.MomentArr;\n }\n } else {\n if (typeof value === 'string') {\n return ECalendarValue.String;\n } else if (moment.isMoment(value)) {\n return ECalendarValue.Moment;\n }\n }\n\n return allowMultiSelect ? ECalendarValue.MomentArr : ECalendarValue.Moment;\n }\n\n // todo:: add unit test\n convertToMomentArray(value: CalendarValue, format: string, allowMultiSelect: boolean, locale: string): Moment[] {\n switch (this.getInputType(value, allowMultiSelect)) {\n case (ECalendarValue.String):\n return value ? [moment(<string>value, format, true).locale(locale)] : [];\n case (ECalendarValue.StringArr):\n return (<string[]>value).map(v => v ? moment(v, format, true).locale(locale) : null).filter(Boolean);\n case (ECalendarValue.Moment):\n return value ? [(<Moment>value).clone().locale(locale)] : [];\n case (ECalendarValue.MomentArr):\n return (<Moment[]>value || []).map(v => v.clone().locale(locale));\n default:\n return [];\n }\n }\n\n // todo:: add unit test\n convertFromMomentArray(format: string,\n value: Moment[],\n convertTo: ECalendarValue,\n locale: string): CalendarValue {\n switch (convertTo) {\n case (ECalendarValue.String):\n return value[0] && value[0].locale(locale).format(format);\n case (ECalendarValue.StringArr):\n return value.filter(Boolean).map(v => v.locale(locale).format(format));\n case (ECalendarValue.Moment):\n return value[0] ? value[0].clone().locale(locale) : value[0];\n case (ECalendarValue.MomentArr):\n return value ? value.map(v => v.clone().locale(locale)) : value;\n default:\n return value;\n }\n }\n\n convertToString(value: CalendarValue, format: string, locale?: string): string {\n let tmpVal: string[];\n\n if (typeof value === 'string') {\n tmpVal = [value];\n } else if (Array.isArray(value)) {\n if (value.length) {\n tmpVal = (<SingleCalendarValue[]>value).map((v) => {\n return this.convertToMoment(v, format, locale).format(format);\n });\n } else {\n tmpVal = <string[]>value;\n }\n } else if (moment.isMoment(value)) {\n tmpVal = [value.format(format)];\n } else {\n return '';\n }\n\n return tmpVal.filter(Boolean).join(' | ');\n }\n\n // todo:: add unit test\n clearUndefined<T>(obj: T): T {\n if (!obj) {\n return obj;\n }\n\n Object.keys(obj).forEach((key) => (obj[key] === undefined) && delete obj[key]);\n return obj;\n }\n\n updateSelected(isMultiple: boolean,\n currentlySelected: Moment[],\n date: IDate,\n granularity: unitOfTime.Base = 'day'): Moment[] {\n const isSelected = !date.selected;\n if (isMultiple) {\n return isSelected\n ? currentlySelected.concat([date.date])\n : currentlySelected.filter(d => !d.isSame(date.date, granularity));\n } else {\n return isSelected ? [date.date] : [];\n }\n }\n\n closestParent(element: HTMLElement, selector: string): HTMLElement {\n if (!element) {\n return undefined;\n }\n const match = <HTMLElement>element.querySelector(selector);\n return match || this.closestParent(element.parentElement, selector);\n }\n\n onlyTime(m: Moment): Moment {\n return m && moment.isMoment(m) && moment(m.format('HH:mm:ss'), 'HH:mm:ss');\n }\n\n granularityFromType(calendarType: CalendarMode): unitOfTime.Base {\n switch (calendarType) {\n case 'time':\n return 'second';\n case 'daytime':\n return 'second';\n default:\n return calendarType;\n }\n }\n\n createValidator({minDate, maxDate, minTime, maxTime}: DateLimits,\n format: string,\n calendarType: CalendarMode,\n locale: string): DateValidator {\n let isValid: boolean;\n let value: Moment[];\n const validators = [];\n const granularity = this.granularityFromType(calendarType);\n\n if (minDate) {\n const md = this.convertToMoment(minDate, format, locale);\n validators.push({\n key: 'minDate',\n isValid: () => {\n const _isValid = value.every(val => val.isSameOrAfter(md, granularity));\n isValid = isValid ? _isValid : false;\n return _isValid;\n }\n });\n }\n\n if (maxDate) {\n const md = this.convertToMoment(maxDate, format, locale);\n validators.push({\n key: 'maxDate',\n isValid: () => {\n const _isValid = value.every(val => val.isSameOrBefore(md, granularity));\n isValid = isValid ? _isValid : false;\n return _isValid;\n }\n });\n }\n\n if (minTime) {\n const md = this.onlyTime(this.convertToMoment(minTime, format, locale));\n validators.push({\n key: 'minTime',\n isValid: () => {\n const _isValid = value.every(val => this.onlyTime(val).isSameOrAfter(md));\n isValid = isValid ? _isValid : false;\n return _isValid;\n }\n });\n }\n\n if (maxTime) {\n const md = this.onlyTime(this.convertToMoment(maxTime, format, locale));\n validators.push({\n key: 'maxTime',\n isValid: () => {\n const _isValid = value.every(val => this.onlyTime(val).isSameOrBefore(md));\n isValid = isValid ? _isValid : false;\n return _isValid;\n }\n });\n }\n\n return (inputVal: CalendarValue) => {\n isValid = true;\n\n value = this.convertToMomentArray(inputVal, format, true, locale).filter(Boolean);\n\n if (!value.every(val => val.isValid())) {\n return {\n format: {\n given: inputVal\n }\n };\n }\n\n const errors = validators.reduce((map, err) => {\n if (!err.isValid()) {\n map[err.key] = {\n given: value\n };\n }\n\n return map;\n }, {});\n\n return !isValid ? errors : null;\n };\n }\n\n datesStringToStringArray(value: string): string[] {\n return (value || '').split('|').map(m => m.trim()).filter(Boolean);\n }\n\n getValidMomentArray(value: string, format: string, locale: string): Moment[] {\n return this.datesStringToStringArray(value)\n .filter(d => this.isDateValid(d, format, locale))\n .map(d => moment(d, format));\n }\n\n shouldShowCurrent(showGoToCurrent: boolean,\n mode: CalendarMode,\n min: Moment,\n max: Moment): boolean {\n return showGoToCurrent &&\n mode !== 'time' &&\n this.isDateInRange(moment(), min, max);\n }\n\n isDateInRange(date: Moment, from: Moment, to: Moment): boolean {\n if (!from && !to) {return true}\n if (!from) return date.isBefore(to, 'day');\n if (!to) return date.isAfter(from, 'day');\n return date.isBetween(from, to, 'day', '[]');\n }\n\n convertPropsToMoment(obj: {[key: string]: any}, format: string, props: string[], locale?: string) {\n props.forEach((prop) => {\n if (obj.hasOwnProperty(prop)) {\n obj[prop] = this.convertToMoment(obj[prop], format, locale);\n }\n });\n }\n\n shouldResetCurrentView<T extends ICalendarInternal>(prevConf: T, currentConf: T): boolean {\n if (prevConf && currentConf) {\n if (!prevConf.min && currentConf.min) {\n return true;\n } else if (prevConf.min && currentConf.min && !prevConf.min.isSame(currentConf.min, 'd')) {\n return true;\n } else if (!prevConf.max && currentConf.max) {\n return true;\n } else if (prevConf.max && currentConf.max && !prevConf.max.isSame(currentConf.max, 'd')) {\n return true;\n }\n\n return false;\n }\n\n return false;\n }\n\n getNativeElement(elem: HTMLElement | string): HTMLElement {\n if (!elem) {\n return null;\n } else if (typeof elem === 'string') {\n return <HTMLElement>document.querySelector(elem);\n } else {\n return elem;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport moment, {Moment} from'jalali-moment';\nimport {WeekDays} from '../common/types/week-days.type';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDay} from './day.model';\nimport {IDayCalendarConfig, IDayCalendarConfigInternal} from './day-calendar-config.model';\nimport {IMonthCalendarConfig} from '../month-calendar/month-calendar-config';\n\n@Injectable()\nexport class DayCalendarService {\n readonly DEFAULT_CONFIG: IDayCalendarConfig = {\n showNearMonthDays: true,\n showWeekNumbers: false,\n firstDayOfWeek: 'su',\n weekDayFormat: 'ddd',\n format: 'DD-MM-YYYY',\n allowMultiSelect: false,\n monthFormat: 'MMM, YYYY',\n enableMonthSelector: true,\n locale: moment.locale(),\n dayBtnFormat: 'DD',\n unSelectOnClick: true\n };\n private readonly DAYS = ['su', 'mo', 'tu', 'we', 'th', 'fr', 'sa'];\n\n constructor(private utilsService: UtilsService) {\n }\n\n getConfig(config: IDayCalendarConfig): IDayCalendarConfigInternal {\n const _config = <IDayCalendarConfigInternal>{\n ...this.DEFAULT_CONFIG,\n ...this.utilsService.clearUndefined(config)\n };\n\n this.utilsService.convertPropsToMoment(_config, _config.format, ['min', 'max']);\n\n moment.locale(_config.locale);\n\n return _config;\n }\n\n generateDaysMap(firstDayOfWeek: WeekDays) {\n const firstDayIndex = this.DAYS.indexOf(firstDayOfWeek);\n const daysArr = this.DAYS.slice(firstDayIndex, 7).concat(this.DAYS.slice(0, firstDayIndex));\n return daysArr.reduce((map, day, index) => {\n map[day] = index;\n\n return map;\n }, <{[key: string]: number}>{});\n }\n\n generateMonthArray(config: IDayCalendarConfigInternal, month: Moment, selected: Moment[]): IDay[][] {\n const parsedMonth = month.isValid() ? month.clone() : moment();\n let monthArray: IDay[][] = [];\n const firstDayOfWeekIndex = this.DAYS.indexOf(config.firstDayOfWeek);\n const firstDayOfBoard = parsedMonth.clone().startOf('month');\n\n while (firstDayOfBoard.day() !== firstDayOfWeekIndex) {\n firstDayOfBoard.subtract(1, 'day');\n }\n\n const current = firstDayOfBoard.clone();\n const prevMonth = parsedMonth.clone().subtract(1, 'month');\n const nextMonth = parsedMonth.clone().add(1, 'month');\n const today = moment();\n\n const daysOfCalendar: IDay[] = this.utilsService.createArray(42)\n .reduce((array: IDay[]) => {\n array.push({\n date: current.clone(),\n selected: !!selected.find(selectedDay => current.isSame(selectedDay, 'day')),\n currentMonth: current.isSame(parsedMonth, 'month'),\n prevMonth: current.isSame(prevMonth, 'month'),\n nextMonth: current.isSame(nextMonth, 'month'),\n currentDay: current.isSame(today, 'day'),\n disabled: this.isDateDisabled(current, config)\n });\n current.add(1, 'day');\n\n return array;\n }, []);\n\n daysOfCalendar.forEach((day, index) => {\n const weekIndex = Math.floor(index / 7);\n\n if (!monthArray[weekIndex]) {\n monthArray.push([]);\n }\n\n monthArray[weekIndex].push(day);\n });\n\n if (!config.showNearMonthDays) {\n monthArray = this.removeNearMonthWeeks(parsedMonth, monthArray);\n }\n\n return monthArray;\n }\n\n generateWeekdays(firstDayOfWeek: WeekDays, locale?: string): Moment[] {\n const weekdayNames: {[key: string]: Moment} = ['su', 'mo', 'tu', 'we', 'th', 'fr', 'sa'].reduce((acc, d, i) => {\n const m = moment();\n if (locale) {\n m.locale(locale);\n }\n m.day(i);\n acc[d] = m;\n return acc;\n }, {});\n const weekdays: Moment[] = [];\n const daysMap = this.generateDaysMap(firstDayOfWeek);\n\n for (const dayKey in daysMap) {\n if (daysMap.hasOwnProperty(dayKey)) {\n weekdays[daysMap[dayKey]] = weekdayNames[dayKey];\n }\n }\n\n return weekdays;\n }\n\n isDateDisabled(date: Moment, config: IDayCalendarConfigInternal): boolean {\n if (config.isDayDisabledCallback) {\n return config.isDayDisabledCallback(date);\n }\n\n if (config.min && date.isBefore(config.min, 'day')) {\n return true;\n }\n\n return !!(config.max && date.isAfter(config.max, 'day'));\n }\n\n // todo:: add unit tests\n getHeaderLabel(config: IDayCalendarConfigInternal, month: Moment): string {\n if (config.monthFormatter) {\n return config.monthFormatter(month);\n }\n\n return month.format(config.monthFormat);\n }\n\n // todo:: add unit tests\n shouldShowLeft(min: Moment, currentMonthView: Moment): boolean {\n return min ? min.isBefore(currentMonthView, 'month') : true;\n }\n\n // todo:: add unit tests\n shouldShowRight(max: Moment, currentMonthView: Moment): boolean {\n return max ? max.isAfter(currentMonthView, 'month') : true;\n }\n\n generateDaysIndexMap(firstDayOfWeek: WeekDays) {\n const firstDayIndex = this.DAYS.indexOf(firstDayOfWeek);\n const daysArr = this.DAYS.slice(firstDayIndex, 7).concat(this.DAYS.slice(0, firstDayIndex));\n return daysArr.reduce((map, day, index) => {\n map[index] = day;\n\n return map;\n }, <{[key: number]: string}>{});\n }\n\n getMonthCalendarConfig(componentConfig: IDayCalendarConfigInternal): IMonthCalendarConfig {\n return this.utilsService.clearUndefined({\n min: componentConfig.min,\n max: componentConfig.max,\n format: componentConfig.format,\n isNavHeaderBtnClickable: true,\n allowMultiSelect: false,\n locale: componentConfig.locale,\n yearFormat: componentConfig.yearFormat,\n yearFormatter: componentConfig.yearFormatter,\n monthBtnFormat: componentConfig.monthBtnFormat,\n monthBtnFormatter: componentConfig.monthBtnFormatter,\n monthBtnCssClassCallback: componentConfig.monthBtnCssClassCallback,\n isMonthDisabledCallback: componentConfig.isMonthDisabledCallback,\n multipleYearsNavigateBy: componentConfig.multipleYearsNavigateBy,\n showMultipleYearsNavigation: componentConfig.showMultipleYearsNavigation,\n showGoToCurrent: componentConfig.showGoToCurrent,\n numOfMonthRows: componentConfig.numOfMonthRows\n });\n }\n\n getDayBtnText(config: IDayCalendarConfigInternal, day: Moment): string {\n if (config.dayBtnFormatter) {\n return config.dayBtnFormatter(day);\n }\n\n return day.format(config.dayBtnFormat);\n }\n\n getDayBtnCssClass(config: IDayCalendarConfigInternal, day: Moment): string {\n if (config.dayBtnCssClassCallback) {\n return config.dayBtnCssClassCallback(day);\n }\n\n return '';\n }\n\n private removeNearMonthWeeks(currentMonth: Moment, monthArray: IDay[][]): IDay[][] {\n if (monthArray[monthArray.length - 1].find((day) => day.date.isSame(currentMonth, 'month'))) {\n return monthArray;\n } else {\n return monthArray.slice(0, -1);\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport moment, {Moment} from'jalali-moment';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {ITimeSelectConfig, ITimeSelectConfigInternal} from './time-select-config.model';\n\n\n\nexport type TimeUnit = 'hour' | 'minute' | 'second';\nexport const FIRST_PM_HOUR = 12;\n\n@Injectable()\nexport class TimeSelectService {\n readonly DEFAULT_CONFIG: ITimeSelectConfigInternal = {\n hours12Format: 'hh',\n hours24Format: 'HH',\n meridiemFormat: 'A',\n minutesFormat: 'mm',\n minutesInterval: 1,\n secondsFormat: 'ss',\n secondsInterval: 1,\n showSeconds: false,\n showTwentyFourHours: false,\n timeSeparator: ':',\n locale: moment.locale()\n };\n\n constructor(private readonly utilsService: UtilsService) {\n }\n\n getConfig(config: ITimeSelectConfig): ITimeSelectConfigInternal {\n const timeConfigs = {\n maxTime: this.utilsService.onlyTime(config && config.maxTime),\n minTime: this.utilsService.onlyTime(config && config.minTime)\n };\n\n const _config = <ITimeSelectConfigInternal>{\n ...this.DEFAULT_CONFIG,\n ...this.utilsService.clearUndefined(config),\n ...timeConfigs\n };\n\n moment.locale(_config.locale);\n\n return _config;\n }\n\n getTimeFormat(config: ITimeSelectConfigInternal): string {\n return (config.showTwentyFourHours ? config.hours24Format : config.hours12Format)\n + config.timeSeparator + config.minutesFormat\n + (config.showSeconds ? (config.timeSeparator + config.secondsFormat) : '')\n + (config.showTwentyFourHours ? '' : ' ' + config.meridiemFormat);\n }\n\n getHours(config: ITimeSelectConfigInternal, t: Moment | null): string {\n const time = t || moment();\n return time && time.format(config.showTwentyFourHours ? config.hours24Format : config.hours12Format);\n }\n\n getMinutes(config: ITimeSelectConfigInternal, t: Moment | null): string {\n const time = t || moment();\n return time && time.format(config.minutesFormat);\n }\n\n getSeconds(config: ITimeSelectConfigInternal, t: Moment | null): string {\n const time = t || moment();\n return time && time.format(config.secondsFormat);\n }\n\n getMeridiem(config: ITimeSelectConfigInternal, time: Moment): string {\n return time && time.format(config.meridiemFormat);\n }\n\n decrease(config: ITimeSelectConfigInternal, time: Moment, unit: TimeUnit): Moment {\n let amount: number = 1;\n switch (unit) {\n case 'minute':\n amount = config.minutesInterval;\n break;\n case 'second':\n amount = config.secondsInterval;\n break;\n }\n return time.clone().subtract(amount, unit);\n }\n\n increase(config: ITimeSelectConfigInternal, time: Moment, unit: TimeUnit): Moment {\n let amount: number = 1;\n switch (unit) {\n case 'minute':\n amount = config.minutesInterval;\n break;\n case 'second':\n amount = config.secondsInterval;\n break;\n }\n return time.clone().add(amount, unit);\n }\n\n toggleMeridiem(time: Moment): Moment {\n if (time.hours() < FIRST_PM_HOUR) {\n return time.clone().add(12, 'hour');\n } else {\n return time.clone().subtract(12, 'hour');\n }\n }\n\n shouldShowDecrease(config: ITimeSelectConfigInternal, time: Moment, unit: TimeUnit): boolean {\n if (!config.min && !config.minTime) {\n return true;\n }\n const newTime = this.decrease(config, time, unit);\n\n return (!config.min || config.min.isSameOrBefore(newTime))\n && (!config.minTime || config.minTime.isSameOrBefore(this.utilsService.onlyTime(newTime)));\n }\n\n shouldShowIncrease(config: ITimeSelectConfigInternal, time: Moment, unit: TimeUnit): boolean {\n if (!config.max && !config.maxTime) {\n return true;\n }\n const newTime = this.increase(config, time, unit);\n\n return (!config.max || config.max.isSameOrAfter(newTime))\n && (!config.maxTime || config.maxTime.isSameOrAfter(this.utilsService.onlyTime(newTime)));\n }\n\n shouldShowToggleMeridiem(config: ITimeSelectConfigInternal, time: Moment): boolean {\n if (!config.min && !config.max && !config.minTime && !config.maxTime) {\n return true;\n }\n const newTime = this.toggleMeridiem(time);\n return (!config.max || config.max.isSameOrAfter(newTime))\n && (!config.min || config.min.isSameOrBefore(newTime))\n && (!config.maxTime || config.maxTime.isSameOrAfter(this.utilsService.onlyTime(newTime)))\n && (!config.minTime || config.minTime.isSameOrBefore(this.utilsService.onlyTime(newTime)));\n }\n}\n","import {Injectable} from '@angular/core';\nimport moment, {Moment} from'jalali-moment';\n\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {DayCalendarService} from '../day-calendar/day-calendar.service';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {IDayTimeCalendarConfig} from './day-time-calendar-config.model';\n\nconst DAY_FORMAT = 'YYYYMMDD';\nconst TIME_FORMAT = 'HH:mm:ss';\nconst COMBINED_FORMAT = DAY_FORMAT + TIME_FORMAT;\n\n@Injectable()\nexport class DayTimeCalendarService {\n readonly DEFAULT_CONFIG: IDayTimeCalendarConfig = {\n locale: moment.locale()\n };\n\n constructor(private utilsService: UtilsService,\n private dayCalendarService: DayCalendarService,\n private timeSelectService: TimeSelectService) {\n }\n\n getConfig(config: IDayTimeCalendarConfig): IDayTimeCalendarConfig {\n const _config = {\n ...this.DEFAULT_CONFIG,\n ...this.timeSelectService.getConfig(config),\n ...this.dayCalendarService.getConfig(config)\n };\n\n moment.locale(config.locale);\n\n return _config;\n }\n\n updateDay(current: Moment, day: Moment, config: IDayTimeCalendarConfig): Moment {\n const time = current ? current : moment();\n let updated = moment(day.format(DAY_FORMAT) + time.format(TIME_FORMAT), COMBINED_FORMAT);\n\n if (config.min) {\n const min = <Moment>config.min;\n updated = min.isAfter(updated) ? min : updated;\n }\n\n if (config.max) {\n const max = <Moment>config.max;\n updated = max.isBefore(updated) ? max : updated;\n }\n\n return updated;\n }\n\n updateTime(current: Moment, time: Moment): Moment {\n const day = current ? current : moment();\n\n return moment(day.format(DAY_FORMAT) + time.format(TIME_FORMAT), COMBINED_FORMAT);\n }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {IDatePickerConfig, IDatePickerConfigInternal} from './date-picker-config.model';\nimport {Moment} from 'jalali-moment';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDayCalendarConfig} from '../day-calendar/day-calendar-config.model';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {DayTimeCalendarService} from '../day-time-calendar/day-time-calendar.service';\nimport {ITimeSelectConfig} from '../time-select/time-select-config.model';\nimport {CalendarMode} from '../common/types/calendar-mode';\nimport {CalendarValue} from '../common/types/calendar-value';\n\n@Injectable()\nexport class DatePickerService {\n readonly onPickerClosed: EventEmitter<null> = new EventEmitter();\n private defaultConfig: IDatePickerConfigInternal = {\n closeOnSelect: true,\n closeOnSelectDelay: 100,\n format: 'YYYY-MM-D',\n openOnFocus: true,\n openOnClick: true,\n onOpenDelay: 0,\n disableKeypress: false,\n showNearMonthDays: true,\n showWeekNumbers: false,\n enableMonthSelector: true,\n showGoToCurrent: true,\n locale: 'fa',\n hideOnOutsideClick: true\n };\n private gregorianExtensionConfig: IDatePickerConfig = {\n format: 'DD-MM-YYYY',\n locale: 'en'\n };\n constructor(private utilsService: UtilsService,\n private timeSelectService: TimeSelectService,\n private daytimeCalendarService: DayTimeCalendarService) {\n }\n\n // todo:: add unit tests\n getConfig(config: IDatePickerConfig, mode: CalendarMode = 'daytime'): IDatePickerConfigInternal {\n const _config = <IDatePickerConfigInternal>{\n ...this.defaultConfig,\n ...((config && config.locale && config.locale !== 'fa') ? this.gregorianExtensionConfig : {}),\n format: this.getDefaultFormatByMode(mode, config),\n ...this.utilsService.clearUndefined(config)\n };\n\n this.utilsService.convertPropsToMoment(_config, _config.format, ['min', 'max'], _config.locale);\n\n if (config && config.allowMultiSelect && config.closeOnSelect === undefined) {\n _config.closeOnSelect = false;\n }\n\n // moment.locale(_config.locale);\n\n return _config;\n }\n\n getDayConfigService(pickerConfig: IDatePickerConfig): IDayCalendarConfig {\n return {\n min: pickerConfig.min,\n max: pickerConfig.max,\n isDayDisabledCallback: pickerConfig.isDayDisabledCallback,\n weekDayFormat: pickerConfig.weekDayFormat,\n showNearMonthDays: pickerConfig.showNearMonthDays,\n showWeekNumbers: pickerConfig.showWeekNumbers,\n firstDayOfWeek: pickerConfig.firstDayOfWeek,\n format: pickerConfig.format,\n allowMultiSelect: pickerConfig.allowMultiSelect,\n monthFormat: pickerConfig.monthFormat,\n monthFormatter: pickerConfig.monthFormatter,\n enableMonthSelector: pickerConfig.enableMonthSelector,\n yearFormat: pickerConfig.yearFormat,\n yearFormatter: pickerConfig.yearFormatter,\n dayBtnFormat: pickerConfig.dayBtnFormat,\n dayBtnFormatter: pickerConfig.dayBtnFormatter,\n dayBtnCssClassCallback: pickerConfig.dayBtnCssClassCallback,\n monthBtnFormat: pickerConfig.monthBtnFormat,\n monthBtnFormatter: pickerConfig.monthBtnFormatter,\n monthBtnCssClassCallback: pickerConfig.monthBtnCssClassCallback,\n multipleYearsNavigateBy: pickerConfig.multipleYearsNavigateBy,\n showMultipleYearsNavigation: pickerConfig.showMultipleYearsNavigation,\n locale: pickerConfig.locale,\n returnedValueType: pickerConfig.returnedValueType,\n showGoToCurrent: pickerConfig.showGoToCurrent,\n unSelectOnClick: pickerConfig.unSelectOnClick\n };\n }\n\n getDayTimeConfigService(pickerConfig: IDatePickerConfig): ITimeSelectConfig {\n return this.daytimeCalendarService.getConfig(pickerConfig);\n }\n\n getTimeConfigService(pickerConfig: IDatePickerConfig): ITimeSelectConfig {\n return this.timeSelectService.getConfig(pickerConfig);\n }\n\n pickerClosed() {\n this.onPickerClosed.emit();\n }\n\n // todo:: add unit tests\n isValidInputDateValue(value: string, config: IDatePickerConfig): boolean {\n value = value ? value : '';\n const datesStrArr: string[] = this.utilsService.datesStringToStringArray(value);\n\n return datesStrArr.every(date => this.utilsService.isDateValid(date, config.format, config.locale));\n }\n\n // todo:: add unit tests\n convertInputValueToMomentArray(value: string, config: IDatePickerConfig): Moment[] {\n value = value ? value : '';\n const datesStrArr: string[] = this.utilsService.datesStringToStringArray(value);\n\n return this.utilsService.convertToMomentArray(datesStrArr, config.format, config.allowMultiSelect, config.locale);\n }\n\n private getDefaultFormatByMode(mode: CalendarMode, config: IDatePickerConfig): string {\n let dateFormat = 'YYYY-MM-DD';\n let monthFormat = 'MMMM YY';\n const timeFormat = 'HH:mm:ss';\n if (config && config.locale && config.locale !== 'fa') {\n dateFormat = 'DD-MM-YYYY';\n monthFormat = 'MMM, YYYY';\n }\n switch (mode) {\n case 'day':\n return dateFormat;\n case 'daytime':\n return dateFormat + ' ' + timeFormat;\n case 'time':\n return timeFormat;\n case 'month':\n return monthFormat;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {TDrops, TOpens} from '../../types/poistions.type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DomHelper {\n\n private static setYAxisPosition(element: HTMLElement, container: HTMLElement, anchor: HTMLElement, drops: TDrops) {\n const anchorRect = anchor.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const bottom = anchorRect.bottom - containerRect.top;\n const top = anchorRect.top - containerRect.top;\n\n if (drops === 'down') {\n element.style.top = (bottom + 1 + 'px');\n } else {\n element.style.top = (top - 1 - element.scrollHeight) + 'px';\n }\n }\n\n private static setXAxisPosition(element: HTMLElement, container: HTMLElement, anchor: HTMLElement, dimElem: HTMLElement, opens: TOpens) {\n const anchorRect = anchor.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const left = anchorRect.left - containerRect.left;\n\n if (opens === 'right') {\n element.style.left = left + 'px';\n } else {\n element.style.left = left - dimElem.offsetWidth + anchor.offsetWidth + 'px';\n }\n }\n\n private static isTopInView(el: HTMLElement): boolean {\n const {top} = el.getBoundingClientRect();\n return (top >= 0);\n }\n\n private static isBottomInView(el: HTMLElement): boolean {\n const {bottom} = el.getBoundingClientRect();\n return (bottom <= window.innerHeight);\n }\n\n private static isLeftInView(el: HTMLElement): boolean {\n const {left} = el.getBoundingClientRect();\n return (left >= 0);\n }\n\n private static isRightInView(el: HTMLElement): boolean {\n const {right} = el.getBoundingClientRect();\n return (right <= window.innerWidth);\n }\n\n appendElementToPosition(config: IAppendToArgs): void {\n const {container, element} = config;\n\n if (!container.style.position || container.style.position === 'static') {\n container.style.position = 'relative';\n }\n\n if (element.style.position !== 'absolute') {\n element.style.position = 'absolute';\n }\n\n element.style.visibility = 'hidden';\n\n setTimeout(() => {\n this.setElementPosition(config);\n\n element.style.visibility = 'visible';\n });\n }\n\n setElementPosition({element, container, anchor, dimElem, drops, opens}: IAppendToArgs) {\n DomHelper.setYAxisPosition(element, container, anchor, 'down');\n DomHelper.setXAxisPosition(element, container, anchor, dimElem, 'right');\n\n if (drops !== 'down' && drops !== 'up') {\n if (DomHelper.isBottomInView(dimElem)) {\n DomHelper.setYAxisPosition(element, container, anchor, 'down');\n } else if (DomHelper.isTopInView(dimElem)) {\n DomHelper.setYAxisPosition(element, container, anchor, 'up');\n }\n } else {\n DomHelper.setYAxisPosition(element, container, anchor, drops);\n }\n\n if (opens !== 'left' && opens !== 'right') {\n if (DomHelper.isRightInView(dimElem)) {\n DomHelper.setXAxisPosition(element, container, anchor, dimElem, 'right');\n } else if (DomHelper.isLeftInView(dimElem)) {\n DomHelper.setXAxisPosition(element, container, anchor, dimElem, 'left');\n }\n } else {\n DomHelper.setXAxisPosition(element, container, anchor, dimElem, opens);\n }\n }\n}\n\nexport interface IAppendToArgs {\n container: HTMLElement;\n element: HTMLElement;\n anchor: HTMLElement;\n dimElem: HTMLElement;\n drops: TDrops;\n opens: TOpens;\n}\n","import {Injectable} from '@angular/core';\nimport moment from 'jalali-moment';\nimport {Moment} from 'jalali-moment';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IMonth} from './month.model';\nimport {IMonthCalendarConfig, IMonthCalendarConfigInternal} from './month-calendar-config';\n\n@Injectable()\nexport class MonthCalendarService {\n readonly DEFAULT_CONFIG: IMonthCalendarConfigInternal = {\n allowMultiSelect: false,\n yearFormat: 'YYYY',\n format: 'MMMM-YYYY',\n isNavHeaderBtnClickable: false,\n monthBtnFormat: 'MMMM',\n locale: 'fa',\n multipleYearsNavigateBy: 10,\n showMultipleYearsNavigation: false,\n unSelectOnClick: true\n };\n readonly GREGORIAN_DEFAULT_CONFIG: IMonthCalendarConfig = {\n format: 'MM-YYYY',\n monthBtnFormat: 'MMM',\n locale: 'en'\n };\n\n constructor(private utilsService: UtilsService) {\n }\n\n getConfig(config: IMonthCalendarConfig): IMonthCalendarConfigInternal {\n const _config = <IMonthCalendarConfigInternal>{\n ...this.DEFAULT_CONFIG,\n ...((config && config.locale && config.locale !== 'fa') ? this.GREGORIAN_DEFAULT_CONFIG : {}),\n ...this.utilsService.clearUndefined(config)\n };\n\n this.utilsService.convertPropsToMoment(_config, _config.format, ['min', 'max'], _config.locale);\n\n // moment.locale(_config.locale);\n\n return _config;\n }\n\n generateYear(config: IMonthCalendarConfig, year: Moment, selected: Moment[] = null): IMonth[][] {\n const index = year.clone().startOf('year');\n\n return this.utilsService.createArray(3).map(() => {\n return this.utilsService.createArray(4).map(() => {\n const date = index.clone();\n const month = {\n date,\n selected: !!selected.find(s => index.isSame(s, 'month')),\n currentMonth: index.isSame(moment(), 'month'),\n disabled: this.isMonthDisabled(date, config),\n text: this.getMonthBtnText(config, date)\n };\n\n index.add(1, 'month');\n\n return month;\n });\n });\n }\n\n isMonthDisabled(date: Moment, config: IMonthCalendarConfig) {\n if (config.min && date.isBefore(config.min, 'month')) {\n return true;\n }\n\n return !!(config.max && date.isAfter(config.max, 'month'));\n }\n\n shouldShowLeft(min: Moment, currentMonthView: Moment): boolean {\n return min ? min.isBefore(currentMonthView, 'year') : true;\n }\n\n shouldShowRight(max: Moment, currentMonthView: Moment): boolean {\n return max ? max.isAfter(currentMonthView, 'year') : true;\n }\n\n getHeaderLabel(config: IMonthCalendarConfig, year: Moment): string {\n if (config.yearFormatter) {\n return config.yearFormatter(year);\n }\n year.locale(config.locale);\n return year.format(config.yearFormat);\n }\n\n getMonthBtnText(config: IMonthCalendarConfig, month: Moment): string {\n if (config.monthBtnFormatter) {\n return config.monthBtnFormatter(month);\n }\n\n return month.format(config.monthBtnFormat);\n }\n\n getMonthBtnCssClass(config: IMonthCalendarConfig, month: Moment): string {\n if (config.monthBtnCssClassCallback) {\n return config.monthBtnCssClassCallback(month);\n }\n\n return '';\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'dp-calendar-nav',\n templateUrl: './calendar-nav.component.html',\n styleUrls: ['./calendar-nav.component.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarNavComponent {\n @Input() label: string;\n @Input() isLabelClickable: boolean = false;\n @Input() showLeftNav: boolean = true;\n @Input() showLeftSecondaryNav: boolean = false;\n @Input() showRightNav: boolean = true;\n @Input() showRightSecondaryNav: boolean = false;\n @Input() leftNavDisabled: boolean = false;\n @Input() leftSecondaryNavDisabled: boolean = false;\n @Input() rightNavDisabled: boolean = false;\n @Input() rightSecondaryNavDisabled: boolean = false;\n @Input() showGoToCurrent: boolean = true;\n @HostBinding('class') @Input() theme: string;\n\n @Output() onLeftNav: EventEmitter<null> = new EventEmitter();\n @Output() onLeftSecondaryNav: EventEmitter<null> = new EventEmitter();\n @Output() onRightNav: EventEmitter<null> = new EventEmitter();\n @Output() onRightSecondaryNav: EventEmitter<null> = new EventEmitter();\n @Output() onLabelClick: EventEmitter<null> = new EventEmitter();\n @Output() onGoToCurrent: EventEmitter<null> = new EventEmitter();\n\n leftNavClicked() {\n this.onLeftNav.emit();\n }\n\n leftSecondaryNavClicked() {\n this.onLeftSecondaryNav.emit();\n }\n\n rightNavClicked() {\n this.onRightNav.emit();\n }\n\n rightSecondaryNavClicked() {\n this.onRightSecondaryNav.emit();\n }\n\n labelClicked() {\n this.onLabelClick.emit();\n }\n}\n","<div class=\"dp-calendar-nav-container\">\n <div class=\"dp-nav-header\">\n <span [attr.data-hidden]=\"isLabelClickable\"\n [hidden]=\"isLabelClickable\"\n [innerText]=\"label\">\n </span>\n <button (click)=\"labelClicked()\"\n [attr.data-hidden]=\"!isLabelClickable\"\n [hidden]=\"!isLabelClickable\"\n [innerText]=\"label\"\n class=\"dp-nav-header-btn\"\n type=\"button\">\n </button>\n </div>\n\n <div class=\"dp-nav-btns-container\">\n <div class=\"dp-calendar-nav-container-left\">\n <button (click)=\"leftSecondaryNavClicked()\"\n *ngIf=\"showLeftSecondaryNav\"\n [disabled]=\"leftSecondaryNavDisabled\"\n class=\"dp-calendar-secondary-nav-left\"\n type=\"button\">\n </button>\n <button (click)=\"leftNavClicked()\"\n [attr.data-hidden]=\"!showLeftNav\"\n [disabled]=\"leftNavDisabled\"\n [hidden]=\"!showLeftNav\"\n class=\"dp-calendar-nav-left\"\n type=\"button\">\n </button>\n </div>\n <button (click)=\"onGoToCurrent.emit()\"\n *ngIf=\"showGoToCurrent\"\n class=\"dp-current-location-btn\"\n type=\"button\">\n </button>\n <div class=\"dp-calendar-nav-container-right\">\n <button (click)=\"rightNavClicked()\"\n [attr.data-hidden]=\"!showRightNav\"\n [disabled]=\"rightNavDisabled\"\n [hidden]=\"!showRightNav\"\n class=\"dp-calendar-nav-right\"\n type=\"button\">\n </button>\n <button (click)=\"rightSecondaryNavClicked()\"\n *ngIf=\"showRightSecondaryNav\"\n [disabled]=\"rightSecondaryNavDisabled\"\n class=\"dp-calendar-secondary-nav-right\"\n type=\"button\">\n </button>\n </div>\n </div>\n</div>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {IMonth} from './month.model';\nimport {MonthCalendarService} from './month-calendar.service';\nimport moment from 'jalali-moment';\nimport {Moment} from 'jalali-moment';\nimport {IMonthCalendarConfig, IMonthCalendarConfigInternal} from './month-calendar-config';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {DateValidator} from '../common/types/validator.type';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {INavEvent} from '../common/models/navigation-event.model';\n\n@Component({\n selector: 'dp-month-calendar',\n templateUrl: 'month-calendar.component.html',\n styleUrls: ['month-calendar.component.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MonthCalendarService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MonthCalendarComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MonthCalendarComponent),\n multi: true\n }\n ]\n})\nexport class MonthCalendarComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n @Input() config: IMonthCalendarConfig;\n @Input() displayDate: Moment;\n @Input() minDate: Moment;\n @Input() maxDate: Moment;\n @HostBinding('class') @Input() theme: string;\n\n @Output() onSelect: EventEmitter<IMonth> = new EventEmitter();\n @Output() onNavHeaderBtnClick: EventEmitter<null> = new EventEmitter();\n @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onLeftSecondaryNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onRightSecondaryNav: EventEmitter<INavEvent> = new EventEmitter();\n\n isInited: boolean = false;\n componentConfig: IMonthCalendarConfigInternal;\n _selected: Moment[];\n yearMonths: IMonth[][];\n _currentDateView: Moment;\n inputValue: CalendarValue;\n inputValueType: ECalendarValue;\n validateFn: DateValidator;\n _shouldShowCurrent: boolean = true;\n navLabel: string;\n showLeftNav: boolean;\n showRightNav: boolean;\n showSecondaryLeftNav: boolean;\n showSecondaryRightNav: boolean;\n\n api = {\n toggleCalendar: this.toggleCalendarMode.bind(this),\n moveCalendarTo: this.moveCalendarTo.bind(this)\n };\n\n set selected(selected: Moment[]) {\n this._selected = selected;\n this.onChangeCallback(this.processOnChangeCallback(selected));\n }\n\n get selected(): Moment[] {\n return this._selected;\n }\n\n set currentDateView(current: Moment) {\n this._currentDateView = current.clone();\n this.yearMonths = this.monthCalendarService\n .generateYear(this.componentConfig, this._currentDateView, this.selected);\n this.navLabel = this.monthCalendarService.getHeaderLabel(this.componentConfig, this.currentDateView);\n this.showLeftNav = this.monthCalendarService.shouldShowLeft(this.componentConfig.min, this._currentDateView);\n this.showRightNav = this.monthCalendarService.shouldShowRight(this.componentConfig.max, this.currentDateView);\n this.showSecondaryLeftNav = this.componentConfig.showMultipleYearsNavigation && this.showLeftNav;\n this.showSecondaryRightNav = this.componentConfig.showMultipleYearsNavigation && this.showRightNav;\n }\n\n get currentDateView(): Moment {\n return this._currentDateView;\n }\n\n constructor(public readonly monthCalendarService: MonthCalendarService,\n public readonly utilsService: UtilsService,\n public readonly cd: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n this.isInited = true;\n this.init();\n this.initValidators();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isInited) {\n const {minDate, maxDate, config} = changes;\n\n this.handleConfigChange(config);\n this.init();\n\n if (minDate || maxDate) {\n this.initValidators();\n }\n }\n }\n\n init() {\n this.componentConfig = this.monthCalendarService.getConfig(this.config);\n this.selected = this.selected || [];\n this.currentDateView = this.displayDate\n ? this.displayDate\n : this.utilsService\n .getDefaultDisplayDate(\n this.currentDateView,\n this.selected,\n this.componentConfig.allowMultiSelect,\n this.componentConfig.min,\n this.componentConfig.locale\n );\n this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n this._shouldShowCurrent = this.shouldShowCurrent();\n }\n\n writeValue(value: CalendarValue): void {\n this.inputValue = value;\n\n if (value) {\n this.selected = this.utilsService\n .convertToMomentArray(value,\n this.componentConfig.format,\n this.componentConfig.allowMultiSelect,\n this.componentConfig.locale);\n this.yearMonths = this.monthCalendarService\n .generateYear(this.componentConfig, this.currentDateView, this.selected);\n this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n }\n\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n onChangeCallback(_: any) {\n };\n\n registerOnTouched(fn: any): void {\n }\n\n validate(formControl: FormControl): ValidationErrors | any {\n if (this.minDate || this.maxDate) {\n return this.validateFn(formControl.value);\n } else {\n return () => null;\n }\n }\n isFarsi() {\n return this.componentConfig.locale === 'fa';\n }\n processOnChangeCallback(value: Moment[]): CalendarValue {\n return this.utilsService.convertFromMomentArray(\n this.componentConfig.format,\n value,\n this.componentConfig.returnedValueType || this.inputValueType,\n this.componentConfig.locale\n );\n }\n\n initValidators() {\n this.validateFn = this.validateFn = this.utilsService.createValidator(\n {minDate: this.minDate, maxDate: this.maxDate},\n this.componentConfig.format,\n 'month',\n this.componentConfig.locale\n );\n\n this.onChangeCallback(this.processOnChangeCallback(this.selected));\n }\n\n monthClicked(month: IMonth) {\n if (month.selected && !this.componentConfig.unSelectOnClick) {\n return;\n }\n\n this.selected = this.utilsService\n .updateSelected(this.componentConfig.allowMultiSelect, this.selected, month, 'month');\n this.yearMonths = this.monthCalendarService\n .generateYear(this.componentConfig, this.currentDateView, this.selected);\n this.onSelect.emit(month);\n }\n\n onLeftNavClick() {\n const from = this.currentDateView.clone();\n this.currentDateView = this.currentDateView.clone().subtract(1, 'year');\n const to = this.currentDateView.clone();\n this.yearMonths = this.monthCalendarService.generateYear(this.componentConfig, this.currentDateView, this.selected);\n this.onLeftNav.emit({from, to});\n }\n\n onLeftSecondaryNavClick() {\n let navigateBy = this.componentConfig.multipleYearsNavigateBy;\n const isOutsideRange = this.componentConfig.min &&\n this.currentDateView.year() - this.componentConfig.min.year() < navigateBy;\n\n if (isOutsideRange) {\n navigateBy = this.currentDateView.year() - this.componentConfig.min.year();\n }\n\n const from = this.currentDateView.clone();\n this.currentDateView = this.currentDateView.clone().subtract(navigateBy, 'year');\n const to = this.currentDateView.clone();\n this.onLeftSecondaryNav.emit({from, to});\n }\n\n onRightNavClick() {\n const from = this.currentDateView.clone();\n this.currentDateView = this.currentDateView.clone().add(1, 'year');\n const to = this.currentDateView.clone();\n this.onRightNav.emit({from, to});\n }\n\n onRightSecondaryNavClick() {\n let navigateBy = this.componentConfig.multipleYearsNavigateBy;\n const isOutsideRange = this.componentConfig.max &&\n this.componentConfig.max.year() - this.currentDateView.year() < navigateBy;\n\n if (isOutsideRange) {\n navigateBy = this.componentConfig.max.year() - this.currentDateView.year();\n }\n\n const from = this.currentDateView.clone();\n this.currentDateView = this.currentDateView.clone().add(navigateBy, 'year');\n const to = this.currentDateView.clone();\n this.onRightSecondaryNav.emit({from, to});\n }\n\n toggleCalendarMode() {\n this.onNavHeaderBtnClick.emit();\n }\n\n getMonthBtnCssClass(month: IMonth): {[klass: string]: boolean} {\n const cssClass: {[klass: string]: boolean} = {\n 'dp-selected': month.selected,\n 'dp-current-month': month.currentMonth\n };\n const customCssClass: string = this.monthCalendarService.getMonthBtnCssClass(this.componentConfig, month.date);\n\n if (customCssClass) {\n cssClass[customCssClass] = true;\n }\n\n return cssClass;\n }\n\n shouldShowCurrent(): boolean {\n return this.utilsService.shouldShowCurrent(\n this.componentConfig.showGoToCurrent,\n 'month',\n this.componentConfig.min,\n this.componentConfig.max\n );\n }\n\n goToCurrent() {\n this.currentDateView = moment().locale(this.componentConfig.locale);\n this.onGoToCurrent.emit();\n }\n\n moveCalendarTo(to: SingleCalendarValue) {\n if (to) {\n this.currentDateView = this.utilsService.convertToMoment(to, this.componentConfig.format, this.componentConfig.locale);\n this.cd.markForCheck();\n }\n }\n\n handleConfigChange(config: SimpleChange) {\n if (config) {\n const prevConf: IMonthCalendarConfigInternal = this.monthCalendarService.getConfig(config.previousValue);\n const currentConf: IMonthCalendarConfigInternal = this.monthCalendarService.getConfig(config.currentValue);\n\n if (this.utilsService.shouldResetCurrentView(prevConf, currentConf)) {\n this._currentDateView = null;\n }\n }\n }\n}\n","<div class=\"dp-month-calendar-container\">\n <dp-calendar-nav\n [label]=\"navLabel\"\n [showLeftNav]=\"showLeftNav\"\n [showLeftSecondaryNav]=\"showSecondaryLeftNav\"\n [showRightNav]=\"showRightNav\"\n [showRightSecondaryNav]=\"showSecondaryRightNav\"\n [isLabelClickable]=\"componentConfig.isNavHeaderBtnClickable\"\n [showGoToCurrent]=\"shouldShowCurrent()\"\n [theme]=\"theme\"\n (onLeftNav)=\"onLeftNavClick()\"\n (onLeftSecondaryNav)=\"onLeftSecondaryNavClick()\"\n (onRightNav)=\"onRightNavClick()\"\n (onRightSecondaryNav)=\"onRightSecondaryNavClick()\"\n (onLabelClick)=\"toggleCalendarMode()\"\n (onGoToCurrent)=\"goToCurrent()\">\n </dp-calendar-nav>\n\n <div class=\"dp-calendar-wrapper\" [ngClass]=\"{'rtl':isFarsi()}\">\n <div class=\"dp-months-row\" *ngFor=\"let monthRow of yearMonths\">\n <button type=\"button\"\n class=\"dp-calendar-month\"\n *ngFor=\"let month of monthRow\"\n [attr.data-date]=\"month.date.format(componentConfig.format)\"\n [disabled]=\"month.disabled\"\n [ngClass]=\"getMonthBtnCssClass(month)\"\n (click)=\"monthClicked(month)\"\n [innerText]=\"month.text\">\n </button>\n </div>\n </div>\n</div>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {ECalendarMode} from '../common/types/calendar-mode-enum';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChange,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {DayCalendarService} from './day-calendar.service';\nimport moment from 'jalali-moment';\nimport {Moment, MomentInput, unitOfTime} from 'jalali-moment';\nimport {IDayCalendarConfig, IDayCalendarConfigInternal} from './day-calendar-config.model';\nimport {IDay} from './day.model';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IMonthCalendarConfig} from '../month-calendar/month-calendar-config';\nimport {IMonth} from '../month-calendar/month.model';\nimport {DateValidator} from '../common/types/validator.type';\nimport {INavEvent} from '../common/models/navigation-event.model';\n\n@Component({\n selector: 'dp-day-calendar',\n templateUrl: 'day-calendar.component.html',\n styleUrls: ['day-calendar.component.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DayCalendarService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DayCalendarComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DayCalendarComponent),\n multi: true\n }\n ]\n})\nexport class DayCalendarComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n @Input() config: IDayCalendarConfig;\n @Input() displayDate: SingleCalendarValue;\n @Input() minDate: Moment;\n @Input() maxDate: Moment;\n @HostBinding('class') @Input() theme: string;\n\n @Output() onSelect: EventEmitter<IDay> = new EventEmitter();\n @Output() onMonthSelect: EventEmitter<IMonth> = new EventEmitter();\n @Output() onNavHeaderBtnClick: EventEmitter<ECalendarMode> = new EventEmitter();\n @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n\n CalendarMode = ECalendarMode;\n isInited: boolean = false;\n componentConfig: IDayCalendarConfigInternal;\n _selected: Moment[];\n weeks: IDay[][];\n weekdays: Moment[];\n _currentDateView: Moment;\n inputValue: CalendarValue;\n inputValueType: ECalendarValue;\n validateFn: DateValidator;\n currentCalendarMode: ECalendarMode = ECalendarMode.Day;\n monthCalendarConfig: IMonthCalendarConfig;\n _shouldShowCurrent: boolean = true;\n navLabel: string;\n showLeftNav: boolean;\n showRightNav: boolean;\n\n api = {\n moveCalendarsBy: this.moveCalendarsBy.bind(this),\n moveCalendarTo: this.moveCalendarTo.bind(this),\n toggleCalendarMode: this.toggleCalendarMode.bind(this)\n };\n\n set selected(selected: Moment[]) {\n this._selected = selected;\n this.onChangeCallback(this.processOnChangeCallback(selected));\n }\n\n get selected(): Moment[] {\n return this._selected;\n }\n\n set currentDateView(current: Moment) {\n this._currentDateView = current.clone();\n this.weeks = this.dayCalendarService\n .generateMonthArray(this.componentConfig, this._currentDateView, this.selected);\n this.navLabel = this.dayCalendarService.getHeaderLabel(this.componentConfig, this._currentDateView);\n this.showLeftNav = this.dayCalendarService.shouldShowLeft(this.componentConfig.min, this.currentDateView);\n this.showRightNav = this.dayCalendarService.shouldShowRight(this.componentConfig.max, this.currentDateView);\n }\n\n get currentDateView(): Moment {\n return this._currentDateView;\n }\n\n constructor(public readonly dayCalendarService: DayCalendarService,\n public readonly utilsService: UtilsService,\n public readonly cd: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n this.isInited = true;\n this.init();\n this.initValidators();\n }\n\n init() {\n this.componentConfig = this.dayCalendarService.getConfig(this.config);\n this.selected = this.selected || [];\n this.currentDateView = this.displayDate\n ? this.utilsService.convertToMoment(this.displayDate, this.componentConfig.format, this.componentConfig.locale).clone()\n : this.utilsService\n .getDefaultDisplayDate(\n this.currentDateView,\n this.selected,\n this.componentConfig.allowMultiSelect,\n this.componentConfig.min,\n this.componentConfig.locale\n );\n this.weekdays = this.dayCalendarService\n .generateWeekdays(this.componentConfig.firstDayOfWeek, this.componentConfig.locale);\n this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n this.monthCalendarConfig = this.dayCalendarService.getMonthCalendarConfig(this.componentConfig);\n this._shouldShowCurrent = this.shouldShowCurrent();\n }\n isFarsi() {\n return this.componentConfig.locale === 'fa';\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isInited) {\n const {minDate, maxDate, config} = changes;\n\n this.handleConfigChange(config);\n this.init();\n\n if (minDate || maxDate) {\n this.initValidators();\n }\n }\n }\n\n writeValue(value: CalendarValue): void {\n if (value === this.inputValue\n || (this.inputValue\n && (moment.isMoment(this.inputValue)) && (this.inputValue as Moment).isSame(<MomentInput>value))\n ) {\n return;\n }\n\n this.inputValue = value;\n\n if (value) {\n this.selected = this.utilsService\n .convertToMomentArray(value, this.componentConfig.format, this.componentConfig.allowMultiSelect, this.componentConfig.locale);\n this.inputValueType = this.utilsService\n .getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n } else {\n this.selected = [];\n }\n\n this.weeks = this.dayCalendarService\n .generateMonthArray(this.componentConfig, this.currentDateView, this.selected);\n\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n onChangeCallback(_: any) {\n };\n\n registerOnTouched(fn: any): void {\n }\n\n validate(formControl: FormControl): ValidationErrors | any {\n if (this.minDate || this.maxDate) {\n return this.validateFn(formControl.value);\n } else {\n return () => null;\n }\n }\n\n processOnChangeCallback(value: Moment[]): CalendarValue {\n return this.utilsService.convertFromMomentArray(\n this.componentConfig.format,\n value,\n this.componentConfig.returnedValueType || this.inputValueType,\n this.componentConfig.locale\n );\n }\n\n initValidators() {\n this.validateFn = this.utilsService.createValidator(\n {minDate: this.minDate, maxDate: this.maxDate},\n this.componentConfig.format,\n 'day',\n this.componentConfig.locale\n );\n\n this.onChangeCallback(this.processOnChangeCallback(this.selected));\n }\n\n dayClicked(day: IDay) {\n if (day.selected && !this.componentConfig.unSelectOnClick) {\n return;\n }\n\n this.selected = this.utilsService\n .updateSelected(this.componentConfig.allowMultiSelect, this.selected, day);\n this.weeks = this.dayCalendarService\n .generateMonthArray(this.componentConfig, this.currentDateView, this.selected);\n this.onSelect.emit(day);\n }\n\n getDayBtnText(day: IDay): string {\n return this.dayCalendarService.getDayBtnText(this.componentConfig, day.date);\n }\n\n getDayBtnCssClass(day: IDay): {[klass: string]: boolean} {\n const cssClasses: {[klass: string]: boolean} = {\n 'dp-selected': day.selected,\n 'dp-current-month': day.currentMonth,\n 'dp-prev-month': day.prevMonth,\n 'dp-next-month': day.nextMonth,\n 'dp-current-day': day.currentDay\n };\n const customCssClass: string = this.dayCalendarService.getDayBtnCssClass(this.componentConfig, day.date);\n if (customCssClass) {\n cssClasses[customCssClass] = true;\n }\n\n return cssClasses;\n }\n\n onLeftNavClick() {\n const from = this.currentDateView.clone();\n this.moveCalendarsBy(this.currentDateView, -1, 'month');\n const to = this.currentDateView.clone();\n this.onLeftNav.emit({from, to});\n }\n\n onRightNavClick() {\n const from = this.currentDateView.clone();\n this.moveCalendarsBy(this.currentDateView, 1, 'month');\n const to = this.currentDateView.clone();\n this.onRightNav.emit({from, to});\n }\n\n onMonthCalendarLeftClick(change: INavEvent) {\n this.onLeftNav.emit(change);\n }\n\n onMonthCalendarRightClick(change: INavEvent) {\n this.onRightNav.emit(change);\n }\n\n onMonthCalendarSecondaryLeftClick(change: INavEvent) {\n this.onRightNav.emit(change);\n }\n\n onMonthCalendarSecondaryRightClick(change: INavEvent) {\n this.onLeftNav.emit(change);\n }\n\n getWeekdayName(weekday: Moment): string {\n if (this.componentConfig.weekDayFormatter) {\n return this.componentConfig.weekDayFormatter(weekday.day());\n }\n\n return weekday.format(this.componentConfig.weekDayFormat);\n }\n\n toggleCalendarMode(mode: ECalendarMode) {\n if (this.currentCalendarMode !== mode) {\n this.currentCalendarMode = mode;\n this.onNavHeaderBtnClick.emit(mode);\n }\n\n this.cd.markForCheck();\n }\n\n monthSelected(month: IMonth) {\n this.currentDateView = month.date.clone();\n this.currentCalendarMode = ECalendarMode.Day;\n this.onMonthSelect.emit(month);\n }\n\n moveCalendarsBy(current: Moment, amount: number, granularity: unitOfTime.Base = 'month') {\n this.currentDateView = current.clone().add(amount, granularity);\n this.cd.markForCheck();\n }\n\n moveCalendarTo(to: SingleCalendarValue) {\n if (to) {\n this.currentDateView = this.utilsService.convertToMoment(to, this.componentConfig.format, this.componentConfig.locale);\n }\n\n this.cd.markForCheck();\n }\n\n shouldShowCurrent(): boolean {\n return this.utilsService.shouldShowCurrent(\n this.componentConfig.showGoToCurrent,\n 'day',\n this.componentConfig.min,\n this.componentConfig.max\n );\n }\n\n goToCurrent() {\n this.currentDateView = moment().locale(this.componentConfig.locale);\n this.onGoToCurrent.emit();\n }\n\n handleConfigChange(config: SimpleChange) {\n if (config) {\n const prevConf: IDayCalendarConfigInternal = this.dayCalendarService.getConfig(config.previousValue);\n const currentConf: IDayCalendarConfigInternal = this.dayCalendarService.getConfig(config.currentValue);\n\n if (this.utilsService.shouldResetCurrentView(prevConf, currentConf)) {\n this._currentDateView = null;\n }\n }\n }\n}\n","<div class=\"dp-day-calendar-container\" *ngIf=\"currentCalendarMode === CalendarMode.Day\">\n <dp-calendar-nav\n [label]=\"navLabel\"\n [showLeftNav]=\"showLeftNav\"\n [showRightNav]=\"showRightNav\"\n [isLabelClickable]=\"componentConfig.enableMonthSelector\"\n [showGoToCurrent]=\"_shouldShowCurrent\"\n [theme]=\"theme\"\n (onLeftNav)=\"onLeftNavClick()\"\n (onRightNav)=\"onRightNavClick()\"\n (onLabelClick)=\"toggleCalendarMode(CalendarMode.Month)\"\n (onGoToCurrent)=\"goToCurrent()\">\n </dp-calendar-nav>\n\n <div class=\"dp-calendar-wrapper\"\n [ngClass]=\"{'dp-hide-near-month': !componentConfig.showNearMonthDays,'rtl':isFarsi()}\">\n <div class=\"dp-weekdays\">\n <span class=\"dp-calendar-weekday\"\n *ngFor=\"let weekday of weekdays\"\n [innerText]=\"getWeekdayName(weekday)\">\n </span>\n </div>\n <div class=\"dp-calendar-week\" *ngFor=\"let week of weeks\">\n <span class=\"dp-week-number\"\n *ngIf=\"componentConfig.showWeekNumbers\"\n [innerText]=\"week[0].date.isoWeek()\">\n </span>\n <button type=\"button\"\n class=\"dp-calendar-day\"\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.date.format(componentConfig.format)\"\n (click)=\"dayClicked(day)\"\n [disabled]=\"day.disabled\"\n [ngClass]=\"getDayBtnCssClass(day)\"\n [innerText]=\"getDayBtnText(day)\">\n </button>\n </div>\n </div>\n</div>\n\n<dp-month-calendar\n *ngIf=\"currentCalendarMode === CalendarMode.Month\"\n [config]=\"monthCalendarConfig\"\n [displayDate]=\"_currentDateView\"\n [theme]=\"theme\"\n (onSelect)=\"monthSelected($event)\"\n (onNavHeaderBtnClick)=\"toggleCalendarMode(CalendarMode.Day)\"\n (onLeftNav)=\"onMonthCalendarLeftClick($event)\"\n (onRightNav)=\"onMonthCalendarRightClick($event)\"\n (onLeftSecondaryNav)=\"onMonthCalendarSecondaryLeftClick($event)\"\n (onRightSecondaryNav)=\"onMonthCalendarSecondaryRightClick($event)\">\n</dp-month-calendar>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport {TimeSelectService, TimeUnit} from './time-select.service';\nimport moment from 'jalali-moment';\nimport {Moment} from 'jalali-moment';\nimport {ITimeSelectConfig, ITimeSelectConfigInternal} from './time-select-config.model';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDate} from '../common/models/date.model';\nimport {DateValidator} from '../common/types/validator.type';\n\n@Component({\n selector: 'dp-time-select',\n templateUrl: 'time-select.component.html',\n styleUrls: ['time-select.component.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TimeSelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeSelectComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimeSelectComponent),\n multi: true\n }\n ]\n})\nexport class TimeSelectComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n @Input() config: ITimeSelectConfig;\n @Input() displayDate: SingleCalendarValue;\n @Input() minDate: SingleCalendarValue;\n @Input() maxDate: SingleCalendarValue;\n @Input() minTime: SingleCalendarValue;\n @Input() maxTime: SingleCalendarValue;\n @HostBinding('class') @Input() theme: string;\n\n @Output() onChange: EventEmitter<IDate> = new EventEmitter();\n\n isInited: boolean = false;\n componentConfig: ITimeSelectConfigInternal;\n _selected: Moment;\n inputValue: CalendarValue;\n inputValueType: ECalendarValue;\n validateFn: DateValidator;\n\n hours: string;\n minutes: string;\n seconds: string;\n meridiem: string;\n\n showDecHour: boolean;\n showDecMinute: boolean;\n showDecSecond: boolean;\n showIncHour: boolean;\n showIncMinute: boolean;\n showIncSecond: boolean;\n showToggleMeridiem: boolean;\n\n set selected(selected: Moment) {\n this._selected = selected;\n this.calculateTimeParts(this.selected);\n\n this.showDecHour = this.timeSelectService.shouldShowDecrease(this.componentConfig, this._selected, 'hour');\n this.showDecMinute = this.timeSelectService.shouldShowDecrease(this.componentConfig, this._selected, 'minute');\n this.showDecSecond = this.timeSelectService.shouldShowDecrease(this.componentConfig, this._selected, 'second');\n\n this.showIncHour = this.timeSelectService.shouldShowIncrease(this.componentConfig, this._selected, 'hour');\n this.showIncMinute = this.timeSelectService.shouldShowIncrease(this.componentConfig, this._selected, 'minute');\n this.showIncSecond = this.timeSelectService.shouldShowIncrease(this.componentConfig, this._selected, 'second');\n\n this.showToggleMeridiem = this.timeSelectService.shouldShowToggleMeridiem(this.componentConfig, this._selected);\n\n this.onChangeCallback(this.processOnChangeCallback(selected));\n }\n\n get selected(): Moment {\n return this._selected;\n }\n\n api = {\n triggerChange: this.emitChange.bind(this)\n };\n\n constructor(public timeSelectService: TimeSelectService,\n public utilsService: UtilsService,\n public cd: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n this.isInited = true;\n this.init();\n this.initValidators();\n }\n\n init() {\n this.componentConfig = this.timeSelectService.getConfig(this.config);\n this.selected = this.selected || moment();\n this.inputValueType = this.utilsService.getInputType(this.inputValue, false);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isInited) {\n const {minDate, maxDate, minTime, maxTime} = changes;\n this.init();\n\n if (minDate || maxDate || minTime || maxTime) {\n this.initValidators();\n }\n }\n }\n\n writeValue(value: CalendarValue): void {\n this.inputValue = value;\n\n if (value) {\n const momentValue = this.utilsService\n .convertToMomentArray(value, this.timeSelectService.getTimeFormat(this.componentConfig), false, this.componentConfig.locale)[0];\n if (momentValue.isValid()) {\n this.selected = momentValue;\n this.inputValueType = this.utilsService\n .getInputType(this.inputValue, false);\n }\n }\n\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n onChangeCallback(_: any) {\n };\n\n registerOnTouched(fn: any): void {\n }\n\n validate(formControl: FormControl): ValidationErrors | any {\n if (this.minDate || this.maxDate || this.minTime || this.maxTime) {\n return this.validateFn(formControl.value);\n } else {\n return () => null;\n }\n }\n\n processOnChangeCallback(value: Moment): CalendarValue {\n return this.utilsService.convertFromMomentArray(\n this.timeSelectService.getTimeFormat(this.componentConfig),\n [value],\n this.componentConfig.returnedValueType || this.inputValueType,\n this.componentConfig.locale\n );\n }\n\n initValidators() {\n this.validateFn = this.utilsService.createValidator(\n {\n minDate: this.minDate,\n maxDate: this.maxDate,\n minTime: this.minTime,\n maxTime: this.maxTime\n }, undefined, 'day',\n this.componentConfig.locale);\n\n this.onChangeCallback(this.processOnChangeCallback(this.selected));\n }\n\n decrease(unit: TimeUnit) {\n this.selected = this.timeSelectService.decrease(this.componentConfig, this.selected, unit);\n this.emitChange();\n }\n\n increase(unit: TimeUnit) {\n this.selected = this.timeSelectService.increase(this.componentConfig, this.selected, unit);\n this.emitChange();\n }\n\n toggleMeridiem() {\n this.selected = this.timeSelectService.toggleMeridiem(this.selected);\n this.emitChange();\n }\n\n emitChange() {\n this.onChange.emit({date: this.selected, selected: false});\n this.cd.markForCheck();\n }\n\n calculateTimeParts(time: Moment) {\n this.hours = this.timeSelectService.getHours(this.componentConfig, time);\n this.minutes = this.timeSelectService.getMinutes(this.componentConfig, time);\n this.seconds = this.timeSelectService.getSeconds(this.componentConfig, time);\n this.meridiem = this.timeSelectService.getMeridiem(this.componentConfig, time);\n }\n}\n","<ul class=\"dp-time-select-controls\">\n <li class=\"dp-time-select-control dp-time-select-control-hours\">\n <button type=\"button\"\n class=\"dp-time-select-control-up\"\n [disabled]=\"!showIncHour\"\n (click)=\"increase('hour')\">\n </button>\n <span class=\"dp-time-select-display-hours\"\n [innerText]=\"hours\">\n </span>\n <button type=\"button\"\n class=\"dp-time-select-control-down\"\n [disabled]=\"!showDecHour\"\n (click)=\"decrease('hour')\"></button>\n </li>\n <li class=\"dp-time-select-control dp-time-select-separator\"\n [innerText]=\"componentConfig.timeSeparator\">\n </li>\n <li class=\"dp-time-select-control dp-time-select-control-minutes\">\n <button type=\"button\"\n class=\"dp-time-select-control-up\"\n [disabled]=\"!showIncMinute\"\n (click)=\"increase('minute')\"></button>\n <span class=\"dp-time-select-display-minutes\"\n [innerText]=\"minutes\">\n </span>\n <button type=\"button\"\n [disabled]=\"!showDecMinute\" class=\"dp-time-select-control-down\"\n (click)=\"decrease('minute')\"></button>\n </li>\n <ng-container *ngIf=\"componentConfig.showSeconds\">\n <li class=\"dp-time-select-control dp-time-select-separator\"\n [innerText]=\"componentConfig.timeSeparator\">\n </li>\n <li class=\"dp-time-select-control dp-time-select-control-seconds\">\n <button type=\"button\"\n class=\"dp-time-select-control-up\"\n [disabled]=\"!showIncSecond\"\n (click)=\"increase('second')\"></button>\n <span class=\"dp-time-select-display-seconds\"\n [innerText]=\"seconds\">\n </span>\n <button type=\"button\"\n class=\"dp-time-select-control-down\"\n [disabled]=\"!showDecSecond\"\n (click)=\"decrease('second')\"></button>\n </li>\n </ng-container>\n <li class=\"dp-time-select-control dp-time-select-control-meridiem\" *ngIf=\"!componentConfig.showTwentyFourHours\">\n <button type=\"button\"\n class=\"dp-time-select-control-up\"\n [disabled]=\"!showToggleMeridiem\"\n (click)=\"toggleMeridiem()\"></button>\n <span class=\"dp-time-select-display-meridiem\"\n [innerText]=\"meridiem\">\n </span>\n <button type=\"button\"\n class=\"dp-time-select-control-down\"\n [disabled]=\"!showToggleMeridiem\"\n (click)=\"toggleMeridiem()\"></button>\n </li>\n </ul>\n ","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {Moment} from 'jalali-moment';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDate} from '../common/models/date.model';\nimport {DayCalendarService} from '../day-calendar/day-calendar.service';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {IDayTimeCalendarConfig} from './day-time-calendar-config.model';\nimport {DayTimeCalendarService} from './day-time-calendar.service';\nimport {DateValidator} from '../common/types/validator.type';\nimport {DayCalendarComponent} from '../day-calendar/day-calendar.component';\nimport {INavEvent} from '../common/models/navigation-event.model';\n\n@Component({\n selector: 'dp-day-time-calendar',\n templateUrl: 'day-time-calendar.component.html',\n styleUrls: ['day-time-calendar.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n DayTimeCalendarService,\n DayCalendarService,\n TimeSelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DayTimeCalendarComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DayTimeCalendarComponent),\n multi: true\n }\n ]\n})\nexport class DayTimeCalendarComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n @Input() config: IDayTimeCalendarConfig;\n @Input() displayDate: SingleCalendarValue;\n @Input() minDate: SingleCalendarValue;\n @Input() maxDate: SingleCalendarValue;\n @HostBinding('class') @Input() theme: string;\n\n @Output() onChange: EventEmitter<IDate> = new EventEmitter();\n @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n\n @ViewChild('dayCalendar') dayCalendarRef: DayCalendarComponent;\n\n isInited: boolean = false;\n componentConfig: IDayTimeCalendarConfig;\n _selected: Moment;\n inputValue: CalendarValue;\n inputValueType: ECalendarValue;\n validateFn: DateValidator;\n\n set selected(selected: Moment) {\n this._selected = selected;\n this.onChangeCallback(this.processOnChangeCallback(selected));\n }\n\n get selected(): Moment {\n return this._selected;\n }\n\n api = {\n moveCalendarTo: this.moveCalendarTo.bind(this)\n };\n\n constructor(public dayTimeCalendarService: DayTimeCalendarService,\n public utilsService: UtilsService,\n public cd: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n this.isInited = true;\n this.init();\n this.initValidators();\n }\n\n init() {\n this.componentConfig = this.dayTimeCalendarService.getConfig(this.config);\n this.inputValueType = this.utilsService.getInputType(this.inputValue, false);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isInited) {\n const {minDate, maxDate} = changes;\n this.init();\n\n if (minDate || maxDate) {\n this.initValidators();\n }\n }\n }\n\n writeValue(value: CalendarValue): void {\n this.inputValue = value;\n\n if (value) {\n this.selected = this.utilsService\n .convertToMomentArray(value, this.componentConfig.format, false, this.componentConfig.locale)[0];\n this.inputValueType = this.utilsService\n .getInputType(this.inputValue, false);\n } else {\n this.selected = null;\n }\n\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n onChangeCallback(_: any) {\n };\n\n registerOnTouched(fn: any): void {\n }\n\n validate(formControl: FormControl): ValidationErrors | any {\n if (this.minDate || this.maxDate) {\n return this.validateFn(formControl.value);\n } else {\n return () => null;\n }\n }\n\n processOnChangeCallback(value: Moment): CalendarValue {\n return this.utilsService.convertFromMomentArray(\n this.componentConfig.format,\n [value],\n this.componentConfig.returnedValueType || this.inputValueType,\n this.componentConfig.locale\n );\n }\n\n initValidators() {\n this.validateFn = this.utilsService.createValidator(\n {\n minDate: this.minDate,\n maxDate: this.maxDate\n }, undefined, 'daytime',\n this.componentConfig.locale);\n\n this.onChangeCallback(this.processOnChangeCallback(this.selected));\n }\n\n dateSelected(day: IDate) {\n this.selected = this.dayTimeCalendarService.updateDay(this.selected, day.date, this.config);\n this.emitChange();\n }\n\n timeChange(time: IDate) {\n this.selected = this.dayTimeCalendarService.updateTime(this.selected, time.date);\n this.emitChange();\n }\n\n emitChange() {\n this.onChange.emit({date: this.selected, selected: false});\n }\n\n moveCalendarTo(to: SingleCalendarValue) {\n if (to) {\n this.dayCalendarRef.moveCalendarTo(to);\n }\n }\n\n onLeftNavClick(change: INavEvent) {\n this.onLeftNav.emit(change);\n }\n\n onRightNavClick(change: INavEvent) {\n this.onRightNav.emit(change);\n }\n}\n","<dp-day-calendar #dayCalendar\n [config]=\"componentConfig\"\n [ngModel]=\"_selected\"\n [theme]=\"theme\"\n [displayDate]=\"displayDate\"\n (onSelect)=\"dateSelected($event)\"\n (onGoToCurrent)=\"onGoToCurrent.emit()\"\n (onLeftNav)=\"onLeftNavClick($event)\"\n (onRightNav)=\"onRightNavClick($event)\">\n</dp-day-calendar>\n<dp-time-select #timeSelect\n [config]=\"componentConfig\"\n [ngModel]=\"_selected\"\n (onChange)=\"timeChange($event)\"\n [theme]=\"theme\">\n</dp-time-select>\n","import moment from 'jalali-moment';\nimport {IDate} from '../common/models/date.model';\nimport {DomHelper} from '../common/services/dom-appender/dom-appender.service';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {CalendarMode} from '../common/types/calendar-mode';\nimport {ECalendarMode} from '../common/types/calendar-mode-enum';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {IDayCalendarConfig} from '../day-calendar/day-calendar-config.model';\nimport {DayCalendarComponent} from '../day-calendar/day-calendar.component';\nimport {DayCalendarService} from '../day-calendar/day-calendar.service';\nimport {IDayTimeCalendarConfig} from '../day-time-calendar/day-time-calendar-config.model';\nimport {DayTimeCalendarService} from '../day-time-calendar/day-time-calendar.service';\nimport {ITimeSelectConfig} from '../time-select/time-select-config.model';\nimport {TimeSelectComponent} from '../time-select/time-select.component';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {IDatePickerConfig, IDatePickerConfigInternal} from './date-picker-config.model';\nimport {IDpDayPickerApi} from './date-picker.api';\nimport {DatePickerService} from './date-picker.service';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {Moment, unitOfTime} from 'jalali-moment';\nimport {DateValidator} from '../common/types/validator.type';\nimport {MonthCalendarComponent} from '../month-calendar/month-calendar.component';\nimport {DayTimeCalendarComponent} from '../day-time-calendar/day-time-calendar.component';\nimport {INavEvent} from '../common/models/navigation-event.model';\n\n@Component({\n selector: 'dp-date-picker',\n templateUrl: 'date-picker.component.html',\n styleUrls: ['date-picker.component.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DatePickerService,\n DayTimeCalendarService,\n DayCalendarService,\n TimeSelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n }\n ]\n})\nexport class DatePickerComponent implements OnChanges,\n OnInit,\n AfterViewInit,\n ControlValueAccessor,\n Validator,\n OnDestroy {\n isInitialized: boolean = false;\n @Input() config: IDatePickerConfig;\n @Input() mode: CalendarMode = 'day';\n @Input() placeholder: string = '';\n @Input() disabled: boolean = false;\n @Input() displayDate: SingleCalendarValue;\n @HostBinding('class') @Input() theme: string;\n @Input() minDate: SingleCalendarValue;\n @Input() maxDate: SingleCalendarValue;\n @Input() minTime: SingleCalendarValue;\n @Input() maxTime: SingleCalendarValue;\n\n @Output() open = new EventEmitter<void>();\n @Output() close = new EventEmitter<void>();\n @Output() onChange = new EventEmitter<CalendarValue>();\n @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n\n @ViewChild('container') calendarContainer: ElementRef;\n @ViewChild('dayCalendar') dayCalendarRef: DayCalendarComponent;\n @ViewChild('monthCalendar') monthCalendarRef: MonthCalendarComponent;\n @ViewChild('daytimeCalendar') dayTimeCalendarRef: DayTimeCalendarComponent;\n @ViewChild('timeSelect') timeSelectRef: TimeSelectComponent;\n\n componentConfig: IDatePickerConfigInternal;\n dayCalendarConfig: IDayCalendarConfig;\n dayTimeCalendarConfig: IDayTimeCalendarConfig;\n timeSelectConfig: ITimeSelectConfig;\n _areCalendarsShown: boolean = false;\n hideStateHelper: boolean = false;\n _selected: Moment[] = [];\n inputValue: CalendarValue;\n inputValueType: ECalendarValue;\n isFocusedTrigger: boolean = false;\n _currentDateView: Moment;\n inputElementValue: string;\n calendarWrapper: HTMLElement;\n appendToElement: HTMLElement;\n inputElementContainer: HTMLElement;\n popupElem: HTMLElement;\n handleInnerElementClickUnlisteners: Function[] = [];\n globalListnersUnlisteners: Function[] = [];\n validateFn: DateValidator;\n api: IDpDayPickerApi = {\n open: this.showCalendars.bind(this),\n close: this.hideCalendar.bind(this),\n moveCalendarTo: this.moveCalendarTo.bind(this)\n };\n\n set selected(selected: Moment[]) {\n this._selected = selected;\n this.inputElementValue = (<string[]>this.utilsService\n .convertFromMomentArray(this.componentConfig.format, selected, ECalendarValue.StringArr, this.componentConfig.locale))\n .join(' | ');\n const val = this.processOnChangeCallback(selected);\n this.onChangeCallback(val, false);\n this.onChange.emit(val);\n }\n\n get selected(): Moment[] {\n return this._selected;\n }\n\n get areCalendarsShown(): boolean {\n return this._areCalendarsShown;\n }\n\n get openOnFocus(): boolean {\n return this.componentConfig.openOnFocus;\n }\n\n get openOnClick(): boolean {\n return this.componentConfig.openOnClick;\n }\n\n set areCalendarsShown(value: boolean) {\n if (value) {\n this.startGlobalListeners();\n this.domHelper.appendElementToPosition({\n container: this.appendToElement,\n element: this.calendarWrapper,\n anchor: this.inputElementContainer,\n dimElem: this.popupElem,\n drops: this.componentConfig.drops,\n opens: this.componentConfig.opens\n });\n } else {\n this.stopGlobalListeners();\n this.dayPickerService.pickerClosed();\n }\n\n this._areCalendarsShown = value;\n }\n\n get currentDateView(): Moment {\n return this._currentDateView;\n }\n\n set currentDateView(date: Moment) {\n this._currentDateView = date;\n\n if (this.dayCalendarRef) {\n this.dayCalendarRef.moveCalendarTo(date);\n }\n\n if (this.monthCalendarRef) {\n this.monthCalendarRef.moveCalendarTo(date);\n }\n\n if (this.dayTimeCalendarRef) {\n this.dayTimeCalendarRef.moveCalendarTo(date);\n }\n }\n\n constructor(private readonly dayPickerService: DatePickerService,\n private readonly domHelper: DomHelper,\n private readonly elemRef: ElementRef,\n private readonly renderer: Renderer2,\n private readonly utilsService: UtilsService,\n public readonly cd: ChangeDetectorRef) {\n }\n\n @HostListener('click')\n onClick() {\n if (!this.openOnClick) {\n return;\n }\n\n if (!this.isFocusedTrigger && !this.disabled) {\n this.hideStateHelper = true;\n if (!this.areCalendarsShown) {\n this.showCalendars();\n }\n }\n }\n\n onBodyClick() {\n if (this.componentConfig.hideOnOutsideClick) {\n if (!this.hideStateHelper && this.areCalendarsShown) {\n this.hideCalendar();\n }\n\n this.hideStateHelper = false;\n }\n }\n\n @HostListener('window:resize')\n onScroll() {\n if (this.areCalendarsShown) {\n this.domHelper.setElementPosition({\n container: this.appendToElement,\n element: this.calendarWrapper,\n anchor: this.inputElementContainer,\n dimElem: this.popupElem,\n drops: this.componentConfig.drops,\n opens: this.componentConfig.opens\n });\n }\n }\n\n writeValue(value: CalendarValue): void {\n this.inputValue = value;\n\n if (value || value === '') {\n this.selected = this.utilsService\n .convertToMomentArray(value, this.componentConfig.format, this.componentConfig.allowMultiSelect, this.componentConfig.locale);\n this.currentDateView = this.selected.length\n ? this.utilsService.getDefaultDisplayDate(null, this.selected, this.componentConfig.allowMultiSelect,\n this.componentConfig.min, this.componentConfig.locale)\n : this.currentDateView;\n this.init();\n } else {\n this.selected = [];\n }\n\n this.cd.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n onChangeCallback(_: any, changedByInput: boolean) {\n };\n\n registerOnTouched(fn: any): void {\n }\n\n validate(formControl: FormControl): ValidationErrors {\n return this.validateFn(formControl.value);\n }\n\n processOnChangeCallback(selected: Moment[] | string): CalendarValue {\n if (typeof selected === 'string') {\n return selected;\n } else {\n return this.utilsService.convertFromMomentArray(\n this.componentConfig.format,\n selected,\n this.componentConfig.returnedValueType || this.inputValueType,\n this.componentConfig.locale\n );\n }\n }\n\n initValidators() {\n this.validateFn = this.utilsService.createValidator(\n {\n minDate: this.minDate,\n maxDate: this.maxDate,\n minTime: this.minTime,\n maxTime: this.maxTime\n }, this.componentConfig.format, this.mode, this.componentConfig.locale);\n this.onChangeCallback(this.processOnChangeCallback(this.selected), false);\n }\n\n ngOnInit() {\n this.isInitialized = true;\n this.init();\n this.initValidators();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isInitialized) {\n const {minDate, maxDate, minTime, maxTime} = changes;\n\n this.init();\n\n if (minDate || maxDate || minTime || maxTime) {\n this.initValidators();\n }\n }\n }\n\n ngAfterViewInit() {\n this.setElementPositionInDom();\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n setElementPositionInDom() {\n this.calendarWrapper = <HTMLElement> this.calendarContainer.nativeElement;\n this.setInputElementContainer();\n this.popupElem = this.elemRef.nativeElement.querySelector('.dp-popup');\n this.handleInnerElementClick(this.popupElem);\n\n const {appendTo} = this.componentConfig;\n if (appendTo) {\n if (typeof appendTo === 'string') {\n this.appendToElement = <HTMLElement>document.querySelector(<string>appendTo);\n } else {\n this.appendToElement = <HTMLElement>appendTo;\n }\n } else {\n this.appendToElement = this.elemRef.nativeElement;\n }\n\n this.appendToElement.appendChild(this.calendarWrapper);\n }\n\n setInputElementContainer() {\n this.inputElementContainer = this.utilsService.getNativeElement(this.componentConfig.inputElementContainer)\n || this.elemRef.nativeElement.querySelector('.dp-input-container')\n || document.body;\n }\n\n handleInnerElementClick(element: HTMLElement) {\n this.handleInnerElementClickUnlisteners.push(\n this.renderer.listen(element, 'click', () => {\n this.hideStateHelper = true;\n })\n );\n }\n\n init() {\n this.componentConfig = this.dayPickerService.getConfig(this.config, this.mode);\n this.currentDateView = this.displayDate\n ? this.utilsService.convertToMoment(this.displayDate, this.componentConfig.format, this.componentConfig.locale).clone()\n : this.utilsService\n .getDefaultDisplayDate(\n this.currentDateView,\n this.selected,\n this.componentConfig.allowMultiSelect,\n this.componentConfig.min,\n this.componentConfig.locale\n );\n this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n this.dayCalendarConfig = this.dayPickerService.getDayConfigService(this.componentConfig);\n this.dayTimeCalendarConfig = this.dayPickerService.getDayTimeConfigService(this.componentConfig);\n this.timeSelectConfig = this.dayPickerService.getTimeConfigService(this.componentConfig);\n }\n\n inputFocused() {\n if (!this.openOnFocus) {\n return;\n }\n\n this.isFocusedTrigger = true;\n setTimeout(() => {\n this.hideStateHelper = false;\n\n if (!this.areCalendarsShown) {\n this.showCalendars();\n }\n\n this.isFocusedTrigger = false;\n }, this.componentConfig.onOpenDelay);\n }\n\n showCalendars() {\n this.hideStateHelper = true;\n this.areCalendarsShown = true;\n\n if (this.timeSelectRef) {\n this.timeSelectRef.api.triggerChange();\n }\n\n this.open.emit();\n this.cd.markForCheck();\n }\n\n hideCalendar() {\n this.areCalendarsShown = false;\n\n if (this.dayCalendarRef) {\n this.dayCalendarRef.api.toggleCalendarMode(ECalendarMode.Day);\n }\n\n this.close.emit();\n this.cd.markForCheck();\n }\n\n onViewDateChange(value: CalendarValue) {\n let strVal = value ? this.utilsService.convertToString(value, this.componentConfig.format, this.componentConfig.locale) : '';\n if (this.dayPickerService.isValidInputDateValue(strVal, this.componentConfig)) {\n if (strVal && this.componentConfig.locale === 'fa') {\n // convert jalali to gregorian\n strVal = moment.from(strVal, 'fa', this.componentConfig.format).format(this.componentConfig.format);\n }\n this.selected = this.dayPickerService.convertInputValueToMomentArray(strVal, this.componentConfig);\n this.currentDateView = this.selected.length\n ? this.utilsService.getDefaultDisplayDate(\n null,\n this.selected,\n this.componentConfig.allowMultiSelect,\n this.componentConfig.min,\n this.componentConfig.locale\n )\n : this.currentDateView;\n } else {\n this._selected = this.utilsService\n .getValidMomentArray(strVal, this.componentConfig.format, this.componentConfig.locale);\n this.onChangeCallback(this.processOnChangeCallback(strVal), true);\n }\n }\n\n dateSelected(date: IDate, granularity: unitOfTime.Base, ignoreClose?: boolean) {\n this.selected = this.utilsService\n .updateSelected(this.componentConfig.allowMultiSelect, this.selected, date, granularity);\n this.onDateClick();\n }\n\n async onDateClick() {\n if (this.componentConfig.closeOnSelect) {\n const cond = await this.checkClass();\n if (cond) {\n setTimeout(this.hideCalendar.bind(this), this.componentConfig.closeOnSelectDelay);\n }\n }\n }\n\n checkClass(): any {\n return new Promise(function (resolve, reject) {\n document.onclick = (evt) => {\n if (evt.target['className'].includes('dp-calendar-day')) {\n resolve(true);\n } else {\n resolve(false);\n }\n }\n })\n }\n\n onKeyPress(event: KeyboardEvent) {\n switch (event.keyCode) {\n case (9):\n case (27):\n this.hideCalendar();\n break;\n }\n }\n\n moveCalendarTo(date: SingleCalendarValue) {\n const momentDate = this.utilsService.convertToMoment(date, this.componentConfig.format, this.componentConfig.locale);\n this.currentDateView = momentDate;\n }\n\n onLeftNavClick(change: INavEvent) {\n this.onLeftNav.emit(change);\n }\n\n onRightNavClick(change: INavEvent) {\n this.onRightNav.emit(change);\n }\n\n startGlobalListeners() {\n this.globalListnersUnlisteners.push(\n this.renderer.listen(document, 'keydown', (e: KeyboardEvent) => {\n this.onKeyPress(e);\n }),\n this.renderer.listen(document, 'scroll', () => {\n this.onScroll();\n }),\n this.renderer.listen(document, 'click', () => {\n this.onBodyClick();\n })\n );\n }\n\n changeLocale (locale) {\n this.dayCalendarConfig = {...this.dayCalendarConfig, ...{locale}};\n this.dayTimeCalendarConfig = {...this.dayTimeCalendarConfig, ...{locale}};\n }\n\n stopGlobalListeners() {\n this.globalListnersUnlisteners.forEach((ul) => ul());\n this.globalListnersUnlisteners = [];\n }\n\n ngOnDestroy() {\n this.handleInnerElementClickUnlisteners.forEach(ul => ul());\n\n if (this.appendToElement) {\n this.appendToElement.removeChild(this.calendarWrapper);\n }\n }\n}\n","<div [ngClass]=\"{'dp-open': areCalendarsShown}\">\n <div class=\"dp-input-container\"\n [hidden]=\"componentConfig.hideInputContainer\"\n [attr.data-hidden]=\"componentConfig.hideInputContainer\">\n <input type=\"text\"\n class=\"dp-picker-input\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"inputElementValue\"\n (ngModelChange)=\"onViewDateChange($event)\"\n (focus)=\"inputFocused()\"\n [readonly]=\"componentConfig.disableKeypress\"\n [disabled]=\"disabled\"/>\n </div>\n <div #container>\n <div class=\"dp-popup {{theme}}\"\n [ngSwitch]=\"mode\"\n [hidden]=\"!_areCalendarsShown\"\n [attr.data-hidden]=\"!_areCalendarsShown\">\n <dp-day-calendar #dayCalendar\n *ngSwitchCase=\"'day'\"\n [config]=\"dayCalendarConfig\"\n [ngModel]=\"_selected\"\n [displayDate]=\"displayDate\"\n [theme]=\"theme\"\n (onSelect)=\"dateSelected($event, 'day')\"\n (onGoToCurrent)=\"onGoToCurrent.emit()\"\n (onLeftNav)=\"onLeftNavClick($event)\"\n (onRightNav)=\"onRightNavClick($event)\">\n </dp-day-calendar>\n\n <dp-month-calendar #monthCalendar\n *ngSwitchCase=\"'month'\"\n [config]=\"dayCalendarConfig\"\n [ngModel]=\"_selected\"\n [displayDate]=\"displayDate\"\n [theme]=\"theme\"\n (onSelect)=\"dateSelected($event, 'month')\"\n (onGoToCurrent)=\"onGoToCurrent.emit()\"\n (onLeftNav)=\"onLeftNavClick($event)\"\n (onRightNav)=\"onRightNavClick($event)\">\n </dp-month-calendar>\n\n <dp-time-select #timeSelect\n *ngSwitchCase=\"'time'\"\n [config]=\"timeSelectConfig\"\n [ngModel]=\"_selected && _selected[0]\"\n (onChange)=\"dateSelected($event, 'second', true)\"\n [theme]=\"theme\">\n </dp-time-select>\n\n <dp-day-time-calendar #daytimeCalendar\n *ngSwitchCase=\"'daytime'\"\n [config]=\"dayTimeCalendarConfig\"\n [displayDate]=\"displayDate\"\n [ngModel]=\"_selected && _selected[0]\"\n [theme]=\"theme\"\n (onChange)=\"dateSelected($event, 'second', true)\"\n (onGoToCurrent)=\"onGoToCurrent.emit()\"\n (onLeftNav)=\"onLeftNavClick($event)\"\n (onRightNav)=\"onRightNavClick($event)\">\n </dp-day-time-calendar>\n </div>\n </div>\n</div>\n","import {UtilsService} from '../common/services/utils/utils.service';\nimport {IDatePickerDirectiveConfig} from './date-picker-directive-config.model';\nimport {ElementRef, Injectable} from '@angular/core';\n\n@Injectable()\nexport class DatePickerDirectiveService {\n constructor(public utilsService: UtilsService) {\n }\n\n convertToHTMLElement(attachTo: ElementRef | string, baseElement: HTMLElement): HTMLElement {\n if (typeof attachTo === 'string') {\n return this.utilsService.closestParent(baseElement, attachTo);\n } else if (attachTo) {\n return attachTo.nativeElement;\n }\n\n return undefined;\n }\n\n getConfig(config: IDatePickerDirectiveConfig = {},\n baseElement?: ElementRef,\n attachTo?: ElementRef | string): IDatePickerDirectiveConfig {\n const _config: IDatePickerDirectiveConfig = {...config};\n _config.hideInputContainer = true;\n\n let native;\n\n if (config.inputElementContainer) {\n native = this.utilsService.getNativeElement(config.inputElementContainer);\n } else {\n native = baseElement ? baseElement.nativeElement : null;\n }\n\n if (native) {\n _config.inputElementContainer = attachTo\n ? this.convertToHTMLElement(attachTo, native)\n : native;\n }\n\n return _config;\n }\n}\n","import {CalendarMode} from '../common/types/calendar-mode';\nimport {IDatePickerDirectiveConfig} from './date-picker-directive-config.model';\nimport {DatePickerDirectiveService} from './date-picker-directive.service';\nimport {IDpDayPickerApi} from './date-picker.api';\nimport {DatePickerComponent} from './date-picker.component';\nimport {\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Optional,\n Output,\n ViewContainerRef\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {INavEvent} from '../common/models/navigation-event.model';\nimport {UtilsService} from '../common/services/utils/utils.service'\n\n@Directive({\n exportAs: 'dpDayPicker',\n providers: [DatePickerDirectiveService],\n selector: '[dpDayPicker]'\n})\nexport class DatePickerDirective implements OnInit {\n private _config: IDatePickerDirectiveConfig;\n private _attachTo: ElementRef | string;\n private _theme: string;\n private _mode: CalendarMode = 'day';\n private _minDate: SingleCalendarValue;\n private _maxDate: SingleCalendarValue;\n private _minTime: SingleCalendarValue;\n private _maxTime: SingleCalendarValue;\n private _displayDate: SingleCalendarValue;\n\n get config(): IDatePickerDirectiveConfig {\n return this._config;\n }\n\n @Input('dpDayPicker') set config(config: IDatePickerDirectiveConfig) {\n this._config = this.service.getConfig(config, this.viewContainerRef.element, this.attachTo);\n this.updateDatepickerConfig();\n this.markForCheck();\n }\n\n get attachTo(): ElementRef | string {\n return this._attachTo;\n }\n\n @Input() set attachTo(attachTo: ElementRef | string) {\n this._attachTo = attachTo;\n this._config = this.service.getConfig(this.config, this.viewContainerRef.element, this.attachTo);\n this.updateDatepickerConfig();\n this.markForCheck();\n }\n\n get theme(): string {\n return this._theme;\n }\n\n @Input() set theme(theme: string) {\n this._theme = theme;\n if (this.datePicker) {\n this.datePicker.theme = theme;\n }\n\n this.markForCheck();\n }\n\n get mode(): CalendarMode {\n return this._mode;\n }\n\n @Input() set mode(mode: CalendarMode) {\n this._mode = mode;\n if (this.datePicker) {\n this.datePicker.mode = mode;\n }\n\n this.markForCheck();\n }\n\n @Input() set minDate(minDate: SingleCalendarValue) {\n this._minDate = minDate;\n if (this.datePicker) {\n this.datePicker.minDate = minDate;\n this.datePicker.ngOnInit();\n }\n\n this.markForCheck();\n }\n\n get minDate(): SingleCalendarValue {\n return this._minDate;\n }\n\n @Input() set maxDate(maxDate: SingleCalendarValue) {\n this._maxDate = maxDate;\n if (this.datePicker) {\n this.datePicker.maxDate = maxDate;\n this.datePicker.ngOnInit();\n }\n\n this.markForCheck();\n }\n\n get maxDate(): SingleCalendarValue {\n return this._maxDate;\n }\n\n @Input() set minTime(minTime: SingleCalendarValue) {\n this._minTime = minTime;\n if (this.datePicker) {\n this.datePicker.minTime = minTime;\n this.datePicker.ngOnInit();\n }\n\n this.markForCheck();\n }\n\n get minTime(): SingleCalendarValue {\n return this._minTime;\n }\n\n @Input() set maxTime(maxTime: SingleCalendarValue) {\n this._maxTime = maxTime;\n if (this.datePicker) {\n this.datePicker.maxTime = maxTime;\n this.datePicker.ngOnInit();\n }\n\n this.markForCheck();\n }\n\n get maxTime(): SingleCalendarValue {\n return this._maxTime;\n }\n\n get displayDate(): SingleCalendarValue {\n return this._displayDate;\n }\n\n @Input() set displayDate(displayDate: SingleCalendarValue) {\n this._displayDate = displayDate;\n this.updateDatepickerConfig();\n\n this.markForCheck();\n }\n\n @Output() open = new EventEmitter<void>();\n @Output() close = new EventEmitter<void>();\n @Output() onChange = new EventEmitter<CalendarValue>();\n @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n\n public datePicker: DatePickerComponent;\n public api: IDpDayPickerApi;\n\n constructor(public viewContainerRef: ViewContainerRef,\n public elemRef: ElementRef,\n public componentFactoryResolver: ComponentFactoryResolver,\n public service: DatePickerDirectiveService,\n @Optional() public formControl: NgControl,\n public utilsService: UtilsService) {\n }\n\n ngOnInit(): void {\n this.datePicker = this.createDatePicker();\n this.api = this.datePicker.api;\n this.updateDatepickerConfig();\n this.attachModelToDatePicker();\n this.datePicker.theme = this.theme;\n }\n\n createDatePicker(): DatePickerComponent {\n const factory = this.componentFactoryResolver.resolveComponentFactory(DatePickerComponent);\n return this.viewContainerRef.createComponent(factory).instance;\n }\n\n attachModelToDatePicker() {\n if (!this.formControl) {\n return;\n }\n\n this.datePicker.onViewDateChange(this.formControl.value);\n\n this.formControl.valueChanges.subscribe((value) => {\n if (value !== this.datePicker.inputElementValue) {\n const strVal = this.utilsService.convertToString(value, this.datePicker.componentConfig.format,\n this.datePicker.componentConfig.locale);\n this.datePicker.onViewDateChange(strVal);\n }\n });\n\n let setup = true;\n\n this.datePicker.registerOnChange((value, changedByInput) => {\n if (value) {\n const isMultiselectEmpty = setup && Array.isArray(value) && !value.length;\n\n if (!isMultiselectEmpty && !changedByInput) {\n this.formControl.control.setValue(this.datePicker.inputElementValue);\n }\n }\n\n const errors = this.datePicker.validateFn(value);\n\n if (!setup) {\n this.formControl.control.markAsDirty({\n onlySelf: true\n });\n } else {\n setup = false;\n }\n\n if (errors) {\n if (errors.hasOwnProperty('format')) {\n const {given} = errors['format'];\n this.datePicker.inputElementValue = given;\n if (!changedByInput) {\n this.formControl.control.setValue(given);\n }\n }\n\n this.formControl.control.setErrors(errors);\n }\n });\n }\n\n @HostListener('click')\n onClick() {\n this.datePicker.onClick();\n }\n\n @HostListener('focus')\n onFocus() {\n this.datePicker.inputFocused();\n }\n\n private updateDatepickerConfig() {\n if (this.datePicker) {\n this.datePicker.minDate = this.minDate;\n this.datePicker.maxDate = this.maxDate;\n this.datePicker.minTime = this.minTime;\n this.datePicker.maxTime = this.maxTime;\n this.datePicker.mode = this.mode || 'day';\n this.datePicker.displayDate = this.displayDate;\n this.datePicker.config = this.config;\n this.datePicker.open = this.open;\n this.datePicker.close = this.close;\n this.datePicker.onChange = this.onChange;\n this.datePicker.onGoToCurrent = this.onGoToCurrent;\n this.datePicker.onLeftNav = this.onLeftNav;\n this.datePicker.onRightNav = this.onRightNav;\n\n this.datePicker.init();\n\n if (this.datePicker.componentConfig.disableKeypress) {\n this.elemRef.nativeElement.setAttribute('readonly', true);\n } else {\n this.elemRef.nativeElement.removeAttribute('readonly');\n }\n }\n }\n\n markForCheck() {\n if (this.datePicker) {\n this.datePicker.cd.markForCheck();\n }\n }\n}\n","import {NgModule} from '@angular/core';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {CommonModule} from '@angular/common';\r\nimport {DatePickerComponent} from './date-picker/date-picker.component';\r\nimport {DatePickerDirective} from './date-picker/date-picker.directive';\r\nimport {DayCalendarComponent} from './day-calendar/day-calendar.component';\r\nimport {MonthCalendarComponent} from './month-calendar/month-calendar.component';\r\nimport {TimeSelectComponent} from './time-select/time-select.component';\r\nimport {CalendarNavComponent} from './calendar-nav/calendar-nav.component';\r\nimport {DayTimeCalendarComponent} from './day-time-calendar/day-time-calendar.component';\r\nimport { DomHelper } from './common/services/dom-appender/dom-appender.service';\r\nimport { UtilsService } from './common/services/utils/utils.service';\r\n\r\nexport {DatePickerComponent} from './date-picker/date-picker.component';\r\nexport {DatePickerDirective} from './date-picker/date-picker.directive';\r\nexport {DayCalendarComponent} from './day-calendar/day-calendar.component';\r\nexport {DayTimeCalendarComponent} from './day-time-calendar/day-time-calendar.component';\r\nexport {TimeSelectComponent} from './time-select/time-select.component';\r\nexport {MonthCalendarComponent} from './month-calendar/month-calendar.component';\r\n\r\n@NgModule({\r\n providers: [\r\n DomHelper,\r\n UtilsService\r\n ],\r\n declarations: [\r\n DatePickerComponent,\r\n DatePickerDirective,\r\n DayCalendarComponent,\r\n MonthCalendarComponent,\r\n CalendarNavComponent,\r\n TimeSelectComponent,\r\n DayTimeCalendarComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n exports: [\r\n DatePickerComponent,\r\n DatePickerDirective,\r\n MonthCalendarComponent,\r\n DayCalendarComponent,\r\n TimeSelectComponent,\r\n DayTimeCalendarComponent\r\n ]\r\n})\r\nexport class DpDatePickerModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UtilsService","i2.DayCalendarService","i3.TimeSelectService","i2.TimeSelectService","i3.DayTimeCalendarService","i1","i1.MonthCalendarService","i2.UtilsService","i4.CalendarNavComponent","i1.DayCalendarService","i4.MonthCalendarComponent","i5.CalendarNavComponent","i1.TimeSelectService","i1.DayTimeCalendarService","i3","i4.DayCalendarComponent","i5.TimeSelectComponent","i1.DatePickerService","i2.DomHelper","i3.UtilsService","i4","i6.DayCalendarComponent","i7.MonthCalendarComponent","i8.TimeSelectComponent","i9.DayTimeCalendarComponent","i1.DatePickerDirectiveService","i2"],"mappings":"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"}