@@ -424,11 +424,13 @@ data-bs-toggle="dropdown" aria-expanded="false">
424424
425425 // #region Properties
426426
427- guid : string = '' ;
428- setting : MdsPersianDateTimePickerSetting ;
427+ readonly guid : string = '' ;
428+ readonly setting : MdsPersianDateTimePickerSetting ;
429+
430+ private readonly element : Element ;
431+
429432 private bsPopover : Popover | null = null ;
430433 private bsModal : Modal | null = null ;
431- private element : Element ;
432434 private tempTitleString = '' ;
433435
434436 // #endregion
@@ -439,9 +441,12 @@ data-bs-toggle="dropdown" aria-expanded="false">
439441
440442 // Validation
441443
442- if ( setting . rangeSelector && ( setting . toDate || setting . fromDate ) ) throw new Error ( `MdsPersianDateTimePicker => You can not set true 'toDate' or 'fromDate' and 'rangeSelector' together` ) ;
443- if ( setting . toDate && setting . fromDate ) throw new Error ( `MdsPersianDateTimePicker => You can not set true 'toDate' and 'fromDate' together` ) ;
444- if ( ! setting . groupId && ( setting . toDate || setting . fromDate ) ) throw new Error ( `MdsPersianDateTimePicker => When you set 'toDate' or 'fromDate' true, you have to set 'groupId'` ) ;
444+ if ( setting . rangeSelector && ( setting . toDate || setting . fromDate ) )
445+ throw new Error ( `MdsPersianDateTimePicker => You can not set true 'toDate' or 'fromDate' and 'rangeSelector' together` ) ;
446+ if ( setting . toDate && setting . fromDate )
447+ throw new Error ( `MdsPersianDateTimePicker => You can not set true 'toDate' and 'fromDate' together` ) ;
448+ if ( ! setting . groupId && ( setting . toDate || setting . fromDate ) )
449+ throw new Error ( `MdsPersianDateTimePicker => When you set 'toDate' or 'fromDate' true, you have to set 'groupId'` ) ;
445450
446451 // ---------------------
447452
@@ -741,9 +746,6 @@ data-bs-toggle="dropdown" aria-expanded="false">
741746 private static convertToNumber3 ( dateTime : Date ) : number {
742747 return MdsPersianDateTimePicker . convertToNumber1 ( MdsPersianDateTimePicker . getDateTimeJson1 ( dateTime ) ) ;
743748 }
744- // private static convertToNumber4(dateTime: Date): number {
745- // return Number(MdsPersianDateTimePicker.zeroPad(dateTime.getFullYear()) + MdsPersianDateTimePicker.zeroPad(dateTime.getMonth()) + MdsPersianDateTimePicker.zeroPad(dateTime.getDate()));
746- // }
747749 private static correctOptionValue ( optionName : string , value : any ) : any {
748750 const setting = new MdsPersianDateTimePickerSetting ( ) ;
749751 Object . keys ( setting ) . filter ( key => key === optionName ) . forEach ( key => {
@@ -1775,7 +1777,7 @@ data-bs-toggle="dropdown" aria-expanded="false">
17751777 if ( setting . modalMode )
17761778 containerElement = containerElement . querySelector ( '[data-name="mds-dtp-body"]' ) ;
17771779 }
1778- if ( containerElement == null ) {
1780+ if ( ! containerElement ) {
17791781 console . error ( "mds.bs.datetimepicker: `data-mds-dtp-guid` element not found!" )
17801782 return ;
17811783 }
@@ -1787,10 +1789,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
17871789 }
17881790 private changeMonth = ( element : Element ) : void => {
17891791 const instance = MdsPersianDateTimePicker . getInstance ( element ) ;
1790- if ( ! instance ) {
1792+ if ( ! instance || instance . setting . disabled )
17911793 return ;
1792- }
1793- if ( instance . setting . disabled ) return ;
17941794 const dateNumber = Number ( element . getAttribute ( 'data-number' ) ) ;
17951795 const setting = instance . setting ;
17961796 let selectedDateToShow = MdsPersianDateTimePicker . getClonedDate ( setting . selectedDateToShow ) ;
@@ -1890,34 +1890,35 @@ data-bs-toggle="dropdown" aria-expanded="false">
18901890 const toDateElement = document . querySelector ( `[data-mds-dtp-group="${ setting . groupId } "][data-to-date]` ) ;
18911891 const fromDateElement = document . querySelector ( `[data-mds-dtp-group="${ setting . groupId } "][data-from-date]` ) ;
18921892 if ( setting . fromDate && toDateElement != undefined ) {
1893- const instance = MdsPersianDateTimePicker . getInstance ( toDateElement ) ;
1894- if ( instance != null ) {
1893+ const toDateInstance = MdsPersianDateTimePicker . getInstance ( toDateElement ) ;
1894+ if ( toDateInstance != null ) {
18951895 if ( setting . inLine )
1896- this . updateCalendarBodyHtml ( toDateElement , instance . setting ) ;
1896+ this . updateCalendarBodyHtml ( toDateElement , toDateInstance . setting ) ;
18971897 else
1898- instance . initializeBsPopover ( instance . setting ) ;
1898+ toDateInstance . initializeBsPopover ( toDateInstance . setting ) ;
18991899 }
19001900 } else if ( setting . toDate && fromDateElement != undefined ) {
1901- const instance = MdsPersianDateTimePicker . getInstance ( fromDateElement ) ;
1902- if ( instance != null ) {
1901+ const fromDateInstance = MdsPersianDateTimePicker . getInstance ( fromDateElement ) ;
1902+ if ( fromDateInstance != null ) {
19031903 if ( setting . inLine )
1904- this . updateCalendarBodyHtml ( fromDateElement , instance . setting ) ;
1904+ this . updateCalendarBodyHtml ( fromDateElement , fromDateInstance . setting ) ;
19051905 else
1906- instance . initializeBsPopover ( instance . setting ) ;
1906+ fromDateInstance . initializeBsPopover ( fromDateInstance . setting ) ;
19071907 }
19081908 } else
19091909 this . updateCalendarBodyHtml ( element , setting ) ;
1910- } else {
1910+ } else
19111911 this . updateCalendarBodyHtml ( element , setting , true ) ;
1912- }
19131912 if ( setting . onDayClick != undefined )
19141913 setting . onDayClick ( setting ) ;
19151914 if ( ! setting . inLine ) {
19161915 instance . hide ( ) ;
19171916 } else {
19181917 // حذف روزهای انتخاب شده در تقویم این لاین
1919- element . closest ( `[data-mds-dtp-guid="${ this . guid } "]` ) !
1920- . querySelectorAll ( '[data-day]' )
1918+ let dtp = element . closest ( `[data-mds-dtp-guid="${ this . guid } "]` ) ;
1919+ if ( ! dtp )
1920+ dtp = document . querySelector ( `[data-mds-dtp-guid="${ this . guid } "]` ) ;
1921+ dtp ! . querySelectorAll ( `[data-day]:not([data-number="${ element . getAttribute ( 'data-number' ) } "])` )
19211922 . forEach ( e => e . removeAttribute ( 'data-mds-dtp-selected-day' ) ) ;
19221923 }
19231924 }
@@ -1977,7 +1978,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
19771978 private goToday = ( e : Event ) : void => {
19781979 const element = < Element > e . target ;
19791980 const instance = MdsPersianDateTimePicker . getInstance ( element ) ;
1980- if ( ! instance ) return ;
1981+ if ( ! instance )
1982+ return ;
19811983 const setting = instance . setting ;
19821984 setting . selectedDateToShow = new Date ( ) ;
19831985 MdsPersianDateTimePickerData . set ( instance . guid , instance ) ;
@@ -2089,7 +2091,8 @@ data-bs-toggle="dropdown" aria-expanded="false">
20892091 MdsPersianDateTimePickerData . getAll ( ) . forEach ( i => i . hide ( ) ) ;
20902092 const element = < Element > e . target ;
20912093 const instance = MdsPersianDateTimePicker . getInstance ( element ) ;
2092- if ( instance == null || instance . setting . disabled ) return ;
2094+ if ( ! instance || instance . setting . disabled )
2095+ return ;
20932096 instance . show ( ) ;
20942097 }
20952098 private hidePopoverEvent = ( e : Event ) : void => {
0 commit comments