{"version":3,"file":"mds.bs.datetimepicker.js","mappings":"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","sources":["webpack://md.bootstrappersiandatetimepicker/./src/mds.bs.datetimepicker-exposed.ts","webpack://md.bootstrappersiandatetimepicker/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://md.bootstrappersiandatetimepicker/./src/mds.bs.datetimepicker.ts","webpack://md.bootstrappersiandatetimepicker/external \"bootstrap\"","webpack://md.bootstrappersiandatetimepicker/webpack/bootstrap","webpack://md.bootstrappersiandatetimepicker/webpack/runtime/global","webpack://md.bootstrappersiandatetimepicker/webpack/before-startup","webpack://md.bootstrappersiandatetimepicker/webpack/startup","webpack://md.bootstrappersiandatetimepicker/webpack/after-startup"],"sourcesContent":["var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../node_modules/ts-loader/index.js!./mds.bs.datetimepicker.ts\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"mds\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"mds\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n\n return g;\n}();","import { Popover } from \"bootstrap\";\r\n\r\nexport class MdsPersianDateTimePicker {\r\n constructor(element: Element, setting: MdsPersianDateTimePickerSetting) {\r\n setting = this.extend(new MdsPersianDateTimePickerSetting(), setting);\r\n if (!element) throw new Error(`MdsPersianDateTimePicker => element is null!`);\r\n if (setting.rangeSelector && (setting.toDate || setting.fromDate)) throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' or 'fromDate' and 'rangeSelector' together`);\r\n if (setting.toDate && setting.fromDate) throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' and 'fromDate' together`);\r\n if (!setting.groupId && (setting.toDate || setting.fromDate)) throw new Error(`MdsPersianDateTimePicker => When you set 'toDate' or 'fromDate' true, you have to set 'groupId'`);\r\n\r\n if (!setting.textFormat) {\r\n setting.textFormat = 'yyyy/MM/dd';\r\n if (setting.enableTimePicker)\r\n setting.textFormat += ' HH:mm';\r\n }\r\n if (!setting.dateFormat) {\r\n setting.dateFormat = 'yyyy/MM/dd';\r\n if (setting.enableTimePicker)\r\n setting.dateFormat += ' HH:mm';\r\n }\r\n if (setting.yearOffset > 15)\r\n setting.yearOffset = 15;\r\n\r\n this.setting = setting;\r\n this.setting.selectedDate = setting.selectedDate ? this.getClonedDate(setting.selectedDate) : null;\r\n this.setting.selectedDateToShow = setting.selectedDateToShow ? this.getClonedDate(setting.selectedDateToShow) : this.getClonedDate(setting.selectedDate);\r\n\r\n this.guid = this.newGuid();\r\n this.element = element;\r\n this.element.setAttribute(\"data-mds-dtp-guid\", this.guid);\r\n MdsPersianDateTimePickerData.set(this.guid, this);\r\n\r\n this.initializeBsPopover(setting);\r\n }\r\n\r\n // #region jalali calendar\r\n\r\n private toJalali(gy: number, gm: number, gd: number) {\r\n return this.d2j(this.g2d(gy, gm, gd));\r\n }\r\n private toGregorian(jy: number, jm: number, jd: number) {\r\n return this.d2g(this.j2d(jy, jm, jd));\r\n }\r\n private isValidJalaliDate(jy: number, jm: number, jd: number) {\r\n return jy >= -61 && jy <= 3177 &&\r\n jm >= 1 && jm <= 12 &&\r\n jd >= 1 && jd <= this.jalaliMonthLength(jy, jm);\r\n }\r\n private isLeapJalaliYear(jy: number) {\r\n return this.jalCal(jy).leap === 0;\r\n }\r\n private jalaliMonthLength(jy: number, jm: number) {\r\n if (jm <= 6) return 31;\r\n if (jm <= 11) return 30;\r\n if (this.isLeapJalaliYear(jy)) return 30;\r\n return 29;\r\n }\r\n private jalCal(jy: number) {\r\n // Jalali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178],\r\n bl = breaks.length,\r\n gy = jy + 621,\r\n leapJ = -14,\r\n jp = breaks[0],\r\n jm,\r\n jump = 1,\r\n leap,\r\n n,\r\n i;\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalali year ' + jy);\r\n\r\n // Find the limiting years for the Jalali year jy.\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i];\r\n jump = jm - jp;\r\n if (jy < jm)\r\n break;\r\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);\r\n jp = jm;\r\n }\r\n n = jy - jp;\r\n\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalali year in the Persian calendar.\r\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);\r\n if (this.mod(jump, 33) === 4 && jump - n === 4)\r\n leapJ += 1;\r\n\r\n // And the same in the Gregorian calendar (until the year gy).\r\n let leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;\r\n\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n let march = 20 + leapJ - leapG;\r\n\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6)\r\n n = n - jump + this.div(jump + 4, 33) * 33;\r\n leap = this.mod(this.mod(n + 1, 33) - 1, 4);\r\n if (leap === -1) leap = 4;\r\n\r\n return {\r\n leap: leap,\r\n gy: gy,\r\n march: march\r\n };\r\n }\r\n private j2d(jy: number, jm: number, jd: number) {\r\n let r = this.jalCal(jy);\r\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;\r\n }\r\n private d2j(jdn: number) {\r\n let gy = this.d2g(jdn).gy, // Calculate Gregorian year (gy).\r\n jy = gy - 621,\r\n r = this.jalCal(jy),\r\n jdn1F = this.g2d(gy, 3, r.march),\r\n jd,\r\n jm,\r\n k;\r\n\r\n // Find number of days that passed since 1 Farvardin.\r\n k = jdn - jdn1F;\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n // The first 6 months.\r\n jm = 1 + this.div(k, 31);\r\n jd = this.mod(k, 31) + 1;\r\n return {\r\n jy: jy,\r\n jm: jm,\r\n jd: jd\r\n };\r\n } else {\r\n // The remaining months.\r\n k -= 186;\r\n }\r\n } else {\r\n // Previous Jalali year.\r\n jy -= 1;\r\n k += 179;\r\n if (r.leap === 1)\r\n k += 1;\r\n }\r\n jm = 7 + this.div(k, 30);\r\n jd = this.mod(k, 30) + 1;\r\n return {\r\n jy: jy,\r\n jm: jm,\r\n jd: jd\r\n };\r\n }\r\n private g2d(gy: number, gm: number, gd: number) {\r\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4) +\r\n this.div(153 * this.mod(gm + 9, 12) + 2, 5) +\r\n gd - 34840408;\r\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752;\r\n return d;\r\n }\r\n private d2g(jdn: number) {\r\n let j;\r\n j = 4 * jdn + 139361631;\r\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;\r\n let i = this.div(this.mod(j, 1461), 4) * 5 + 308;\r\n let gd = this.div(this.mod(i, 153), 5) + 1;\r\n let gm = this.mod(this.div(i, 153), 12) + 1;\r\n let gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6);\r\n return {\r\n gy: gy,\r\n gm: gm,\r\n gd: gd\r\n };\r\n }\r\n private div(a: number, b: number) {\r\n return ~~(a / b);\r\n }\r\n private mod(a: number, b: number) {\r\n return a - ~~(a / b) * b;\r\n }\r\n\r\n //#endregion jalali calendar\r\n\r\n // #region Template\r\n\r\n private modalHtmlTemplate = `
\r\n
\r\n
\r\n
\r\nMD DateTimePicker Html\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n private popoverHtmlTemplate = `
\r\n
\r\n

\r\n
\r\n
`;\r\n private popoverHeaderSelectYearHtmlTemplate = `\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n{{yearsRangeText}}\r\n\r\n\r\n
`;\r\n private dateTimePickerYearsToSelectHtmlTemplate = `\r\n\r\n{{yearsBoxHtml}}\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
`;\r\n\r\n private dateTimePickerHtmlTemplate = `
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n{{monthsTdHtml}}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
{{dtpInlineHeader}}
\r\n\r\n
\r\n\r\n
\r\n
`;\r\n\r\n private dateTimePickerMonthTableHtmlTemplate = `\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n{{daysHtml}}\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
{{weekDayShortName1}}{{weekDayShortName2}}{{weekDayShortName3}}{{weekDayShortName4}}{{weekDayShortName5}}{{weekDayShortName6}}{{weekDayShortName7}}
\r\n`;\r\n\r\n private previousYearTextPersian = 'سال قبل';\r\n private previousMonthTextPersian = 'ماه قبل';\r\n private previousTextPersian = 'قبلی';\r\n private nextYearTextPersian = 'سال بعد';\r\n private nextMonthTextPersian = 'ماه بعد';\r\n private nextTextPersian = 'بعدی';\r\n private todayTextPersian = 'امروز';\r\n private goTodayTextPersian = 'برو به امروز';\r\n private cancelTextPersian = 'انصراف';\r\n private currentYearTextPersian = 'سال جاری';\r\n private previousText = 'Previous';\r\n private previousYearText = 'Previous Year';\r\n private previousMonthText = 'Previous Month';\r\n private nextText = 'Next';\r\n private nextYearText = 'Next Year';\r\n private nextMonthText = 'Next Month';\r\n private todayText = 'Today';\r\n private goTodayText = 'Go Today';\r\n private cancelText = 'Cancel';\r\n private currentYearText = 'Current Year';\r\n private shortDayNamesPersian = [\r\n 'ش',\r\n 'ی',\r\n 'د',\r\n 'س',\r\n 'چ',\r\n 'پ',\r\n 'ج',\r\n ];\r\n private shortDayNames = [\r\n 'Su',\r\n 'Mo',\r\n 'Tu',\r\n 'We',\r\n 'Th',\r\n 'Fr',\r\n 'Sa',\r\n ];\r\n private monthNamesPersian = [\r\n 'فروردین',\r\n 'اردیبهشت',\r\n 'خرداد',\r\n 'تیر',\r\n 'مرداد',\r\n 'شهریور',\r\n 'مهر',\r\n 'آبان',\r\n 'آذر',\r\n 'دی',\r\n 'بهمن',\r\n 'اسفند'\r\n ];\r\n private monthNames = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n ];\r\n private weekDayNames = [\r\n 'Sunday',\r\n 'Monday',\r\n 'Tuesday',\r\n 'Wednesday',\r\n 'Thursday',\r\n 'Friday',\r\n 'Saturday'\r\n ];\r\n private weekDayNamesPersian = [\r\n 'یک شنبه',\r\n 'دوشنبه',\r\n 'سه شنبه',\r\n 'چهارشنبه',\r\n 'پنج شنبه',\r\n 'جمعه',\r\n 'شنبه'\r\n ];\r\n\r\n // #endregion\r\n\r\n // #region Properties\r\n\r\n guid: string = '';\r\n setting: MdsPersianDateTimePickerSetting;\r\n private bsPopover: Popover;\r\n private element: Element;\r\n private tempTitleString = '';\r\n private triggerChangeCalling = false;\r\n\r\n // #endregion\r\n\r\n // #region Methods\r\n\r\n private initializeBsPopover(setting: MdsPersianDateTimePickerSetting): void {\r\n\r\n // Validation\r\n\r\n if (setting.rangeSelector && (setting.toDate || setting.fromDate)) throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' or 'fromDate' and 'rangeSelector' together`);\r\n if (setting.toDate && setting.fromDate) throw new Error(`MdsPersianDateTimePicker => You can not set true 'toDate' and 'fromDate' together`);\r\n if (!setting.groupId && (setting.toDate || setting.fromDate)) throw new Error(`MdsPersianDateTimePicker => When you set 'toDate' or 'fromDate' true, you have to set 'groupId'`);\r\n\r\n // ---------------------\r\n\r\n // آپشن هایی که باید همان لحظه تغییر اعمال شوند\r\n\r\n if (setting.disabled) {\r\n this.element.setAttribute(\"disabled\", '');\r\n } else {\r\n this.element.removeAttribute(\"disabled\");\r\n }\r\n if (setting.toDate || setting.fromDate) {\r\n this.element.setAttribute(\"data-mds-dtp-group\", setting.groupId);\r\n if (setting.toDate)\r\n this.element.setAttribute(\"data-to-date\", 'true');\r\n else if (setting.fromDate)\r\n this.element.setAttribute(\"data-from-date\", 'true');\r\n }\r\n if (!setting.rangeSelector) {\r\n setting.rangeSelectorMonthsToShow = [0, 0];\r\n }\r\n\r\n // ---------------------\r\n\r\n setTimeout(() => {\r\n this.dispose();\r\n const title = this.getPopoverHeaderTitle(setting);\r\n let html = this.getDateTimePickerBodyHtml(setting);\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = html;\r\n const dropDowns = tempDiv.querySelectorAll('.dropdown>button');\r\n dropDowns.forEach(e => {\r\n if (setting.disabled) {\r\n e.setAttribute('disabled', '');\r\n e.classList.add('disabled');\r\n }\r\n else {\r\n e.removeAttribute('disabled');\r\n e.classList.remove('disabled');\r\n }\r\n });\r\n html = tempDiv.innerHTML;\r\n if (setting.inLine == true) {\r\n this.bsPopover = null;\r\n this.element.innerHTML = html;\r\n this.enableInLineEvents();\r\n } else {\r\n this.bsPopover = new Popover(this.element, {\r\n container: 'body',\r\n content: html,\r\n title: title,\r\n html: true,\r\n placement: setting.placement,\r\n trigger: 'manual',\r\n template: this.popoverHtmlTemplate,\r\n sanitize: false,\r\n });\r\n this.enableMainEvents();\r\n }\r\n this.tempTitleString = title;\r\n }, setting.inLine ? 10 : 500);\r\n }\r\n private newGuid(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n private extend(...args: any[]): any {\r\n for (let i = 1; i < args.length; i++)\r\n for (let key in args[i])\r\n if (args[i].hasOwnProperty(key))\r\n args[0][key] = args[i][key];\r\n return args[0];\r\n }\r\n private getClonedDate(dateTime: Date): Date {\r\n return new Date(dateTime.getTime());\r\n }\r\n private getDateTimeJson1(dateTime: Date): GetDateTimeJson1 {\r\n return {\r\n year: dateTime.getFullYear(),\r\n month: dateTime.getMonth() + 1,\r\n day: dateTime.getDate(),\r\n hour: dateTime.getHours(),\r\n minute: dateTime.getMinutes(),\r\n second: dateTime.getSeconds(),\r\n millisecond: dateTime.getMilliseconds(),\r\n dayOfWeek: dateTime.getDay()\r\n };\r\n }\r\n private getDateTimeJson2(dateNumber: number): GetDateTimeJson1 {\r\n return {\r\n year: Math.floor(dateNumber / 10000),\r\n month: Math.floor(dateNumber / 100) % 100,\r\n day: dateNumber % 100,\r\n hour: 0,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n dayOfWeek: null\r\n };\r\n }\r\n private getDateTimeJsonPersian1(dateTime: Date): GetDateTimeJson1 {\r\n let persianDate = this.toJalali(dateTime.getFullYear(), dateTime.getMonth() + 1, dateTime.getDate());\r\n return {\r\n year: persianDate.jy,\r\n month: persianDate.jm,\r\n day: persianDate.jd,\r\n hour: dateTime.getHours(),\r\n minute: dateTime.getMinutes(),\r\n second: dateTime.getSeconds(),\r\n millisecond: dateTime.getMilliseconds(),\r\n dayOfWeek: dateTime.getDay(),\r\n };\r\n }\r\n private getDateTimeJsonPersian2(yearPersian: number, monthPersian: number, dayPersian: number, hour: number, minute: number, second: number): GetDateTimeJson1 {\r\n if (!this.isNumber(hour)) hour = 0;\r\n if (!this.isNumber(minute)) minute = 0;\r\n if (!this.isNumber(second)) second = 0;\r\n let gregorian = this.toGregorian(yearPersian, monthPersian, dayPersian);\r\n return this.getDateTimeJsonPersian1(new Date(gregorian.gy, gregorian.gm - 1, gregorian.gd, hour, minute, second));\r\n }\r\n private getWeekDayName(englishWeekDayIndex: number, isGregorian: boolean): string {\r\n if (!isGregorian) return this.weekDayNamesPersian[englishWeekDayIndex];\r\n return this.weekDayNames[englishWeekDayIndex];\r\n }\r\n private getMonthName(monthIndex: number, isGregorian: boolean): string {\r\n if (monthIndex < 0)\r\n monthIndex = 11;\r\n else if (monthIndex > 11)\r\n monthIndex = 0;\r\n if (!isGregorian) return this.monthNamesPersian[monthIndex];\r\n return this.monthNames[monthIndex];\r\n }\r\n private getWeekDayShortName(englishWeekDayIndex: number, isGregorian: boolean): string {\r\n if (!isGregorian)\r\n return this.shortDayNamesPersian[englishWeekDayIndex];\r\n return this.shortDayNames[englishWeekDayIndex];\r\n }\r\n private isLeapYear(persianYear: number): boolean {\r\n return this.isLeapJalaliYear(persianYear);\r\n }\r\n private getDaysInMonthPersian(year: number, month: number): number {\r\n let numberOfDaysInMonth = 31;\r\n if (month > 6 && month < 12)\r\n numberOfDaysInMonth = 30;\r\n else if (month == 12)\r\n numberOfDaysInMonth = this.isLeapYear(year) ? 30 : 29;\r\n return numberOfDaysInMonth;\r\n }\r\n private getDaysInMonth(year: number, month: number): number {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n private getLastDayDateOfPreviousMonth(dateTime: Date, isGregorian: boolean): Date {\r\n let dateTimeLocal = this.getClonedDate(dateTime);\r\n if (isGregorian) {\r\n let previousMonth = new Date(dateTimeLocal.getFullYear(), dateTimeLocal.getMonth() - 1, 1),\r\n daysInMonth = this.getDaysInMonth(previousMonth.getFullYear(), previousMonth.getMonth());\r\n return new Date(previousMonth.getFullYear(), previousMonth.getMonth(), daysInMonth);\r\n }\r\n let dateTimeJsonPersian = this.getDateTimeJsonPersian1(dateTimeLocal);\r\n dateTimeJsonPersian.month += -1;\r\n if (dateTimeJsonPersian.month <= 0) {\r\n dateTimeJsonPersian.month = 12;\r\n dateTimeJsonPersian.year--;\r\n } else if (dateTimeJsonPersian.month > 12) {\r\n dateTimeJsonPersian.year++;\r\n dateTimeJsonPersian.month = 1;\r\n }\r\n return this.getDateTime1(dateTimeJsonPersian.year, dateTimeJsonPersian.month, this.getDaysInMonthPersian(dateTimeJsonPersian.year, dateTimeJsonPersian.month));\r\n }\r\n private getFirstDayDateOfNextMonth(dateTime: Date, isGregorian: boolean): Date {\r\n let dateTimeLocal = this.getClonedDate(dateTime);\r\n if (isGregorian) {\r\n let nextMonth = new Date(dateTimeLocal.getFullYear(), dateTimeLocal.getMonth() + 1, 1);\r\n return new Date(nextMonth.getFullYear(), nextMonth.getMonth(), 1);\r\n }\r\n let dateTimeJsonPersian = this.getDateTimeJsonPersian1(dateTimeLocal);\r\n dateTimeJsonPersian.month += 1;\r\n if (dateTimeJsonPersian.month <= 0) {\r\n dateTimeJsonPersian.month = 12;\r\n dateTimeJsonPersian.year--;\r\n }\r\n if (dateTimeJsonPersian.month > 12) {\r\n dateTimeJsonPersian.year++;\r\n dateTimeJsonPersian.month = 1;\r\n }\r\n return this.getDateTime1(dateTimeJsonPersian.year, dateTimeJsonPersian.month, 1);\r\n }\r\n private getDateTime1(yearPersian: number, monthPersian: number, dayPersian: number, hour?: number, minute?: number, second?: number): Date {\r\n if (!this.isNumber(hour)) hour = 0;\r\n if (!this.isNumber(minute)) minute = 0;\r\n if (!this.isNumber(second)) second = 0;\r\n let gregorian = this.toGregorian(yearPersian, monthPersian, dayPersian);\r\n return new Date(gregorian.gy, gregorian.gm - 1, gregorian.gd, hour, minute, second);\r\n }\r\n private getDateTime2(dateTimeJsonPersian: GetDateTimeJson1): Date {\r\n if (!dateTimeJsonPersian.hour) dateTimeJsonPersian.hour = 0;\r\n if (!dateTimeJsonPersian.minute) dateTimeJsonPersian.minute = 0;\r\n if (!dateTimeJsonPersian.second) dateTimeJsonPersian.second = 0;\r\n let gregorian = this.toGregorian(dateTimeJsonPersian.year, dateTimeJsonPersian.month, dateTimeJsonPersian.day);\r\n return new Date(gregorian.gy, gregorian.gm - 1, gregorian.gd, dateTimeJsonPersian.hour, dateTimeJsonPersian.minute, dateTimeJsonPersian.second);\r\n }\r\n private getDateTime3(dateTimeJson: GetDateTimeJson1): Date {\r\n return new Date(dateTimeJson.year, dateTimeJson.month - 1, dateTimeJson.day, dateTimeJson.hour, dateTimeJson.minute, dateTimeJson.second);\r\n }\r\n private getDateTime4(dateNumber: number, dateTime: Date, isGregorian: boolean): Date {\r\n let dateTimeJson = this.getDateTimeJson2(dateNumber);\r\n if (!isGregorian) {\r\n let dateTimeJsonPersian = this.getDateTimeJsonPersian1(dateTime);\r\n dateTimeJsonPersian.year = dateTimeJson.year;\r\n dateTimeJsonPersian.month = dateTimeJson.month;\r\n dateTimeJsonPersian.day = dateTimeJson.day;\r\n dateTime = this.getDateTime2(dateTimeJsonPersian);\r\n } else\r\n dateTime = new Date(dateTimeJson.year, dateTimeJson.month - 1, dateTimeJson.day,\r\n dateTime.getHours(), dateTime.getMinutes(), dateTime.getSeconds());\r\n return dateTime;\r\n }\r\n private getLesserDisableBeforeDate(setting: MdsPersianDateTimePickerSetting): GetDateTimeJson1 {\r\n // دریافت تاریخ کوچکتر\r\n // از بین تاریخ های غیر فعال شده در گذشته\r\n let resultDate: Date = null;\r\n const dateNow = new Date();\r\n if (setting.disableBeforeToday && setting.disableBeforeDate) {\r\n if (setting.disableBeforeDate.getTime() <= dateNow.getTime())\r\n resultDate = this.getClonedDate(setting.disableBeforeDate);\r\n else\r\n resultDate = dateNow;\r\n } else if (setting.disableBeforeDate)\r\n resultDate = this.getClonedDate(setting.disableBeforeDate);\r\n else if (setting.disableBeforeToday)\r\n resultDate = dateNow;\r\n if (resultDate == null)\r\n return null;\r\n if (setting.isGregorian)\r\n return this.getDateTimeJson1(resultDate);\r\n return this.getDateTimeJsonPersian1(resultDate);\r\n }\r\n private getBiggerDisableAfterDate(setting: MdsPersianDateTimePickerSetting): GetDateTimeJson1 {\r\n // دریافت تاریخ بزرگتر\r\n // از بین تاریخ های غیر فعال شده در آینده\r\n let resultDate: Date = null;\r\n const dateNow = new Date();\r\n if (setting.disableAfterDate && setting.disableAfterToday) {\r\n if (setting.disableAfterDate.getTime() >= dateNow.getTime())\r\n resultDate = this.getClonedDate(setting.disableAfterDate);\r\n else\r\n resultDate = dateNow;\r\n } else if (setting.disableAfterDate)\r\n resultDate = this.getClonedDate(setting.disableAfterDate);\r\n else if (setting.disableAfterToday)\r\n resultDate = dateNow;\r\n if (resultDate == null)\r\n return null;\r\n if (setting.isGregorian)\r\n return this.getDateTimeJson1(resultDate);\r\n return this.getDateTimeJsonPersian1(resultDate);\r\n }\r\n private addMonthToDateTimeJson(dateTimeJson: GetDateTimeJson1, addedMonth: number, isGregorian: boolean): GetDateTimeJson1 {\r\n // وقتی نیاز هست تا ماه یا روز به تاریخی اضافه کنم\r\n // پس از اضافه کردن ماه یا روز این متد را استفاده میکنم تا سال و ماه\r\n // با مقادیر جدید تصحیح و برگشت داده شوند\r\n const dateTimeJson1 = Object.assign({}, dateTimeJson);\r\n dateTimeJson1.day = 1;\r\n dateTimeJson1.month += addedMonth;\r\n if (!isGregorian) {\r\n if (dateTimeJson1.month <= 0) {\r\n dateTimeJson1.month = 12;\r\n dateTimeJson1.year--;\r\n }\r\n if (dateTimeJson1.month > 12) {\r\n dateTimeJson1.year++;\r\n dateTimeJson1.month = 1;\r\n }\r\n return dateTimeJson1;\r\n }\r\n return this.getDateTimeJson1(this.getDateTime3(dateTimeJson1));\r\n }\r\n private convertToNumber1(dateTimeJson: GetDateTimeJson1): number {\r\n return Number(this.zeroPad(dateTimeJson.year) + this.zeroPad(dateTimeJson.month) + this.zeroPad(dateTimeJson.day));\r\n }\r\n private convertToNumber2(year: number, month: number, day: number): number {\r\n return Number(this.zeroPad(year) + this.zeroPad(month) + this.zeroPad(day));\r\n }\r\n private convertToNumber3(dateTime: Date): number {\r\n return this.convertToNumber1(this.getDateTimeJson1(dateTime));\r\n }\r\n private convertToNumber4(dateTime: Date): number {\r\n return Number(this.zeroPad(dateTime.getFullYear()) + this.zeroPad(dateTime.getMonth()) + this.zeroPad(dateTime.getDate()));\r\n }\r\n private getShortHour(hour: number): number {\r\n let shortHour;\r\n if (hour > 12)\r\n shortHour = hour - 12;\r\n else\r\n shortHour = hour;\r\n return shortHour;\r\n }\r\n private getAmPm(hour: number, isGregorian: boolean): string {\r\n let amPm;\r\n if (hour > 12) {\r\n if (isGregorian)\r\n amPm = 'PM';\r\n else\r\n amPm = 'ب.ظ';\r\n } else\r\n if (isGregorian)\r\n amPm = 'AM';\r\n else\r\n amPm = 'ق.ظ';\r\n return amPm;\r\n }\r\n private addMonthToDateTime(dateTime: Date, addedMonth: number, isGregorian: boolean): Date {\r\n let dateTimeJson: GetDateTimeJson1;\r\n if (!isGregorian) {\r\n dateTimeJson = this.getDateTimeJsonPersian1(dateTime);\r\n dateTimeJson = this.addMonthToDateTimeJson(dateTimeJson, addedMonth, isGregorian);\r\n return this.getDateTime2(dateTimeJson);\r\n }\r\n dateTimeJson = this.getDateTimeJson1(dateTime);\r\n dateTimeJson = this.addMonthToDateTimeJson(dateTimeJson, addedMonth, isGregorian);\r\n return this.getDateTime3(dateTimeJson);\r\n }\r\n private isNumber(n: any): boolean {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n private toPersianNumber(inputNumber1: number | string): string {\r\n /* ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ */\r\n if (!inputNumber1) return '';\r\n let str1 = inputNumber1.toString().trim();\r\n if (!str1) return '';\r\n str1 = str1.replace(/0/img, '۰');\r\n str1 = str1.replace(/1/img, '۱');\r\n str1 = str1.replace(/2/img, '۲');\r\n str1 = str1.replace(/3/img, '۳');\r\n str1 = str1.replace(/4/img, '۴');\r\n str1 = str1.replace(/5/img, '۵');\r\n str1 = str1.replace(/6/img, '۶');\r\n str1 = str1.replace(/7/img, '۷');\r\n str1 = str1.replace(/8/img, '۸');\r\n str1 = str1.replace(/9/img, '۹');\r\n return str1;\r\n }\r\n private toEnglishNumber(inputNumber2: number | string): string {\r\n if (!inputNumber2) return '';\r\n let str = inputNumber2.toString().trim();\r\n if (!str) return '';\r\n str = str.replace(/۰/img, '0');\r\n str = str.replace(/۱/img, '1');\r\n str = str.replace(/۲/img, '2');\r\n str = str.replace(/۳/img, '3');\r\n str = str.replace(/۴/img, '4');\r\n str = str.replace(/۵/img, '5');\r\n str = str.replace(/۶/img, '6');\r\n str = str.replace(/۷/img, '7');\r\n str = str.replace(/۸/img, '8');\r\n str = str.replace(/۹/img, '9');\r\n return str;\r\n }\r\n private zeroPad(nr: any, base?: string): string {\r\n if (nr == undefined || nr == '') return '00';\r\n if (base == undefined || base == '') base = '00';\r\n let len = (String(base).length - String(nr).length) + 1;\r\n return len > 0 ? new Array(len).join('0') + nr : nr;\r\n }\r\n private getDateTimeString(dateTimeJson: GetDateTimeJson1, format: string, isGregorian: boolean, englishNumber: boolean): string {\r\n\r\n if (isGregorian) englishNumber = true;\r\n\r\n /// فرمت های که پشتیبانی می شوند\r\n /// \r\n /// yyyy: سال چهار رقمی\r\n /// \r\n /// yy: سال دو رقمی\r\n /// \r\n /// MMMM: نام ماه\r\n /// \r\n /// MM: عدد دو رقمی ماه\r\n /// \r\n /// M: عدد یک رقمی ماه\r\n /// \r\n /// dddd: نام روز هفته\r\n /// \r\n /// dd: عدد دو رقمی روز ماه\r\n /// \r\n /// d: عدد یک رقمی روز ماه\r\n /// \r\n /// HH: ساعت دو رقمی با فرمت 00 تا 24\r\n /// \r\n /// H: ساعت یک رقمی با فرمت 0 تا 24\r\n /// \r\n /// hh: ساعت دو رقمی با فرمت 00 تا 12\r\n /// \r\n /// h: ساعت یک رقمی با فرمت 0 تا 12\r\n /// \r\n /// mm: عدد دو رقمی دقیقه\r\n /// \r\n /// m: عدد یک رقمی دقیقه\r\n /// \r\n /// ss: ثانیه دو رقمی\r\n /// \r\n /// s: ثانیه یک رقمی\r\n /// \r\n /// fff: میلی ثانیه 3 رقمی\r\n /// \r\n /// ff: میلی ثانیه 2 رقمی\r\n /// \r\n /// f: میلی ثانیه یک رقمی\r\n /// \r\n /// tt: ب.ظ یا ق.ظ\r\n /// \r\n /// t: حرف اول از ب.ظ یا ق.ظ\r\n\r\n format = format.replace(/yyyy/mg, dateTimeJson.year.toString());\r\n format = format.replace(/yy/mg, (dateTimeJson.year % 100).toString());\r\n format = format.replace(/MMMM/mg, this.getMonthName(dateTimeJson.month - 1, isGregorian));\r\n format = format.replace(/MM/mg, this.zeroPad(dateTimeJson.month));\r\n format = format.replace(/M/mg, dateTimeJson.month.toString());\r\n format = format.replace(/dddd/mg, this.getWeekDayName(dateTimeJson.dayOfWeek, isGregorian));\r\n format = format.replace(/dd/mg, this.zeroPad(dateTimeJson.day));\r\n format = format.replace(/d/mg, dateTimeJson.day.toString());\r\n format = format.replace(/HH/mg, this.zeroPad(dateTimeJson.hour));\r\n format = format.replace(/H/mg, dateTimeJson.hour.toString());\r\n format = format.replace(/hh/mg, this.zeroPad(this.getShortHour(dateTimeJson.hour).toString()));\r\n format = format.replace(/h/mg, this.zeroPad(dateTimeJson.hour));\r\n format = format.replace(/mm/mg, this.zeroPad(dateTimeJson.minute));\r\n format = format.replace(/m/mg, dateTimeJson.minute.toString());\r\n format = format.replace(/ss/mg, this.zeroPad(dateTimeJson.second));\r\n format = format.replace(/s/mg, dateTimeJson.second.toString());\r\n format = format.replace(/fff/mg, this.zeroPad(dateTimeJson.millisecond, '000'));\r\n format = format.replace(/ff/mg, this.zeroPad(dateTimeJson.millisecond / 10));\r\n format = format.replace(/f/mg, (dateTimeJson.millisecond / 100).toString());\r\n format = format.replace(/tt/mg, this.getAmPm(dateTimeJson.hour, isGregorian));\r\n format = format.replace(/t/mg, this.getAmPm(dateTimeJson.hour, isGregorian)[0]);\r\n\r\n if (!englishNumber) format = this.toPersianNumber(format);\r\n return format;\r\n }\r\n private getSelectedDateTimeTextFormatted(setting: MdsPersianDateTimePickerSetting): string {\r\n if (setting.selectedDate == undefined) return '';\r\n if (!setting.enableTimePicker) {\r\n setting.selectedDate.setHours(0);\r\n setting.selectedDate.setMinutes(0);\r\n setting.selectedDate.setSeconds(0);\r\n }\r\n if (setting.rangeSelector && setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate != undefined)\r\n return this.getDateTimeString(!setting.isGregorian ? this.getDateTimeJsonPersian1(setting.rangeSelectorStartDate) : this.getDateTimeJson1(setting.rangeSelectorStartDate), setting.textFormat, setting.isGregorian, setting.isGregorian) + ' - ' +\r\n this.getDateTimeString(!setting.isGregorian ? this.getDateTimeJsonPersian1(setting.rangeSelectorEndDate) : this.getDateTimeJson1(setting.rangeSelectorEndDate), setting.textFormat, setting.isGregorian, setting.isGregorian);\r\n return this.getDateTimeString(!setting.isGregorian ? this.getDateTimeJsonPersian1(setting.selectedDate) : this.getDateTimeJson1(setting.selectedDate), setting.textFormat, setting.isGregorian, setting.isGregorian);\r\n }\r\n private getSelectedDateFormatted(setting: MdsPersianDateTimePickerSetting): string {\r\n // دریافت رشته تاریخ انتخاب شده\r\n if ((!setting.rangeSelector && !setting.selectedDate) ||\r\n (setting.rangeSelector && !setting.rangeSelectorStartDate && !setting.rangeSelectorEndDate)) return '';\r\n if (setting.rangeSelector)\r\n return this.getDateTimeString(this.getDateTimeJson1(setting.rangeSelectorStartDate), setting.dateFormat, true, true) + ' - ' +\r\n this.getDateTimeString(this.getDateTimeJson1(setting.rangeSelectorEndDate), setting.dateFormat, true, true);\r\n return this.getDateTimeString(this.getDateTimeJson1(setting.selectedDate), setting.dateFormat, true, true);\r\n }\r\n private getDisabledDateObject(setting: MdsPersianDateTimePickerSetting): [GetDateTimeJson1 | undefined, GetDateTimeJson1 | undefined] {\r\n let disableBeforeDateTimeJson = this.getLesserDisableBeforeDate(setting);\r\n let disableAfterDateTimeJson = this.getBiggerDisableAfterDate(setting);\r\n // بررسی پراپرتی های از تاریخ، تا تاریخ\r\n if ((setting.fromDate || setting.toDate) && setting.groupId) {\r\n const toDateElement = document.querySelector(`[data-mds-dtp-group=\"${setting.groupId}\"][data-to-date]`);\r\n const fromDateElement = document.querySelector(`[data-mds-dtp-group=\"${setting.groupId}\"][data-from-date]`);\r\n if (toDateElement != null && setting.fromDate) {\r\n const toDateSetting = MdsPersianDateTimePicker.getInstance(toDateElement).setting;\r\n const toDateSelectedDate = toDateSetting.selectedDate;\r\n disableAfterDateTimeJson = !toDateSelectedDate ? undefined : setting.isGregorian ? this.getDateTimeJson1(toDateSelectedDate) : this.getDateTimeJsonPersian1(toDateSelectedDate);\r\n } else if (fromDateElement != null && setting.toDate) {\r\n const fromDateSetting = MdsPersianDateTimePicker.getInstance(fromDateElement).setting;\r\n const fromDateSelectedDate = fromDateSetting.selectedDate;\r\n disableBeforeDateTimeJson = !fromDateSelectedDate ? undefined : setting.isGregorian ? this.getDateTimeJson1(fromDateSelectedDate) : this.getDateTimeJsonPersian1(fromDateSelectedDate);\r\n }\r\n }\r\n return [disableBeforeDateTimeJson, disableAfterDateTimeJson];\r\n }\r\n private setSelectedData(setting: MdsPersianDateTimePickerSetting): void {\r\n const targetTextElement = setting.targetTextSelector ? document.querySelector(setting.targetTextSelector) : undefined;\r\n const targetDateElement = setting.targetDateSelector ? document.querySelector(setting.targetDateSelector) : undefined;\r\n const changeEvent = new Event('change');\r\n if (targetTextElement != undefined) {\r\n this.triggerChangeCalling = true;\r\n const dateTimeTextFormat = this.getSelectedDateTimeTextFormatted(setting);\r\n switch (targetTextElement.tagName.toLowerCase()) {\r\n case 'input':\r\n (targetTextElement).value = dateTimeTextFormat;\r\n break;\r\n default:\r\n targetTextElement.innerHTML = dateTimeTextFormat;\r\n break;\r\n }\r\n targetTextElement.dispatchEvent(changeEvent);\r\n }\r\n if (targetDateElement != undefined) {\r\n const dateTimeFormat = this.getSelectedDateFormatted(setting);\r\n this.triggerChangeCalling = true;\r\n switch (targetDateElement.tagName.toLowerCase()) {\r\n case 'input':\r\n (targetDateElement).value = dateTimeFormat;\r\n break;\r\n default:\r\n targetDateElement.innerHTML = dateTimeFormat;\r\n break;\r\n }\r\n targetDateElement.dispatchEvent(changeEvent);\r\n }\r\n }\r\n private getPopover(element: Element): Element {\r\n let popoverId = element.getAttribute('aria-describedby');\r\n if (popoverId == undefined || popoverId == '')\r\n return element.closest('[data-mds-dtp]');\r\n return document.getElementById(popoverId.toString());\r\n }\r\n private getYearsBoxBodyHtml(setting: MdsPersianDateTimePickerSetting, yearToStart: number): MdsPersianDateTimePickerYearToSelect {\r\n // بدست آوردن اچ تی ام ال انتخاب سال\r\n // yearToStart سال شروع\r\n\r\n setting.yearOffset = Number(setting.yearOffset);\r\n\r\n const selectedDateToShow = this.getClonedDate(setting.selectedDateToShow);\r\n const disabledDateObj = this.getDisabledDateObject(setting);\r\n const disableBeforeDateTimeJson = disabledDateObj[0];\r\n const disableAfterDateTimeJson = disabledDateObj[1];\r\n let html = this.dateTimePickerYearsToSelectHtmlTemplate;\r\n let yearsBoxHtml = '';\r\n let todayDateTimeJson: GetDateTimeJson1;\r\n let selectedDateTimeToShowJson: GetDateTimeJson1;\r\n let counter = 1;\r\n\r\n if (setting.isGregorian) {\r\n selectedDateTimeToShowJson = this.getDateTimeJson1(selectedDateToShow);\r\n todayDateTimeJson = this.getDateTimeJson1(new Date());\r\n } else {\r\n selectedDateTimeToShowJson = this.getDateTimeJsonPersian1(selectedDateToShow);\r\n todayDateTimeJson = this.getDateTimeJsonPersian1(new Date());\r\n }\r\n counter = 1;\r\n const yearStart = yearToStart ? yearToStart : todayDateTimeJson.year - setting.yearOffset;\r\n const yearEnd = yearToStart ? yearToStart + setting.yearOffset * 2 : todayDateTimeJson.year + setting.yearOffset;\r\n for (let i = yearStart; i < yearEnd; i++) {\r\n const disabledAttr = i < disableBeforeDateTimeJson?.year || i > disableAfterDateTimeJson?.year ? 'disabled' : '';\r\n let currentYearDateTimeJson = this.getDateTimeJson2(this.convertToNumber2(i, selectedDateTimeToShowJson.month, this.getDaysInMonthPersian(i, selectedDateTimeToShowJson.month)));\r\n let currentYearDisabledAttr = '';\r\n let yearText = setting.isGregorian ? i.toString() : this.toPersianNumber(i);\r\n let yearDateNumber = this.convertToNumber2(i, selectedDateTimeToShowJson.month, 1);\r\n let todayAttr = todayDateTimeJson.year == i ? 'data-current-year=\"true\"' : ''\r\n let selectedYearAttr = selectedDateTimeToShowJson.year == i ? 'data-selected-year' : ''\r\n let selectedYearTitle = '';\r\n if (todayAttr)\r\n selectedYearTitle = setting.isGregorian ? this.currentYearText : this.currentYearTextPersian;\r\n if (disableBeforeDateTimeJson != undefined && disableBeforeDateTimeJson.year != undefined && currentYearDateTimeJson.year < disableBeforeDateTimeJson.year)\r\n currentYearDisabledAttr = 'disabled';\r\n if (disableAfterDateTimeJson != undefined && disableAfterDateTimeJson.year != undefined && currentYearDateTimeJson.year > disableAfterDateTimeJson.year)\r\n currentYearDisabledAttr = 'disabled';\r\n if (setting.disableBeforeToday && currentYearDateTimeJson.year < todayDateTimeJson.year)\r\n currentYearDisabledAttr = 'disabled';\r\n if (setting.disableAfterToday && currentYearDateTimeJson.year > todayDateTimeJson.year)\r\n currentYearDisabledAttr = 'disabled';\r\n if (counter == 1) yearsBoxHtml += '';\r\n yearsBoxHtml += `\r\n\r\n \r\n\r\n`;\r\n if (counter == 5) yearsBoxHtml += '';\r\n counter++;\r\n if (counter > 5) counter = 1;\r\n }\r\n html = html.replace(/\\{\\{yearsBoxHtml\\}\\}/img, yearsBoxHtml);\r\n html = html.replace(/\\{\\{cancelText\\}\\}/img, setting.isGregorian ? this.cancelText : this.cancelTextPersian);\r\n if (setting.inLine && setting.yearOffset > 15)\r\n html += '
';\r\n return {\r\n yearStart,\r\n yearEnd,\r\n html\r\n };\r\n }\r\n private getYearsBoxHeaderHtml(setting: MdsPersianDateTimePickerSetting, yearStart: number, yearEnd: number): string {\r\n const yearsRangeText = ` ${yearStart} - ${yearEnd - 1} `;\r\n const disabledDateObj = this.getDisabledDateObject(setting);\r\n let html = this.popoverHeaderSelectYearHtmlTemplate;\r\n html = html.replace(/\\{{rtlCssClass\\}\\}/img, setting.isGregorian ? '' : 'rtl');\r\n html = html.replace(/\\{{dirAttrValue\\}\\}/img, setting.isGregorian ? 'ltr' : 'rtl');\r\n html = html.replace(/\\{\\{yearsRangeText\\}\\}/img, setting.isGregorian ? yearsRangeText : this.toPersianNumber(yearsRangeText));\r\n html = html.replace(/\\{\\{previousText\\}\\}/img, setting.isGregorian ? this.previousText : this.previousTextPersian);\r\n html = html.replace(/\\{\\{nextText\\}\\}/img, setting.isGregorian ? this.nextText : this.nextTextPersian);\r\n html = html.replace(/\\{\\{latestPreviousYear\\}\\}/img, yearStart > yearEnd ? yearEnd.toString() : yearStart.toString());\r\n html = html.replace(/\\{\\{latestNextYear\\}\\}/img, yearStart > yearEnd ? yearStart.toString() : yearEnd.toString());\r\n html = html.replace(/\\{\\{prevYearButtonAttr\\}\\}/img, disabledDateObj[0] != null && yearStart - 1 < disabledDateObj[0].year ? 'disabled' : '');\r\n html = html.replace(/\\{\\{nextYearButtonAttr\\}\\}/img, disabledDateObj[1] != null && yearEnd + 1 > disabledDateObj[1].year ? 'disabled' : '');\r\n return html;\r\n }\r\n private getDateTimePickerMonthHtml(setting: MdsPersianDateTimePickerSetting, isNextMonth: boolean, isPrevMonth: boolean): string {\r\n let selectedDateToShow = this.getClonedDate(setting.selectedDateToShow);\r\n let selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n let selectedDateTime = setting.selectedDate != undefined ? this.getClonedDate(setting.selectedDate) : undefined;\r\n let isNextOrPrevMonth = isNextMonth || isPrevMonth;\r\n let html = this.dateTimePickerMonthTableHtmlTemplate;\r\n\r\n html = html.replace(/\\{\\{guid\\}\\}/img, this.guid);\r\n html = html.replace(/\\{\\{monthTdAttribute\\}\\}/img, isNextMonth ? 'data-next-month' : isPrevMonth ? 'data-prev-month' : '');\r\n html = html.replace(/\\{\\{monthNameAttribute\\}\\}/img, !isNextOrPrevMonth ? 'hidden' : '');\r\n html = html.replace(/\\{\\{theadSelectDateButtonTrAttribute\\}\\}/img, setting.inLine || !isNextOrPrevMonth ? '' : 'hidden');\r\n html = html.replace(/\\{\\{weekDayShortName1CssClass\\}\\}/img, setting.isGregorian ? 'text-danger' : '');\r\n html = html.replace(/\\{\\{weekDayShortName7CssClass\\}\\}/img, !setting.isGregorian ? 'text-danger' : '');\r\n html = html.replace(/\\{\\{previousYearText\\}\\}/img, setting.isGregorian ? this.previousYearText : this.previousYearTextPersian);\r\n html = html.replace(/\\{\\{previousMonthText\\}\\}/img, setting.isGregorian ? this.previousMonthText : this.previousMonthTextPersian);\r\n html = html.replace(/\\{\\{nextMonthText\\}\\}/img, setting.isGregorian ? this.nextMonthText : this.nextMonthTextPersian);\r\n html = html.replace(/\\{\\{nextYearText\\}\\}/img, setting.isGregorian ? this.nextYearText : this.nextYearTextPersian);\r\n html = html.replace(/\\{\\{monthName1\\}\\}/img, this.getMonthName(0, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName2\\}\\}/img, this.getMonthName(1, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName3\\}\\}/img, this.getMonthName(2, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName4\\}\\}/img, this.getMonthName(3, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName5\\}\\}/img, this.getMonthName(4, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName6\\}\\}/img, this.getMonthName(5, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName7\\}\\}/img, this.getMonthName(6, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName8\\}\\}/img, this.getMonthName(7, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName9\\}\\}/img, this.getMonthName(8, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName10\\}\\}/img, this.getMonthName(9, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName11\\}\\}/img, this.getMonthName(10, setting.isGregorian));\r\n html = html.replace(/\\{\\{monthName12\\}\\}/img, this.getMonthName(11, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName1\\}\\}/img, this.getWeekDayShortName(0, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName2\\}\\}/img, this.getWeekDayShortName(1, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName3\\}\\}/img, this.getWeekDayShortName(2, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName4\\}\\}/img, this.getWeekDayShortName(3, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName5\\}\\}/img, this.getWeekDayShortName(4, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName6\\}\\}/img, this.getWeekDayShortName(5, setting.isGregorian));\r\n html = html.replace(/\\{\\{weekDayShortName7\\}\\}/img, this.getWeekDayShortName(6, setting.isGregorian));\r\n\r\n const disabledDateObj = this.getDisabledDateObject(setting);\r\n let i = 0,\r\n j = 0,\r\n firstWeekDayNumber,\r\n cellNumber = 0,\r\n tdNumber = 0,\r\n selectedDateNumber = 0,\r\n selectedMonthName = '',\r\n todayDateTimeJson: GetDateTimeJson1, // year, month, day, hour, minute, second\r\n dateTimeToShowJson: GetDateTimeJson1, // year, month, day, hour, minute, second\r\n numberOfDaysInCurrentMonth = 0,\r\n numberOfDaysInPreviousMonth = 0,\r\n tr = document.createElement('TR'),\r\n td = document.createElement(\"TD\"),\r\n daysHtml = '',\r\n currentDateNumber = 0,\r\n previousMonthDateNumber = 0,\r\n nextMonthDateNumber = 0,\r\n previousYearDateNumber = 0,\r\n nextYearDateNumber = 0,\r\n rangeSelectorStartDate = !setting.rangeSelector || setting.rangeSelectorStartDate == undefined ? undefined : this.getClonedDate(setting.rangeSelectorStartDate),\r\n rangeSelectorEndDate = !setting.rangeSelector || setting.rangeSelectorEndDate == undefined ? undefined : this.getClonedDate(setting.rangeSelectorEndDate),\r\n rangeSelectorStartDateNumber = 0,\r\n rangeSelectorEndDateNumber = 0,\r\n dayNumberInString = '0',\r\n dayOfWeek = '', // نام روز هفته\r\n monthsDateNumberAndAttr: any = {\r\n month1DateNumber: 0,\r\n month2DateNumber: 0,\r\n month3DateNumber: 0,\r\n month4DateNumber: 0,\r\n month5DateNumber: 0,\r\n month6DateNumber: 0,\r\n month7DateNumber: 0,\r\n month8DateNumber: 0,\r\n month9DateNumber: 0,\r\n month10DateNumber: 0,\r\n month11DateNumber: 0,\r\n month12DateNumber: 0,\r\n selectMonth1ButtonCssClass: '',\r\n selectMonth2ButtonCssClass: '',\r\n selectMonth3ButtonCssClass: '',\r\n selectMonth4ButtonCssClass: '',\r\n selectMonth5ButtonCssClass: '',\r\n selectMonth6ButtonCssClass: '',\r\n selectMonth7ButtonCssClass: '',\r\n selectMonth8ButtonCssClass: '',\r\n selectMonth9ButtonCssClass: '',\r\n selectMonth10ButtonCssClass: '',\r\n selectMonth11ButtonCssClass: '',\r\n selectMonth12ButtonCssClass: '',\r\n },\r\n holidaysDateNumbers: number[] = [],\r\n disabledDatesNumber: number[] = [],\r\n specialDatesNumber: number[] = [],\r\n disableBeforeDateTimeJson = disabledDateObj[0],\r\n disableAfterDateTimeJson = disabledDateObj[1],\r\n previousYearButtonDisabledAttribute = '',\r\n previousMonthButtonDisabledAttribute = '',\r\n selectYearButtonDisabledAttribute = '',\r\n nextMonthButtonDisabledAttribute = '',\r\n nextYearButtonDisabledAttribute = '',\r\n isTrAppended = false;\r\n\r\n if (setting.isGregorian) {\r\n dateTimeToShowJson = this.getDateTimeJson1(selectedDateToShowTemp);\r\n todayDateTimeJson = this.getDateTimeJson1(new Date());\r\n firstWeekDayNumber = new Date(dateTimeToShowJson.year, dateTimeToShowJson.month - 1, 1).getDay();\r\n selectedDateNumber = !selectedDateTime ? 0 : this.convertToNumber1(this.getDateTimeJson1(selectedDateTime));\r\n numberOfDaysInCurrentMonth = this.getDaysInMonth(dateTimeToShowJson.year, dateTimeToShowJson.month - 1);\r\n numberOfDaysInPreviousMonth = this.getDaysInMonth(dateTimeToShowJson.year, dateTimeToShowJson.month - 2);\r\n previousMonthDateNumber = this.convertToNumber1(this.getDateTimeJson1(this.getLastDayDateOfPreviousMonth(selectedDateToShowTemp, true)));\r\n nextMonthDateNumber = this.convertToNumber1(this.getDateTimeJson1(this.getFirstDayDateOfNextMonth(selectedDateToShowTemp, true)));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n previousYearDateNumber = this.convertToNumber1(this.getDateTimeJson1(new Date(selectedDateToShowTemp.setFullYear(selectedDateToShowTemp.getFullYear() - 1))));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n nextYearDateNumber = this.convertToNumber1(this.getDateTimeJson1(new Date(selectedDateToShowTemp.setFullYear(selectedDateToShowTemp.getFullYear() + 1))));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n rangeSelectorStartDateNumber = !setting.rangeSelector || !rangeSelectorStartDate ? 0 : this.convertToNumber3(rangeSelectorStartDate);\r\n rangeSelectorEndDateNumber = !setting.rangeSelector || !rangeSelectorEndDate ? 0 : this.convertToNumber3(rangeSelectorEndDate);\r\n for (i = 1; i <= 12; i++) {\r\n monthsDateNumberAndAttr['month' + i.toString() + 'DateNumber'] = this.convertToNumber1(this.getDateTimeJson1(new Date(selectedDateToShowTemp.setMonth(i - 1))));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n }\r\n for (i = 0; i < setting.holidays.length; i++) {\r\n holidaysDateNumbers.push(this.convertToNumber1(this.getDateTimeJson1(setting.holidays[i])));\r\n }\r\n for (i = 0; i < setting.disabledDates.length; i++) {\r\n disabledDatesNumber.push(this.convertToNumber1(this.getDateTimeJson1(setting.disabledDates[i])));\r\n }\r\n for (i = 0; i < setting.specialDates.length; i++) {\r\n specialDatesNumber.push(this.convertToNumber1(this.getDateTimeJson1(setting.specialDates[i])));\r\n }\r\n } else {\r\n dateTimeToShowJson = this.getDateTimeJsonPersian1(selectedDateToShowTemp);\r\n todayDateTimeJson = this.getDateTimeJsonPersian1(new Date());\r\n firstWeekDayNumber = this.getDateTimeJsonPersian2(dateTimeToShowJson.year, dateTimeToShowJson.month, 1, 0, 0, 0).dayOfWeek;\r\n selectedDateNumber = !selectedDateTime ? 0 : this.convertToNumber1(this.getDateTimeJsonPersian1(selectedDateTime));\r\n numberOfDaysInCurrentMonth = this.getDaysInMonthPersian(dateTimeToShowJson.year, dateTimeToShowJson.month);\r\n numberOfDaysInPreviousMonth = this.getDaysInMonthPersian(dateTimeToShowJson.year - 1, dateTimeToShowJson.month - 1);\r\n previousMonthDateNumber = this.convertToNumber1(this.getDateTimeJsonPersian1(this.getLastDayDateOfPreviousMonth(selectedDateToShowTemp, false)));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n nextMonthDateNumber = this.convertToNumber1(this.getDateTimeJsonPersian1(this.getFirstDayDateOfNextMonth(selectedDateToShowTemp, false)));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n previousYearDateNumber = this.convertToNumber2(dateTimeToShowJson.year - 1, dateTimeToShowJson.month, dateTimeToShowJson.day);\r\n nextYearDateNumber = this.convertToNumber2(dateTimeToShowJson.year + 1, dateTimeToShowJson.month, dateTimeToShowJson.day);\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n rangeSelectorStartDateNumber = !setting.rangeSelector || !rangeSelectorStartDate ? 0 : this.convertToNumber1(this.getDateTimeJsonPersian1(rangeSelectorStartDate));\r\n rangeSelectorEndDateNumber = !setting.rangeSelector || !rangeSelectorEndDate ? 0 : this.convertToNumber1(this.getDateTimeJsonPersian1(rangeSelectorEndDate));\r\n for (i = 1; i <= 12; i++) {\r\n monthsDateNumberAndAttr['month' + i.toString() + 'DateNumber'] = this.convertToNumber2(dateTimeToShowJson.year, i, this.getDaysInMonthPersian(dateTimeToShowJson.year, i));\r\n selectedDateToShowTemp = this.getClonedDate(selectedDateToShow);\r\n }\r\n for (i = 0; i < setting.holidays.length; i++) {\r\n holidaysDateNumbers.push(this.convertToNumber1(this.getDateTimeJsonPersian1(setting.holidays[i])));\r\n }\r\n for (i = 0; i < setting.disabledDates.length; i++) {\r\n disabledDatesNumber.push(this.convertToNumber1(this.getDateTimeJsonPersian1(setting.disabledDates[i])));\r\n }\r\n for (i = 0; i < setting.specialDates.length; i++) {\r\n specialDatesNumber.push(this.convertToNumber1(this.getDateTimeJsonPersian1(setting.specialDates[i])));\r\n }\r\n }\r\n\r\n let todayDateNumber = this.convertToNumber1(todayDateTimeJson);\r\n let selectedYear = setting.isGregorian ? dateTimeToShowJson.year.toString() : this.toPersianNumber(dateTimeToShowJson.year);\r\n let disableBeforeDateTimeNumber = !disableBeforeDateTimeJson ? undefined : this.convertToNumber1(disableBeforeDateTimeJson);\r\n let disableAfterDateTimeNumber = !disableAfterDateTimeJson ? undefined : this.convertToNumber1(disableAfterDateTimeJson);\r\n let currentMonthInfo = this.getMonthName(dateTimeToShowJson.month - 1, setting.isGregorian) + ' ' + dateTimeToShowJson.year.toString();\r\n if (!setting.isGregorian)\r\n currentMonthInfo = this.toPersianNumber(currentMonthInfo);\r\n selectedMonthName = this.getMonthName(dateTimeToShowJson.month - 1, setting.isGregorian);\r\n\r\n if (setting.yearOffset <= 0) {\r\n previousYearButtonDisabledAttribute = 'disabled';\r\n nextYearButtonDisabledAttribute = 'disabled';\r\n selectYearButtonDisabledAttribute = 'disabled';\r\n }\r\n\r\n // روز های ماه قبل\r\n if (!setting.isGregorian && firstWeekDayNumber != 6 || setting.isGregorian && firstWeekDayNumber != 0) {\r\n if (setting.isGregorian)\r\n firstWeekDayNumber--;\r\n let previousMonthDateTimeJson = this.addMonthToDateTimeJson(dateTimeToShowJson, -1, setting.isGregorian);\r\n for (i = numberOfDaysInPreviousMonth - firstWeekDayNumber; i <= numberOfDaysInPreviousMonth; i++) {\r\n currentDateNumber = this.convertToNumber2(previousMonthDateTimeJson.year, previousMonthDateTimeJson.month, i);\r\n dayNumberInString = setting.isGregorian ? this.zeroPad(i) : this.toPersianNumber(this.zeroPad(i));\r\n td = document.createElement('TD');\r\n td.setAttribute('data-nm', '');\r\n td.setAttribute('data-number', currentDateNumber.toString());\r\n td.innerHTML = dayNumberInString;\r\n if (setting.rangeSelector) {\r\n if (currentDateNumber == rangeSelectorStartDateNumber || currentDateNumber == rangeSelectorEndDateNumber)\r\n td.classList.add('selected-range-days-start-end');\r\n else if (rangeSelectorStartDateNumber > 0 && rangeSelectorEndDateNumber > 0 && currentDateNumber > rangeSelectorStartDateNumber && currentDateNumber < rangeSelectorEndDateNumber)\r\n td.classList.add('selected-range-days-nm');\r\n }\r\n // روز جمعه\r\n if (!setting.isGregorian && tdNumber == 6)\r\n td.classList.add('text-danger');\r\n // روز یکشنبه\r\n else if (setting.isGregorian && tdNumber == 0)\r\n td.classList.add('text-danger');\r\n tr.appendChild(td);\r\n cellNumber++;\r\n tdNumber++;\r\n if (tdNumber >= 7) {\r\n tdNumber = 0;\r\n daysHtml += tr.outerHTML;\r\n isTrAppended = true;\r\n tr = document.createElement('TR');\r\n }\r\n }\r\n }\r\n\r\n // روزهای ماه جاری\r\n for (i = 1; i <= numberOfDaysInCurrentMonth; i++) {\r\n\r\n if (tdNumber >= 7) {\r\n tdNumber = 0;\r\n daysHtml += tr.outerHTML;\r\n isTrAppended = true;\r\n tr = document.createElement('TR');\r\n }\r\n\r\n // عدد روز\r\n currentDateNumber = this.convertToNumber2(dateTimeToShowJson.year, dateTimeToShowJson.month, i);\r\n dayNumberInString = setting.isGregorian ? this.zeroPad(i) : this.toPersianNumber(this.zeroPad(i));\r\n\r\n td = document.createElement('TD');\r\n td.setAttribute('data-day', '');\r\n td.setAttribute('data-number', currentDateNumber.toString());\r\n td.innerHTML = dayNumberInString;\r\n\r\n // امروز\r\n if (currentDateNumber == todayDateNumber) {\r\n td.setAttribute('data-today', '');\r\n td.setAttribute('title', setting.isGregorian ? this.todayText : this.todayTextPersian);\r\n // اگر نام روز هفته انتخاب شده در تکس باکس قبل از تاریخ امروز باشد\r\n // نباید دیگر نام روز هفته تغییر کند\r\n if (!dayOfWeek)\r\n dayOfWeek = this.getWeekDayName(tdNumber - 1 < 0 ? 0 : tdNumber - 1, setting.isGregorian);\r\n }\r\n\r\n // روز از قبل انتخاب شده\r\n if (!setting.rangeSelector && selectedDateNumber == currentDateNumber) {\r\n td.setAttribute('data-mds-dtp-selected-day', '');\r\n dayOfWeek = this.getWeekDayName(tdNumber - 1 < 0 ? 0 : tdNumber - 1, setting.isGregorian);\r\n }\r\n\r\n // روزهای تعطیل\r\n for (j = 0; j < holidaysDateNumbers.length; j++) {\r\n if (holidaysDateNumbers[j] != currentDateNumber) continue;\r\n td.classList.add('text-danger');\r\n break;\r\n }\r\n\r\n // روز جمعه شمسی\r\n if (!setting.isGregorian && tdNumber == 6) {\r\n td.classList.add('text-danger');\r\n }\r\n // روز یکشنبه میلادی\r\n else if (setting.isGregorian && tdNumber == 0) {\r\n td.classList.add('text-danger');\r\n }\r\n\r\n // روزهای غیر فعال شده\r\n if (setting.disableBeforeToday) {\r\n if (currentDateNumber < todayDateNumber) td.setAttribute('disabled', '');\r\n if (nextMonthDateNumber < todayDateNumber)\r\n nextMonthButtonDisabledAttribute = 'disabled';\r\n if (nextYearDateNumber < todayDateNumber)\r\n nextYearButtonDisabledAttribute = 'disabled';\r\n if (previousMonthDateNumber < todayDateNumber)\r\n previousMonthButtonDisabledAttribute = 'disabled';\r\n if (previousYearDateNumber < todayDateNumber)\r\n previousYearButtonDisabledAttribute = 'disabled';\r\n for (j = 1; j <= 12; j++) {\r\n if (monthsDateNumberAndAttr['month' + j.toString() + 'DateNumber'] < todayDateNumber)\r\n monthsDateNumberAndAttr['selectMonth' + j.toString() + 'ButtonCssClass'] = 'disabled';\r\n }\r\n }\r\n if (setting.disableAfterToday) {\r\n if (currentDateNumber > todayDateNumber) td.setAttribute('disabled', '');\r\n if (nextMonthDateNumber > todayDateNumber)\r\n nextMonthButtonDisabledAttribute = 'disabled';\r\n if (nextYearDateNumber > todayDateNumber)\r\n nextYearButtonDisabledAttribute = 'disabled';\r\n if (previousMonthDateNumber > todayDateNumber)\r\n previousMonthButtonDisabledAttribute = 'disabled';\r\n if (previousYearDateNumber > todayDateNumber)\r\n previousYearButtonDisabledAttribute = 'disabled';\r\n for (j = 1; j <= 12; j++) {\r\n if (monthsDateNumberAndAttr['month' + j.toString() + 'DateNumber'] > todayDateNumber)\r\n monthsDateNumberAndAttr['selectMonth' + j.toString() + 'ButtonCssClass'] = 'disabled';\r\n }\r\n }\r\n if (disableAfterDateTimeNumber) {\r\n if (currentDateNumber > disableAfterDateTimeNumber) td.setAttribute('disabled', '');\r\n if (nextMonthDateNumber > disableAfterDateTimeNumber)\r\n nextMonthButtonDisabledAttribute = 'disabled';\r\n if (nextYearDateNumber > disableAfterDateTimeNumber)\r\n nextYearButtonDisabledAttribute = 'disabled';\r\n if (previousMonthDateNumber > disableAfterDateTimeNumber)\r\n previousMonthButtonDisabledAttribute = 'disabled';\r\n if (previousYearDateNumber > disableAfterDateTimeNumber)\r\n previousYearButtonDisabledAttribute = 'disabled';\r\n for (j = 1; j <= 12; j++) {\r\n if (monthsDateNumberAndAttr['month' + j.toString() + 'DateNumber'] > disableAfterDateTimeNumber)\r\n monthsDateNumberAndAttr['selectMonth' + j.toString() + 'ButtonCssClass'] = 'disabled';\r\n }\r\n }\r\n if (disableBeforeDateTimeNumber) {\r\n if (currentDateNumber < disableBeforeDateTimeNumber) td.setAttribute('disabled', '');\r\n if (nextMonthDateNumber < disableBeforeDateTimeNumber)\r\n nextMonthButtonDisabledAttribute = 'disabled';\r\n if (nextYearDateNumber < disableBeforeDateTimeNumber)\r\n nextYearButtonDisabledAttribute = 'disabled';\r\n if (previousMonthDateNumber < disableBeforeDateTimeNumber)\r\n previousMonthButtonDisabledAttribute = 'disabled';\r\n if (previousYearDateNumber < disableBeforeDateTimeNumber)\r\n previousYearButtonDisabledAttribute = 'disabled';\r\n for (j = 1; j <= 12; j++) {\r\n if (monthsDateNumberAndAttr['month' + j.toString() + 'DateNumber'] < disableBeforeDateTimeNumber)\r\n monthsDateNumberAndAttr['selectMonth' + j.toString() + 'ButtonCssClass'] = 'disabled';\r\n }\r\n }\r\n for (j = 0; j < disabledDatesNumber.length; j++) {\r\n if (currentDateNumber == disabledDatesNumber[j])\r\n td.setAttribute('disabled', '');\r\n }\r\n for (j = 0; j < specialDatesNumber.length; j++) {\r\n if (currentDateNumber == specialDatesNumber[j])\r\n td.setAttribute('data-special-date', '');\r\n }\r\n if (setting.disabledDays != null && setting.disabledDays.length > 0 && setting.disabledDays.indexOf(tdNumber) >= 0) {\r\n td.setAttribute('disabled', '');\r\n }\r\n // \\\\\r\n\r\n if (setting.rangeSelector) {\r\n if (currentDateNumber == rangeSelectorStartDateNumber || currentDateNumber == rangeSelectorEndDateNumber)\r\n td.classList.add('selected-range-days-start-end');\r\n else if (rangeSelectorStartDateNumber > 0 && rangeSelectorEndDateNumber > 0 && currentDateNumber > rangeSelectorStartDateNumber && currentDateNumber < rangeSelectorEndDateNumber)\r\n td.classList.add('selected-range-days');\r\n }\r\n\r\n tr.appendChild(td);\r\n isTrAppended = false;\r\n\r\n tdNumber++;\r\n cellNumber++;\r\n }\r\n\r\n if (tdNumber >= 7) {\r\n tdNumber = 0;\r\n daysHtml += tr.outerHTML;\r\n isTrAppended = true;\r\n tr = document.createElement('TR');\r\n }\r\n\r\n // روزهای ماه بعد\r\n let nextMonthDateTimeJson = this.addMonthToDateTimeJson(dateTimeToShowJson, 1, setting.isGregorian);\r\n for (i = 1; i <= 42 - cellNumber; i++) {\r\n dayNumberInString = setting.isGregorian ? this.zeroPad(i) : this.toPersianNumber(this.zeroPad(i));\r\n currentDateNumber = this.convertToNumber2(nextMonthDateTimeJson.year, nextMonthDateTimeJson.month, i);\r\n td = document.createElement('TD');\r\n td.setAttribute('data-nm', '');\r\n td.setAttribute('data-number', currentDateNumber.toString());\r\n td.innerHTML = dayNumberInString;\r\n if (setting.rangeSelector) {\r\n if (currentDateNumber == rangeSelectorStartDateNumber || currentDateNumber == rangeSelectorEndDateNumber)\r\n td.classList.add('selected-range-days-start-end');\r\n else if (rangeSelectorStartDateNumber > 0 && rangeSelectorEndDateNumber > 0 && currentDateNumber > rangeSelectorStartDateNumber && currentDateNumber < rangeSelectorEndDateNumber)\r\n td.classList.add('selected-range-days-nm');\r\n }\r\n // روز جمعه\r\n if (!setting.isGregorian && tdNumber == 6)\r\n td.classList.add('text-danger');\r\n // روز یکشنبه\r\n else if (setting.isGregorian && tdNumber == 0)\r\n td.classList.add('text-danger');\r\n tr.appendChild(td);\r\n tdNumber++;\r\n if (tdNumber >= 7) {\r\n tdNumber = 0;\r\n daysHtml += tr.outerHTML;\r\n isTrAppended = true;\r\n tr = document.createElement('TR');\r\n }\r\n }\r\n\r\n if (!isTrAppended) {\r\n daysHtml += tr.outerHTML;\r\n isTrAppended = true;\r\n }\r\n\r\n html = html.replace(/\\{\\{currentMonthInfo\\}\\}/img, currentMonthInfo);\r\n html = html.replace(/\\{\\{selectedYear\\}\\}/img, selectedYear);\r\n html = html.replace(/\\{\\{selectedMonthName\\}\\}/img, selectedMonthName);\r\n html = html.replace(/\\{\\{daysHtml\\}\\}/img, daysHtml);\r\n html = html.replace(/\\{\\{previousYearButtonDisabledAttribute\\}\\}/img, previousYearButtonDisabledAttribute);\r\n html = html.replace(/\\{\\{previousYearButtonDateNumber\\}\\}/img, previousYearDateNumber.toString());\r\n html = html.replace(/\\{\\{previousMonthButtonDisabledAttribute\\}\\}/img, previousMonthButtonDisabledAttribute);\r\n html = html.replace(/\\{\\{previousMonthButtonDateNumber\\}\\}/img, previousMonthDateNumber.toString());\r\n html = html.replace(/\\{\\{selectYearButtonDisabledAttribute\\}\\}/img, selectYearButtonDisabledAttribute);\r\n html = html.replace(/\\{\\{nextMonthButtonDisabledAttribute\\}\\}/img, nextMonthButtonDisabledAttribute);\r\n html = html.replace(/\\{\\{nextMonthButtonDateNumber\\}\\}/img, nextMonthDateNumber.toString());\r\n html = html.replace(/\\{\\{nextYearButtonDisabledAttribute\\}\\}/img, nextYearButtonDisabledAttribute);\r\n html = html.replace(/\\{\\{nextYearButtonDateNumber\\}\\}/img, nextYearDateNumber.toString());\r\n html = html.replace(/\\{\\{dropDownMenuMonth1DateNumber\\}\\}/img, monthsDateNumberAndAttr.month1DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth2DateNumber\\}\\}/img, monthsDateNumberAndAttr.month2DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth3DateNumber\\}\\}/img, monthsDateNumberAndAttr.month3DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth4DateNumber\\}\\}/img, monthsDateNumberAndAttr.month4DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth5DateNumber\\}\\}/img, monthsDateNumberAndAttr.month5DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth6DateNumber\\}\\}/img, monthsDateNumberAndAttr.month6DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth7DateNumber\\}\\}/img, monthsDateNumberAndAttr.month7DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth8DateNumber\\}\\}/img, monthsDateNumberAndAttr.month8DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth9DateNumber\\}\\}/img, monthsDateNumberAndAttr.month9DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth10DateNumber\\}\\}/img, monthsDateNumberAndAttr.month10DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth11DateNumber\\}\\}/img, monthsDateNumberAndAttr.month11DateNumber);\r\n html = html.replace(/\\{\\{dropDownMenuMonth12DateNumber\\}\\}/img, monthsDateNumberAndAttr.month12DateNumber);\r\n html = html.replace(/\\{\\{selectMonth1ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth1ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth2ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth2ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth3ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth3ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth4ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth4ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth5ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth5ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth6ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth6ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth7ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth7ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth8ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth8ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth9ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth9ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth10ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth10ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth11ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth11ButtonCssClass);\r\n html = html.replace(/\\{\\{selectMonth12ButtonCssClass\\}\\}/img, monthsDateNumberAndAttr.selectMonth12ButtonCssClass);\r\n\r\n return html;\r\n }\r\n private hideYearsBox = (element: Element, setting: MdsPersianDateTimePickerSetting): void => {\r\n if (setting.inLine) {\r\n const dtpInLine = element.closest('[data-mds-dtp-guid]');\r\n if (this.tempTitleString)\r\n dtpInLine.querySelector('[mds-dtp-inline-header]').innerHTML = this.tempTitleString;\r\n const yearListBox = dtpInLine.querySelector('[data-mds-dtp-year-list-box]');\r\n yearListBox.classList.add('w-0');\r\n yearListBox.innerHTML = '';\r\n const inlineYearsContainer = dtpInLine.querySelector('[data-name=\"dtp-years-container\"]');\r\n inlineYearsContainer.classList.add('w-0');\r\n inlineYearsContainer.innerHTML = '';\r\n dtpInLine.classList.remove('overflow-hidden');\r\n } else {\r\n if (this.tempTitleString)\r\n this.getPopover(document.querySelector(`[data-mds-dtp-guid=\"${this.guid}\"]`)).querySelector('[mds-dtp-title]').innerHTML = this.tempTitleString;\r\n const yearListBox = this.getPopover(this.element).querySelector('[data-mds-dtp-year-list-box]');\r\n yearListBox.classList.add('w-0');\r\n yearListBox.innerHTML = '';\r\n }\r\n };\r\n private showYearsBox = (element: Element): void => {\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n const setting = instance.setting;\r\n this.tempTitleString = setting.inLine\r\n ? document.querySelector('[mds-dtp-inline-header]').textContent.trim()\r\n : document.querySelector('[data-mds-dtp]').querySelector('[mds-dtp-title]').textContent.trim();\r\n const yearsToSelectObject = this.getYearsBoxBodyHtml(setting, 0);\r\n const dateTimePickerYearsToSelectHtml = yearsToSelectObject.html;\r\n const mdDatePickerContainerSelector = setting.inLine\r\n ? element.closest('[data-mds-dtp-guid]')\r\n : element.closest('[data-mds-dtp]');\r\n const dateTimePickerYearsToSelectContainer = mdDatePickerContainerSelector.querySelector('[data-mds-dtp-year-list-box]');\r\n this.setPopoverHeaderHtml(element, setting.inLine, this.getYearsBoxHeaderHtml(setting, yearsToSelectObject.yearStart, yearsToSelectObject.yearEnd));\r\n dateTimePickerYearsToSelectContainer.innerHTML = dateTimePickerYearsToSelectHtml;\r\n dateTimePickerYearsToSelectContainer.classList.remove('w-0');\r\n if (setting.inLine) {\r\n mdDatePickerContainerSelector.classList.add('overflow-hidden')\r\n dateTimePickerYearsToSelectContainer.classList.add('inline');\r\n } else {\r\n dateTimePickerYearsToSelectContainer.classList.remove('inline');\r\n }\r\n }\r\n private changeYearList = (element: Element): void => {\r\n // کلیک روی دکمه های عوض کردن رنج سال انتخابی\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n const setting = instance.setting;\r\n const isNext = element.getAttribute('data-year-range-button-change') == '1';\r\n const yearStart = Number(element.getAttribute('data-year'));\r\n const yearsToSelectObject = this.getYearsBoxBodyHtml(setting, isNext ? yearStart : yearStart - setting.yearOffset * 2);\r\n if (setting.inLine)\r\n element.closest('[data-mds-dtp-guid]').querySelector('[data-mds-dtp-year-list-box]').innerHTML = yearsToSelectObject.html;\r\n else\r\n element.closest('[data-mds-dtp]').querySelector('[data-mds-dtp-year-list-box]').innerHTML = yearsToSelectObject.html;\r\n this.setPopoverHeaderHtml(element, setting.inLine, this.getYearsBoxHeaderHtml(setting, yearsToSelectObject.yearStart, yearsToSelectObject.yearEnd));\r\n };\r\n private getPopoverHeaderTitle(setting: MdsPersianDateTimePickerSetting): string {\r\n let selectedDateToShowJson: GetDateTimeJson1;\r\n let title = '';\r\n if (setting.isGregorian) {\r\n selectedDateToShowJson = this.getDateTimeJson1(setting.selectedDateToShow);\r\n } else {\r\n selectedDateToShowJson = this.getDateTimeJsonPersian1(setting.selectedDateToShow);\r\n }\r\n if (setting.rangeSelector) {\r\n const startDate = this.addMonthToDateTime(setting.selectedDateToShow, -setting.rangeSelectorMonthsToShow[0], setting.isGregorian);\r\n const endDate = this.addMonthToDateTime(setting.selectedDateToShow, setting.rangeSelectorMonthsToShow[1], setting.isGregorian);\r\n let statDateJson: GetDateTimeJson1;\r\n let endDateJson: GetDateTimeJson1;\r\n if (setting.isGregorian) {\r\n statDateJson = this.getDateTimeJson1(startDate);\r\n endDateJson = this.getDateTimeJson1(endDate);\r\n } else {\r\n statDateJson = this.getDateTimeJsonPersian1(startDate);\r\n endDateJson = this.getDateTimeJsonPersian1(endDate);\r\n }\r\n const startMonthName = this.getMonthName(statDateJson.month - 1, setting.isGregorian);\r\n const endMonthName = this.getMonthName(endDateJson.month - 1, setting.isGregorian);\r\n title = `${startMonthName} ${statDateJson.year} - ${endMonthName} ${endDateJson.year}`;\r\n }\r\n else\r\n title = `${this.getMonthName(selectedDateToShowJson.month - 1, setting.isGregorian)} ${selectedDateToShowJson.year}`;\r\n if (!setting.isGregorian)\r\n title = this.toPersianNumber(title);\r\n return title;\r\n }\r\n private setPopoverHeaderHtml = (element: Element, isInLine: boolean, htmlString: string): void => {\r\n // element = المانی که روی آن فعالیتی انجام شده و باید عنوان تقویم آن عوض شود \r\n if (!isInLine) {\r\n const popoverElement = this.getPopover(element);\r\n popoverElement.querySelector('[mds-dtp-title]').innerHTML = htmlString;\r\n } else {\r\n let inlineTitleBox = element.closest('[data-mds-dtp-guid]').querySelector('[data-name=\"dtp-years-container\"]');\r\n inlineTitleBox.innerHTML = htmlString;\r\n inlineTitleBox.classList.remove('w-0');\r\n }\r\n }\r\n private getDateTimePickerBodyHtml(setting: MdsPersianDateTimePickerSetting): string {\r\n let selectedDateToShow = this.getClonedDate(setting.selectedDateToShow);\r\n let html = this.dateTimePickerHtmlTemplate;\r\n\r\n html = html.replace(/\\{\\{inlineAttr\\}\\}/img, setting.inLine ? 'data-inline' : '');\r\n html = html.replace(/\\{\\{rtlCssClass\\}\\}/img, setting.isGregorian ? '' : 'rtl');\r\n html = html.replace(/\\{\\{selectedDateStringAttribute\\}\\}/img, setting.inLine ? '' : 'hidden');\r\n html = html.replace(/\\{\\{goTodayText\\}\\}/img, setting.isGregorian ? this.goTodayText : this.goTodayTextPersian);\r\n html = html.replace(/\\{\\{timePickerAttribute\\}\\}/img, setting.enableTimePicker ? '' : 'hidden');\r\n\r\n const disabledDays = this.getDisabledDateObject(setting);\r\n let title = '';\r\n let todayDateString = '';\r\n let todayDateTimeJson: GetDateTimeJson1;\r\n let selectedDateTimeToShowJson: GetDateTimeJson1;\r\n let disableBeforeDateTimeJson: GetDateTimeJson1 | undefined = disabledDays[0];\r\n let disableAfterDateTimeJson: GetDateTimeJson1 | undefined = disabledDays[1];\r\n\r\n if (setting.isGregorian) {\r\n selectedDateTimeToShowJson = this.getDateTimeJson1(selectedDateToShow);\r\n todayDateTimeJson = this.getDateTimeJson1(new Date());\r\n } else {\r\n selectedDateTimeToShowJson = this.getDateTimeJsonPersian1(selectedDateToShow);\r\n todayDateTimeJson = this.getDateTimeJsonPersian1(new Date());\r\n }\r\n\r\n title = this.getPopoverHeaderTitle(setting);\r\n todayDateString = `${setting.isGregorian ? 'Today,' : 'امروز،'} ${todayDateTimeJson.day} ${this.getMonthName(todayDateTimeJson.month - 1, setting.isGregorian)} ${todayDateTimeJson.year}`;\r\n if (!setting.isGregorian) {\r\n todayDateString = this.toPersianNumber(todayDateString);\r\n }\r\n\r\n if (disableAfterDateTimeJson != undefined && disableAfterDateTimeJson.year <= selectedDateTimeToShowJson.year && disableAfterDateTimeJson.month < selectedDateTimeToShowJson.month)\r\n selectedDateToShow = setting.isGregorian ? new Date(disableAfterDateTimeJson.year, disableAfterDateTimeJson.month - 1, 1) : this.getDateTime1(disableAfterDateTimeJson.year, disableAfterDateTimeJson.month, disableAfterDateTimeJson.day);\r\n\r\n if (disableBeforeDateTimeJson != undefined && disableBeforeDateTimeJson.year >= selectedDateTimeToShowJson.year && disableBeforeDateTimeJson.month > selectedDateTimeToShowJson.month)\r\n selectedDateToShow = setting.isGregorian ? new Date(disableBeforeDateTimeJson.year, disableBeforeDateTimeJson.month - 1, 1) : this.getDateTime1(disableBeforeDateTimeJson.year, disableBeforeDateTimeJson.month, disableBeforeDateTimeJson.day);\r\n\r\n let monthsTdHtml = '';\r\n let numberOfNextMonths = setting.rangeSelectorMonthsToShow[1] <= 0 ? 0 : setting.rangeSelectorMonthsToShow[1];\r\n let numberOfPrevMonths = setting.rangeSelectorMonthsToShow[0] <= 0 ? 0 : setting.rangeSelectorMonthsToShow[0];\r\n numberOfPrevMonths *= -1;\r\n for (let i1 = numberOfPrevMonths; i1 < 0; i1++) {\r\n setting.selectedDateToShow = this.addMonthToDateTime(this.getClonedDate(selectedDateToShow), i1, false);\r\n monthsTdHtml += this.getDateTimePickerMonthHtml(setting, false, true);\r\n }\r\n setting.selectedDateToShow = this.getClonedDate(selectedDateToShow);\r\n monthsTdHtml += this.getDateTimePickerMonthHtml(setting, false, false);\r\n for (let i2 = 1; i2 <= numberOfNextMonths; i2++) {\r\n setting.selectedDateToShow = this.addMonthToDateTime(this.getClonedDate(selectedDateToShow), i2, false);\r\n monthsTdHtml += this.getDateTimePickerMonthHtml(setting, true, false);\r\n }\r\n\r\n let totalMonthNumberToShow = Math.abs(numberOfPrevMonths) + 1 + numberOfNextMonths;\r\n let monthTdStyle = totalMonthNumberToShow > 1 ? 'width: ' + (100 / totalMonthNumberToShow).toString() + '%;' : '';\r\n\r\n monthsTdHtml = monthsTdHtml.replace(/\\{\\{monthTdStyle\\}\\}/img, monthTdStyle);\r\n\r\n html = html.replace(/\\{\\{dtpInlineHeader\\}\\}/img, title);\r\n html = html.replace(/\\{\\{todayDateString\\}\\}/img, todayDateString);\r\n html = html.replace(/\\{\\{time\\}\\}/img, `${this.zeroPad(selectedDateTimeToShowJson.hour)}:${this.zeroPad(selectedDateTimeToShowJson.minute)}`);\r\n html = html.replace(/\\{\\{monthsTdHtml\\}\\}/img, monthsTdHtml);\r\n\r\n return html;\r\n }\r\n private updateCalendarBodyHtml = (element: Element, setting: MdsPersianDateTimePickerSetting): void => {\r\n const calendarHtml = this.getDateTimePickerBodyHtml(setting);\r\n const containerElement = !setting.inLine\r\n ? element.closest('[data-name=\"mds-dtp-body\"]')\r\n : element.closest('[data-mds-dtp-guid]');\r\n const dtpInlineHeader = calendarHtml.match(/]*>(.*?)<\\/th>/img)[0];\r\n this.tempTitleString = dtpInlineHeader;\r\n this.setPopoverHeaderHtml(element, setting.inLine, dtpInlineHeader.trim());\r\n containerElement.innerHTML = calendarHtml;\r\n this.enableEvents();\r\n this.enableInLineEvents();\r\n }\r\n private changeMonth = (element: Element): void => {\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n if (instance.setting.disabled) return;\r\n const dateNumber = Number(element.getAttribute('data-number'));\r\n const setting = instance.setting;\r\n let selectedDateToShow = instance.getClonedDate(setting.selectedDateToShow);\r\n selectedDateToShow = this.getDateTime4(dateNumber, selectedDateToShow, setting.isGregorian);\r\n setting.selectedDateToShow = this.getClonedDate(selectedDateToShow);\r\n MdsPersianDateTimePickerData.set(instance.guid, instance);\r\n this.updateCalendarBodyHtml(element, setting);\r\n if (setting.calendarViewOnChange != undefined)\r\n setting.calendarViewOnChange(selectedDateToShow);\r\n }\r\n private selectDay = (element: Element): void => {\r\n // کلیک روی روزها\r\n // انتخاب روز\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n if (instance.setting.disabled || element.getAttribute('disabled') != undefined)\r\n return;\r\n let dateNumber = Number(element.getAttribute('data-number'));\r\n const setting = instance.setting;\r\n const disabled = element.getAttribute('disabled') != undefined;\r\n if (setting.selectedDate != undefined && !setting.enableTimePicker) {\r\n setting.selectedDate.setHours(0);\r\n setting.selectedDate.setMinutes(0);\r\n setting.selectedDate.setSeconds(0);\r\n }\r\n let selectedDateJson = setting.selectedDate == undefined ? undefined : this.getDateTimeJson1(setting.selectedDate);\r\n let selectedDateToShow = setting.selectedDateToShow == undefined ? undefined : this.getClonedDate(setting.selectedDateToShow);\r\n let selectedDateToShowJson = selectedDateToShow == undefined ? undefined : this.getDateTimeJson1(selectedDateToShow);\r\n if (disabled) {\r\n if (setting.onDayClick != undefined) setting.onDayClick(setting);\r\n return;\r\n }\r\n selectedDateToShow = this.getDateTime4(dateNumber, selectedDateToShow, setting.isGregorian);\r\n if (setting.rangeSelector) { // اگر رنج سلکتور فعال بود\r\n if (setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate != undefined) {\r\n setting.selectedRangeDate = [];\r\n setting.rangeSelectorStartDate = undefined;\r\n setting.rangeSelectorEndDate = undefined;\r\n let closestSelector = '[data-mds-dtp]';\r\n if (setting.inLine)\r\n closestSelector = '[data-mds-dtp-guid]';\r\n element.closest(closestSelector).querySelectorAll('td.selected-range-days-start-end,td.selected-range-days')\r\n .forEach(e => {\r\n e.classList.remove('selected-range-days');\r\n e.classList.remove('selected-range-days-start-end');\r\n });\r\n }\r\n if (setting.rangeSelectorStartDate == undefined) {\r\n element.classList.add('selected-range-days-start-end');\r\n setting.rangeSelectorStartDate = this.getClonedDate(selectedDateToShow);\r\n setting.selectedDate = this.getClonedDate(selectedDateToShow);\r\n setting.selectedDateToShow = this.getClonedDate(selectedDateToShow);\r\n } else if (setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate == undefined) {\r\n if (setting.rangeSelectorStartDate.getTime() >= selectedDateToShow.getTime())\r\n return;\r\n element.classList.add('selected-range-days-start-end');\r\n setting.rangeSelectorEndDate = this.getClonedDate(selectedDateToShow);\r\n this.setSelectedData(setting);\r\n }\r\n MdsPersianDateTimePickerData.set(instance.guid, instance);\r\n if (setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate != undefined) {\r\n setting.selectedRangeDate = [this.getClonedDate(setting.rangeSelectorStartDate), this.getClonedDate(setting.rangeSelectorEndDate)];\r\n if (!setting.inLine) {\r\n instance.hide();\r\n } else\r\n this.updateCalendarBodyHtml(element, setting);\r\n }\r\n return;\r\n }\r\n setting.selectedDate = this.getClonedDate(selectedDateToShow);\r\n if (setting.selectedDate != undefined && !setting.enableTimePicker) {\r\n setting.selectedDate.setHours(0);\r\n setting.selectedDate.setMinutes(0);\r\n setting.selectedDate.setSeconds(0);\r\n }\r\n setting.selectedDateToShow = this.getClonedDate(selectedDateToShow);\r\n if (selectedDateJson != undefined) {\r\n if (setting.enableTimePicker) {\r\n selectedDateJson.hour = selectedDateToShowJson.hour;\r\n selectedDateJson.minute = selectedDateToShowJson.minute;\r\n selectedDateJson.second = selectedDateToShowJson.second;\r\n } else {\r\n selectedDateJson.hour = 0;\r\n selectedDateJson.minute = 0;\r\n selectedDateJson.second = 0;\r\n }\r\n setting.selectedDate.setHours(selectedDateJson.hour);\r\n setting.selectedDate.setMinutes(selectedDateJson.minute);\r\n setting.selectedDate.setSeconds(selectedDateJson.second);\r\n }\r\n MdsPersianDateTimePickerData.set(instance.guid, instance);\r\n this.setSelectedData(setting);\r\n if (!setting.inLine) {\r\n instance.hide();\r\n } else {\r\n // حذف روزهای انتخاب شده در تقویم این لاین\r\n element.closest(`[data-mds-dtp-guid=\"${this.guid}\"]`)\r\n .querySelectorAll('[data-day]')\r\n .forEach(e => e.removeAttribute('data-mds-dtp-selected-day'));\r\n }\r\n element.setAttribute('data-mds-dtp-selected-day', '');\r\n if (setting.toDate || setting.fromDate) {\r\n // وقتی روی روز یکی از تقویم ها کلیک می شود\r\n // باید تقویم دیگر نیز تغییر کند و روزهایی از آن غیر فعال شود\r\n const toDateElement = document.querySelector(`[data-mds-dtp-group=\"${setting.groupId}\"][data-to-date]`);\r\n const fromDateElement = document.querySelector(`[data-mds-dtp-group=\"${setting.groupId}\"][data-from-date]`);\r\n if (setting.fromDate && toDateElement != undefined) {\r\n const instance = MdsPersianDateTimePicker.getInstance(toDateElement);\r\n if (setting.inLine)\r\n this.updateCalendarBodyHtml(toDateElement, instance.setting);\r\n else\r\n instance.initializeBsPopover(instance.setting);\r\n } else if (setting.toDate && fromDateElement != undefined) {\r\n const instance = MdsPersianDateTimePicker.getInstance(fromDateElement);\r\n if (setting.inLine)\r\n this.updateCalendarBodyHtml(fromDateElement, instance.setting);\r\n else\r\n instance.initializeBsPopover(instance.setting);\r\n } else\r\n this.updateCalendarBodyHtml(element, setting);\r\n } else {\r\n this.updateCalendarBodyHtml(element, setting);\r\n }\r\n if (setting.onDayClick != undefined)\r\n setting.onDayClick(setting);\r\n }\r\n private hoverOnDays = (e: MouseEvent): void => {\r\n // هاور روی روزها\r\n const element = e.target;\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n const setting = instance.setting;\r\n\r\n if (element.getAttribute('disabled') != undefined || !setting.rangeSelector ||\r\n (setting.rangeSelectorStartDate != undefined && setting.rangeSelectorEndDate != undefined)) return;\r\n\r\n const dateNumber = Number(element.getAttribute('data-number'));\r\n const allDayElements: Element[] = [].slice.call(document.querySelectorAll('td[data-day]'));\r\n allDayElements.forEach(e => {\r\n e.classList.remove('selected-range-days');\r\n e.classList.remove('selected-range-days-nm');\r\n });\r\n\r\n const allNextOrPrevMonthDayElements: Element[] = [].slice.call(document.querySelectorAll('td[data-nm]'));\r\n allNextOrPrevMonthDayElements.forEach(e => {\r\n e.classList.remove('selected-range-days');\r\n e.classList.remove('selected-range-days-nm');\r\n });\r\n\r\n const rangeSelectorStartDate = !setting.rangeSelectorStartDate ? undefined : this.getClonedDate(setting.rangeSelectorStartDate);\r\n const rangeSelectorEndDate = !setting.rangeSelectorEndDate ? undefined : this.getClonedDate(setting.rangeSelectorEndDate);\r\n let rangeSelectorStartDateNumber = 0;\r\n let rangeSelectorEndDateNumber = 0;\r\n\r\n if (setting.isGregorian) {\r\n rangeSelectorStartDateNumber = !rangeSelectorStartDate ? 0 : this.convertToNumber3(rangeSelectorStartDate);\r\n rangeSelectorEndDateNumber = !rangeSelectorEndDate ? 0 : this.convertToNumber3(rangeSelectorEndDate);\r\n } else {\r\n rangeSelectorStartDateNumber = !rangeSelectorStartDate ? 0 : this.convertToNumber1(this.getDateTimeJsonPersian1(rangeSelectorStartDate));\r\n rangeSelectorEndDateNumber = !rangeSelectorEndDate ? 0 : this.convertToNumber1(this.getDateTimeJsonPersian1(rangeSelectorEndDate));\r\n }\r\n\r\n if (rangeSelectorStartDateNumber > 0 && dateNumber > rangeSelectorStartDateNumber) {\r\n for (var i1 = rangeSelectorStartDateNumber; i1 <= dateNumber; i1++) {\r\n allDayElements.filter(e => e.getAttribute('data-number') == i1.toString() && e.classList.value.indexOf('selected-range-days-start-end') <= -1)\r\n .forEach(e => e.classList.add('selected-range-days'));\r\n allNextOrPrevMonthDayElements.filter(e => e.getAttribute('data-number') == i1.toString() && e.classList.value.indexOf('selected-range-days-start-end') <= -1)\r\n .forEach(e => e.classList.add('selected-range-days-nm'));\r\n }\r\n } else if (rangeSelectorEndDateNumber > 0 && dateNumber < rangeSelectorEndDateNumber) {\r\n for (var i2 = dateNumber; i2 <= rangeSelectorEndDateNumber; i2++) {\r\n allDayElements.filter(e => e.getAttribute('data-number') == i2.toString() && e.classList.value.indexOf('selected-range-days-start-end') <= -1)\r\n .forEach(e => e.classList.add('selected-range-days'));\r\n allNextOrPrevMonthDayElements.filter(e => e.getAttribute('data-number') == i2.toString() && e.classList.value.indexOf('selected-range-days-start-end') <= -1)\r\n .forEach(e => e.classList.add('selected-range-days-nm'));\r\n }\r\n }\r\n\r\n }\r\n private goToday = (e: PointerEvent): void => {\r\n const element = e.target;\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n const setting = instance.setting;\r\n setting.selectedDateToShow = new Date();\r\n MdsPersianDateTimePickerData.set(instance.guid, instance);\r\n this.updateCalendarBodyHtml(element, setting);\r\n }\r\n private timeChanged = (e: Event): void => {\r\n // عوض کردن ساعت\r\n const element = e.target;\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n const setting = instance.setting;\r\n const value: string = (element).value;\r\n if (!setting.enableTimePicker) return;\r\n if (setting.selectedDateToShow == undefined)\r\n setting.selectedDateToShow = new Date();\r\n let hour = Number(value.substr(0, 2));\r\n let minute = Number(value.substr(3, 2));\r\n setting.selectedDateToShow = new Date(setting.selectedDateToShow.setHours(hour));\r\n setting.selectedDateToShow = new Date(setting.selectedDateToShow.setMinutes(minute));\r\n if (setting.selectedDate == undefined)\r\n setting.selectedDate = new Date();\r\n setting.selectedDate = new Date(setting.selectedDate.setHours(hour));\r\n setting.selectedDate = new Date(setting.selectedDate.setMinutes(minute));\r\n MdsPersianDateTimePickerData.set(instance.guid, instance);\r\n this.setSelectedData(setting);\r\n }\r\n private enableMainEvents(): void {\r\n if (this.setting.inLine) return;\r\n this.element.addEventListener('shown.bs.popover', this.popoverShownEvent);\r\n this.element.addEventListener('hidden.bs.popover', this.popoverHiddenEvent);\r\n this.element.addEventListener('inserted.bs.popover', this.popoverInsertedEvent);\r\n this.element.addEventListener('click', this.showPopoverEvent, true);\r\n }\r\n private popoverInsertedEvent = (e: CustomEvent): void => {\r\n const element = e.target;\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n const setting = instance.setting;\r\n this.hideYearsBox(element, setting);\r\n }\r\n private popoverShownEvent = (): void => {\r\n this.enableEvents();\r\n }\r\n private popoverHiddenEvent = (e: CustomEvent): void => {\r\n this.disableEvents();\r\n }\r\n private enableInLineEvents(): void {\r\n if (!this.setting.inLine) return;\r\n setTimeout(() => {\r\n const dtp = document.querySelector(`[data-mds-dtp-guid=\"${this.guid}\"]`);\r\n dtp.querySelector('[data-mds-dtp-time]').addEventListener('change', this.timeChanged, false);\r\n dtp.addEventListener('click', this.selectCorrectClickEvent);\r\n dtp.querySelectorAll('[data-day]').forEach(e => e.addEventListener('mouseenter', this.hoverOnDays, true));\r\n }, 100);\r\n }\r\n private enableEvents(): void {\r\n if (this.setting.inLine) return;\r\n setTimeout(() => {\r\n document.addEventListener('click', this.selectCorrectClickEvent, false);\r\n document.querySelector('html').addEventListener('click', this.hidePopoverEvent, true);\r\n document.querySelectorAll('[data-mds-dtp-time]').forEach(e => e.addEventListener('change', this.timeChanged, false));\r\n document.querySelectorAll('[data-mds-dtp] [data-day]').forEach(e => e.addEventListener('mouseenter', this.hoverOnDays, true));\r\n }, 500);\r\n }\r\n private disableEvents(): void {\r\n document.removeEventListener('click', this.selectCorrectClickEvent);\r\n document.querySelector('html').removeEventListener('click', this.hidePopoverEvent);\r\n document.querySelectorAll('[data-mds-dtp-time]').forEach(e => e.removeEventListener('change', this.timeChanged));\r\n document.querySelectorAll('[data-mds-dtp] [data-day]').forEach(e => e.removeEventListener('mouseenter', this.hoverOnDays));\r\n const dtp = document.querySelector(`[data-mds-dtp-guid=\"${this.guid}\"]`);\r\n if (dtp != null) {\r\n dtp.removeEventListener('click', this.selectCorrectClickEvent, false);\r\n dtp.querySelectorAll('[data-day]')?.forEach(e => e.removeEventListener('mouseenter', this.hoverOnDays, true));\r\n }\r\n }\r\n private selectCorrectClickEvent = (e: PointerEvent): void => {\r\n const element = e.target;\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n if (instance != null && (instance.setting.disabled || instance.element.getAttribute('disabled') != undefined))\r\n return;\r\n if (element.getAttribute('mds-pdtp-select-year-button') != null) {\r\n instance.showYearsBox(element);\r\n } else if (element.getAttribute('data-mds-dtp-go-today') != null) {\r\n this.goToday(e);\r\n } else if (element.getAttribute('data-day') != null) {\r\n this.selectDay(element);\r\n } else if (element.getAttribute('data-mds-hide-year-list-box')) {\r\n this.hideYearsBox(element, instance.setting);\r\n } else if (element.getAttribute('data-change-date-button')) {\r\n this.changeMonth(element);\r\n } else if (element.getAttribute('data-year-range-button-change') != null && element.getAttribute('disabled') == null) {\r\n this.changeYearList(element);\r\n }\r\n }\r\n private showPopoverEvent = (e: PointerEvent): void => {\r\n MdsPersianDateTimePickerData.getAll().forEach(i => i.hide());\r\n const element = e.target;\r\n const instance = MdsPersianDateTimePicker.getInstance(element);\r\n if (instance.setting.disabled) return;\r\n instance.show();\r\n }\r\n private hidePopoverEvent = (e: PointerEvent): void => {\r\n const element = e.target;\r\n if (element.tagName == 'HTML') {\r\n MdsPersianDateTimePickerData.getAll().forEach(i => i.hide());\r\n return;\r\n }\r\n const isWithinDatePicker = element.closest('[data-mds-dtp]') != null || element.getAttribute('data-mds-dtp-guid') != null || element.getAttribute('data-mds-dtp-go-today') != null;\r\n if (!isWithinDatePicker) {\r\n MdsPersianDateTimePickerData.getAll().forEach(i => i.hide());\r\n }\r\n }\r\n\r\n /**\r\n * نمایش تقویم\r\n */\r\n show(): void {\r\n if (this.bsPopover == null) return;\r\n this.bsPopover.show();\r\n }\r\n /**\r\n * مخفی کردن تقویم\r\n */\r\n hide(): void {\r\n if (this.bsPopover == null) return;\r\n this.bsPopover.hide();\r\n }\r\n /**\r\n * مخفی یا نمایش تقویم \r\n */\r\n toggle(): void {\r\n if (this.bsPopover == null) return;\r\n this.bsPopover.toggle();\r\n }\r\n /**\r\n * فعال کردن تقویم\r\n */\r\n enable(): void {\r\n this.setting.disabled = false;\r\n this.element.removeAttribute(\"disabled\");\r\n MdsPersianDateTimePickerData.set(this.guid, this);\r\n this.bsPopover.enable();\r\n }\r\n /**\r\n * غیر فعال کردن تقویم\r\n */\r\n disable(): void {\r\n this.setting.disabled = true;\r\n this.element.setAttribute(\"disabled\", '');\r\n MdsPersianDateTimePickerData.set(this.guid, this);\r\n this.bsPopover.disable();\r\n }\r\n /**\r\n * بروز کردن محل قرار گرفتن تقویم\r\n */\r\n updatePosition(): void {\r\n this.bsPopover.update();\r\n }\r\n /**\r\n * به روز کردن متن نمایش تاریخ روز انتخاب شده\r\n */\r\n updateSelectedDateText(): void {\r\n this.setSelectedData(this.setting);\r\n }\r\n /**\r\n * از بین بردن تقویم\r\n */\r\n dispose(): void {\r\n if (this.bsPopover != null)\r\n this.bsPopover.dispose();\r\n this.element.removeEventListener('click', this.showPopoverEvent);\r\n this.bsPopover = null;\r\n }\r\n /**\r\n * دریافت اینستنس پاپ آور بوت استرپ\r\n */\r\n getBsPopoverInstance(): Popover {\r\n return this.bsPopover;\r\n }\r\n /**\r\n * بروز کردن تنظیمات تقویم\r\n * @param optionName نام آپشن مورد نظر\r\n * @param value مقدار\r\n */\r\n updateOption(optionName: string, value: any): void {\r\n (this.setting)[optionName] = value;\r\n MdsPersianDateTimePickerData.set(this.guid, this);\r\n this.initializeBsPopover(this.setting);\r\n }\r\n\r\n /**\r\n * دریافت اینستنس تقویم از روی المانی که تقویم روی آن فعال شده است\r\n * @param element المانی که تقویم روی آن فعال شده\r\n * @returns اینستنس تقویم\r\n */\r\n static getInstance(element: Element): MdsPersianDateTimePicker {\r\n let elementGuid = element.getAttribute('data-mds-dtp-guid');\r\n if (!elementGuid) {\r\n elementGuid = element.closest('[data-mds-dtp-guid]')?.getAttribute('data-mds-dtp-guid');\r\n if (!elementGuid) {\r\n const id = element.closest('[data-mds-dtp]')?.getAttribute('id');\r\n if (!id) return null;\r\n elementGuid = document.querySelector('[aria-describedby=\"' + id + '\"]').getAttribute('data-mds-dtp-guid');\r\n if (!elementGuid)\r\n return null;\r\n }\r\n };\r\n return MdsPersianDateTimePickerData.get(elementGuid);\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\nenum AmPmEnum {\r\n am,\r\n pm,\r\n none\r\n}\r\n\r\ninterface GetDateTimeJson1 {\r\n year: number,\r\n month: number,\r\n day: number,\r\n hour: number,\r\n minute: number,\r\n second: number,\r\n millisecond: number,\r\n dayOfWeek: number\r\n}\r\n\r\ninterface MdsPersianDateTimePickerYearToSelect {\r\n yearStart: number,\r\n yearEnd: number,\r\n html: string\r\n}\r\n\r\nexport class MdsPersianDateTimePickerSetting {\r\n /**\r\n * محل قرار گرفتن تقویم\r\n */\r\n placement: \"auto\" | \"top\" | \"bottom\" | \"left\" | \"right\" | (() => void) = 'bottom';\r\n /**\r\n * فعال بودن تایم پیکر\r\n */\r\n enableTimePicker = false;\r\n /**\r\n * سلکتور نمایش روز انتخاب شده\r\n */\r\n targetTextSelector = '';\r\n /**\r\n * سلکتور ذخیره تاریخ میلادی، برای روز انتخاب شده\r\n */\r\n targetDateSelector = '';\r\n /**\r\n * آیا تقویم برای کنترل روز پایانی تاریخ است\r\n */\r\n toDate = false;\r\n /**\r\n * آیا تقویم برای کنترل روز شروع تاریخ است\r\n */\r\n fromDate = false;\r\n /**\r\n * شناسه گروه در حالتی که از \r\n * toDate\r\n * و\r\n * fromDate\r\n * استفاده شده است\r\n */\r\n groupId = '';\r\n /**\r\n * آیا تقویم غیر فعال است؟\r\n */\r\n disabled = false;\r\n /**\r\n * فرمت نمایش روز انتخاب شده تقویم\r\n */\r\n textFormat = '';\r\n /**\r\n * فرمت ذخیره تاریخ میلادی انتخاب شده\r\n */\r\n dateFormat = '';\r\n /**\r\n * آیا تقویم میلادی استفاده شود؟\r\n */\r\n isGregorian = false;\r\n /**\r\n * آیا تقویم به صورت این لاین نمایش داده شود؟\r\n */\r\n inLine = false;\r\n /**\r\n * تاریخ انتخاب شده\r\n */\r\n selectedDate: Date = null;\r\n /**\r\n * تاریخی که نمایش تقویم از آن شروع می شود\r\n */\r\n selectedDateToShow = new Date();\r\n /**\r\n * تعداد سال های قابل نمایش در لیست سال های قابل انتخاب\r\n */\r\n yearOffset = 15;\r\n /**\r\n * تاریخ میلادی روزهای تعطیل\r\n */\r\n holidays: Date[] = [];\r\n /**\r\n * تاریخ میلادی روزهای غیر فعال\r\n */\r\n disabledDates: Date[] = [];\r\n /**\r\n * عدد روزهایی از هفته که غیر فعال هستند\r\n */\r\n disabledDays: number[] = [];\r\n /**\r\n * تاریخ میلادی روزهای خاص\r\n */\r\n specialDates: Date[] = [];\r\n /**\r\n * آیا روزهای قبل از امروز غیر فعال شوند؟\r\n */\r\n disableBeforeToday = false;\r\n /**\r\n * آیا روزهای بعد از امروز غیر فعال شوند؟\r\n */\r\n disableAfterToday = false;\r\n /**\r\n * روزهای قبل از این تاریخ غیر فعال شود\r\n */\r\n disableBeforeDate: Date = null;\r\n /**\r\n * روزهای بعد از این تاریخ غیر فعال شود\r\n */\r\n disableAfterDate: Date = null;\r\n /**\r\n * آیا تقویم به صورت انتخاب بازه نمایش داده شود؟\r\n */\r\n rangeSelector = false;\r\n /**\r\n * تاریخ شروع تقویم در مد انتخاب بازه تاریخی برای نمایش\r\n */\r\n rangeSelectorStartDate: Date = null;\r\n /**\r\n * تاریخ پایان تقویم در مد انتخاب بازه تاریخی برای نمایش\r\n */\r\n rangeSelectorEndDate: Date = null;\r\n /**\r\n * تعداد ماه های قابل نمایش در قابلیت انتخاب بازه تاریخی\r\n */\r\n rangeSelectorMonthsToShow = [0, 0];\r\n /**\r\n * تاریخ های انتخاب شده در مد بازه انتخابی\r\n */\r\n selectedRangeDate: Date[] = [];\r\n /**\r\n * آیا تقویم به صورت مدال نمایش داده شود\r\n */\r\n modalMode = false;\r\n /**\r\n * رویداد عوض شدن ماه و تاریخ در دیت پیکر\r\n * @param _ تاریخ ماه انتخابی\r\n */\r\n calendarViewOnChange = (_: Date) => { };\r\n /**\r\n * رویداد انتخاب روز در دیت پیکر\r\n * @param _ تمامی تنظیمات دیت پیکر\r\n */\r\n onDayClick = (_: MdsPersianDateTimePickerSetting) => { }\r\n}\r\n\r\nconst MdsPersianDateTimePickerElementMap = new Map();\r\nvar MdsPersianDateTimePickerData = {\r\n set(key: string, instance: MdsPersianDateTimePicker): void {\r\n if (!MdsPersianDateTimePickerElementMap.has(key)) {\r\n MdsPersianDateTimePickerElementMap.set(key, instance);\r\n return;\r\n }\r\n MdsPersianDateTimePickerElementMap.set(key, instance);\r\n },\r\n get(key: string): MdsPersianDateTimePicker {\r\n return MdsPersianDateTimePickerElementMap.get(key) || null;\r\n },\r\n getAll(): MdsPersianDateTimePicker[] {\r\n return Array.from(MdsPersianDateTimePickerElementMap, ([name, value]) => value);\r\n },\r\n remove(key: string): void {\r\n if (!MdsPersianDateTimePickerElementMap.has(key)) {\r\n return;\r\n }\r\n MdsPersianDateTimePickerElementMap.delete(key);\r\n }\r\n};","module.exports = bootstrap;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(348);\n",""],"names":[],"sourceRoot":""}