@@ -211,7 +211,7 @@ export class Datetime implements ComponentInterface {
211211  /** 
212212   * If `true`, the datetime will show the last days of the previous month and the first days of the next month on a table of 42 elements. 
213213   */ 
214-   @Prop ( )  showDaysOutsideCurrentMonth ?:boolean  =  false ; 
214+   @Prop ( )  showDaysOutsideCurrentMonth ?:  boolean  =  false ; 
215215
216216  @Watch ( 'disabled' ) 
217217  protected  disabledChanged ( )  { 
@@ -2232,187 +2232,189 @@ export class Datetime implements ComponentInterface {
22322232        } } 
22332233      > 
22342234        < div  class = "calendar-month-grid" > 
2235-           { getDaysOfMonth ( month ,  year ,  this . firstDayOfWeek  %  7 ,  this . showDaysOutsideCurrentMonth ) . map ( ( dateObject ,  index )  =>  { 
2236-             const  {  day,  dayOfWeek,  hiddenDay }  =  dateObject ; 
2237-             const  {  el,  highlightedDates,  isDateEnabled,  multiple,  showDaysOutsideCurrentMonth }  =  this ; 
2238-             let  _month  =  month ; 
2239-             let  _year  =  year ; 
2240-             if ( showDaysOutsideCurrentMonth ) { 
2241-               if ( hiddenDay  &&  day  !==  null  &&  day  >  20 )  { 
2242-                 // Leading with the hidden day from the previous month 
2243-                 // if its a hidden day and is higher than '20' (last week even in feb) 
2244-                 if ( month  ===  1 )  { 
2245-                   _year  =  year  -  1 ; 
2246-                   _month  =  12 ; 
2247-                 } else { 
2248-                   _month  =  month - 1 ; 
2249-                 } 
2250-               }  else  if ( hiddenDay  &&  day  !==  null  &&  day  <  15 )  { 
2251-                 // Leading with the hidden day from the next month 
2252-                 // if its a hidden day and is lower than '15' (first two weeks) 
2253-                 if ( month  ===  12 )  { 
2254-                   _year  =  year  +  1 ; 
2255-                   _month  =  1 ; 
2256-                 }  else  { 
2257-                   _month  =  month  +  1 ; 
2235+           { getDaysOfMonth ( month ,  year ,  this . firstDayOfWeek  %  7 ,  this . showDaysOutsideCurrentMonth ) . map ( 
2236+             ( dateObject ,  index )  =>  { 
2237+               const  {  day,  dayOfWeek,  hiddenDay }  =  dateObject ; 
2238+               const  {  el,  highlightedDates,  isDateEnabled,  multiple,  showDaysOutsideCurrentMonth }  =  this ; 
2239+               let  _month  =  month ; 
2240+               let  _year  =  year ; 
2241+               if  ( showDaysOutsideCurrentMonth  &&  hiddenDay  &&  day  !==  null )  { 
2242+                 if  ( day  >  20 )  { 
2243+                   // Leading with the hidden day from the previous month 
2244+                   // if its a hidden day and is higher than '20' (last week even in feb) 
2245+                   if  ( month  ===  1 )  { 
2246+                     _year  =  year  -  1 ; 
2247+                     _month  =  12 ; 
2248+                   }  else  { 
2249+                     _month  =  month  -  1 ; 
2250+                   } 
2251+                 }  else  if  ( day  <  15 )  { 
2252+                   // Leading with the hidden day from the next month 
2253+                   // if its a hidden day and is lower than '15' (first two weeks) 
2254+                   if  ( month  ===  12 )  { 
2255+                     _year  =  year  +  1 ; 
2256+                     _month  =  1 ; 
2257+                   }  else  { 
2258+                     _month  =  month  +  1 ; 
2259+                   } 
22582260                } 
22592261              } 
2260-             } 
2261- 
2262-             const  referenceParts  =  {  month : _month ,  day,  year :_year ,  hiddenDay : hiddenDay  } ; 
2263-             const  isCalendarPadding  =  day  ===  null ; 
2264-             const  { 
2265-               isActive, 
2266-               isToday, 
2267-               ariaLabel, 
2268-               ariaSelected, 
2269-               disabled : isDayDisabled , 
2270-               text, 
2271-             }  =  getCalendarDayState ( 
2272-               this . locale , 
2273-               referenceParts , 
2274-               this . activeParts , 
2275-               this . todayParts , 
2276-               this . minParts , 
2277-               this . maxParts , 
2278-               this . parsedDayValues 
2279-             ) ; 
22802262
2281-             const  dateIsoString  =  convertDataToISO ( referenceParts ) ; 
2282- 
2283-             let  isCalDayDisabled  =  isCalMonthDisabled  ||  isDayDisabled ; 
2284- 
2285-             if  ( ! isCalDayDisabled  &&  isDateEnabled  !==  undefined )  { 
2286-               try  { 
2287-                 /** 
2288-                  * The `isDateEnabled` implementation is try-catch wrapped 
2289-                  * to prevent exceptions in the user's function from 
2290-                  * interrupting the calendar rendering. 
2291-                  */ 
2292-                 isCalDayDisabled  =  ! isDateEnabled ( dateIsoString ) ; 
2293-               }  catch  ( e )  { 
2294-                 printIonError ( 
2295-                   'Exception thrown from provided `isDateEnabled` function. Please check your function and try again.' , 
2296-                   el , 
2297-                   e 
2298-                 ) ; 
2263+               const  referenceParts  =  {  month : _month ,  day,  year : _year ,  hiddenDay : hiddenDay  } ; 
2264+               const  isCalendarPadding  =  day  ===  null ; 
2265+               const  { 
2266+                 isActive, 
2267+                 isToday, 
2268+                 ariaLabel, 
2269+                 ariaSelected, 
2270+                 disabled : isDayDisabled , 
2271+                 text, 
2272+               }  =  getCalendarDayState ( 
2273+                 this . locale , 
2274+                 referenceParts , 
2275+                 this . activeParts , 
2276+                 this . todayParts , 
2277+                 this . minParts , 
2278+                 this . maxParts , 
2279+                 this . parsedDayValues 
2280+               ) ; 
2281+ 
2282+               const  dateIsoString  =  convertDataToISO ( referenceParts ) ; 
2283+ 
2284+               let  isCalDayDisabled  =  isCalMonthDisabled  ||  isDayDisabled ; 
2285+ 
2286+               if  ( ! isCalDayDisabled  &&  isDateEnabled  !==  undefined )  { 
2287+                 try  { 
2288+                   /** 
2289+                    * The `isDateEnabled` implementation is try-catch wrapped 
2290+                    * to prevent exceptions in the user's function from 
2291+                    * interrupting the calendar rendering. 
2292+                    */ 
2293+                   isCalDayDisabled  =  ! isDateEnabled ( dateIsoString ) ; 
2294+                 }  catch  ( e )  { 
2295+                   printIonError ( 
2296+                     'Exception thrown from provided `isDateEnabled` function. Please check your function and try again.' , 
2297+                     el , 
2298+                     e 
2299+                   ) ; 
2300+                 } 
22992301              } 
2300-             } 
23012302
2302-             /** 
2303-              * Some days are constrained through max & min or allowed dates 
2304-              * and also disabled because the component is readonly or disabled. 
2305-              * These need to be displayed differently. 
2306-              */ 
2307-             const  isCalDayConstrained  =  isCalDayDisabled  &&  isDatetimeDisabled ; 
2303+                /** 
2304+                 * Some days are constrained through max & min or allowed dates 
2305+                 * and also disabled because the component is readonly or disabled. 
2306+                 * These need to be displayed differently. 
2307+                 */ 
2308+                const  isCalDayConstrained  =  isCalDayDisabled  &&  isDatetimeDisabled ; 
23082309
2309-             const  isButtonDisabled  =  isCalDayDisabled  ||  isDatetimeDisabled ; 
2310+                const  isButtonDisabled  =  isCalDayDisabled  ||  isDatetimeDisabled ; 
23102311
2311-             let  dateStyle : DatetimeHighlightStyle  |  undefined  =  undefined ; 
2312+                let  dateStyle : DatetimeHighlightStyle  |  undefined  =  undefined ; 
23122313
2313-             /** 
2314-              * Custom highlight styles should not override the style for selected dates, 
2315-              * nor apply to "filler days" at the start of the grid. 
2316-              */ 
2317-             if  ( highlightedDates  !==  undefined  &&  ! isActive  &&  day  !==  null  &&  ! hiddenDay )  { 
2318-               dateStyle  =  getHighlightStyles ( highlightedDates ,  dateIsoString ,  el ) ; 
2319-             } 
2314+                /** 
2315+                 * Custom highlight styles should not override the style for selected dates, 
2316+                 * nor apply to "filler days" at the start of the grid. 
2317+                 */ 
2318+                if  ( highlightedDates  !==  undefined  &&  ! isActive  &&  day  !==  null  &&  ! hiddenDay )  { 
2319+                  dateStyle  =  getHighlightStyles ( highlightedDates ,  dateIsoString ,  el ) ; 
2320+                } 
23202321
2321-             let  dateParts  =  undefined ; 
2322+                let  dateParts  =  undefined ; 
23222323
2323-             // "Filler days" at the beginning of the grid should not get the calendar day 
2324-             // CSS parts added to them 
2325-             if  ( ! isCalendarPadding  &&  ! hiddenDay )  { 
2326-               dateParts  =  `calendar-day${ isActive  ? ' active'  : '' } ${ isToday  ? ' today'  : '' } ${  
2327-                 isCalDayDisabled  ? ' disabled'  : ''  
2328-               }  `; 
2329-             }  else  if ( hiddenDay )  { 
2330-               dateParts  =  `calendar-day${ isCalDayDisabled  ? ' disabled'  : '' }  ` ; 
2331-             } 
2324+                // "Filler days" at the beginning of the grid should not get the calendar day 
2325+                // CSS parts added to them 
2326+                if  ( ! isCalendarPadding  &&  ! hiddenDay )  { 
2327+                  dateParts  =  `calendar-day${ isActive  ? ' active'  : '' } ${ isToday  ? ' today'  : '' } ${  
2328+                    isCalDayDisabled  ? ' disabled'  : ''  
2329+                  }  `; 
2330+                }  else  if   ( hiddenDay )  { 
2331+                  dateParts  =  `calendar-day${ isCalDayDisabled  ? ' disabled'  : '' }  ` ; 
2332+                } 
23322333
2333-             return  ( 
2334-               < div  class = "calendar-day-wrapper" > 
2335-                 < button 
2336-                   // We need to use !important for the inline styles here because 
2337-                   // otherwise the CSS shadow parts will override these styles. 
2338-                   // See https://github.com/WICG/webcomponents/issues/847 
2339-                   // Both the CSS shadow parts and highlightedDates styles are 
2340-                   // provided by the developer, but highlightedDates styles should 
2341-                   // always take priority. 
2342-                   ref = { ( el )  =>  { 
2343-                     if  ( el )  { 
2344-                       el . style . setProperty ( 'color' ,  `${ dateStyle  ? dateStyle . textColor  : '' }  ` ,  'important' ) ; 
2345-                       el . style . setProperty ( 
2346-                         'background-color' , 
2347-                         `${ dateStyle  ? dateStyle . backgroundColor  : '' }  ` , 
2348-                         'important' 
2349-                       ) ; 
2350-                     } 
2351-                   } } 
2352-                   tabindex = "-1" 
2353-                   data-day = { day } 
2354-                   data-month = { _month } 
2355-                   data-year = { _year } 
2356-                   data-index = { index } 
2357-                   data-day-of-week = { dayOfWeek } 
2358-                   disabled = { isButtonDisabled } 
2359-                   class = { { 
2360-                     'calendar-day-padding' : isCalendarPadding , 
2361-                     'calendar-day' : true , 
2362-                     'calendar-day-active' : isActive , 
2363-                     'calendar-day-constrained' : isCalDayConstrained , 
2364-                     'calendar-day-today' : isToday , 
2365-                     'calendar-day-hidden-day' : hiddenDay , 
2366-                   } } 
2367-                   part = { dateParts } 
2368-                   aria-hidden = { isCalendarPadding  ? 'true'  : null } 
2369-                   aria-selected = { ariaSelected } 
2370-                   aria-label = { ariaLabel } 
2371-                   onClick = { ( )  =>  { 
2372-                     if  ( isCalendarPadding )  { 
2373-                       return ; 
2374-                     } 
2375- 
2376-                     if ( hiddenDay ) { 
2377-                       //the user selected a day outside the current month, let's not focus on this button since the month will be re-render; 
2378-                       this . el . blur ( ) ; 
2379-                     } 
2380-                     
2381-                     this . setWorkingParts ( { 
2382-                       ...this . workingParts , 
2383-                       month : _month , 
2384-                       day, 
2385-                       year : _year , 
2386-                       hiddenDay : hiddenDay , 
2387-                     } ) ; 
2388- 
2389-                     // multiple only needs date info, so we can wipe out other fields like time 
2390-                     if  ( multiple )  { 
2391-                       this . setActiveParts ( 
2392-                         { 
2393-                           month : _month , 
2394-                           day, 
2395-                           year : _year , 
2396-                           hiddenDay : hiddenDay , 
2397-                         } , 
2398-                         isActive 
2399-                       ) ; 
2400-                     }  else  { 
2401-                       this . setActiveParts ( { 
2402-                         ...activePart , 
2334+               return  ( 
2335+                 < div  class = "calendar-day-wrapper" > 
2336+                   < button 
2337+                     // We need to use !important for the inline styles here because 
2338+                     // otherwise the CSS shadow parts will override these styles. 
2339+                     // See https://github.com/WICG/webcomponents/issues/847 
2340+                     // Both the CSS shadow parts and highlightedDates styles are 
2341+                     // provided by the developer, but highlightedDates styles should 
2342+                     // always take priority. 
2343+                     ref = { ( el )  =>  { 
2344+                       if  ( el )  { 
2345+                         el . style . setProperty ( 'color' ,  `${ dateStyle  ? dateStyle . textColor  : '' }  ` ,  'important' ) ; 
2346+                         el . style . setProperty ( 
2347+                           'background-color' , 
2348+                           `${ dateStyle  ? dateStyle . backgroundColor  : '' }  ` , 
2349+                           'important' 
2350+                         ) ; 
2351+                       } 
2352+                     } } 
2353+                     tabindex = "-1" 
2354+                     data-day = { day } 
2355+                     data-month = { _month } 
2356+                     data-year = { _year } 
2357+                     data-index = { index } 
2358+                     data-day-of-week = { dayOfWeek } 
2359+                     disabled = { isButtonDisabled } 
2360+                     class = { { 
2361+                       'calendar-day-padding' : isCalendarPadding , 
2362+                       'calendar-day' : true , 
2363+                       'calendar-day-active' : isActive , 
2364+                       'calendar-day-constrained' : isCalDayConstrained , 
2365+                       'calendar-day-today' : isToday , 
2366+                       'calendar-day-hidden-day' : hiddenDay , 
2367+                     } } 
2368+                     part = { dateParts } 
2369+                     aria-hidden = { isCalendarPadding  ? 'true'  : null } 
2370+                     aria-selected = { ariaSelected } 
2371+                     aria-label = { ariaLabel } 
2372+                     onClick = { ( )  =>  { 
2373+                       if  ( isCalendarPadding )  { 
2374+                         return ; 
2375+                       } 
2376+ 
2377+                       if  ( hiddenDay )  { 
2378+                         //the user selected a day outside the current month, let's not focus on this button since the month will be re-render; 
2379+                         this . el . blur ( ) ; 
2380+                       } 
2381+ 
2382+                       this . setWorkingParts ( { 
2383+                         ...this . workingParts , 
24032384                        month : _month , 
24042385                        day, 
24052386                        year : _year , 
24062387                        hiddenDay : hiddenDay , 
24072388                      } ) ; 
2408-                     } 
2409-                   } } 
2410-                 > 
2411-                   { text } 
2412-                 </ button > 
2413-               </ div > 
2414-             ) ; 
2415-           } ) } 
2389+ 
2390+                       // multiple only needs date info, so we can wipe out other fields like time 
2391+                       if  ( multiple )  { 
2392+                         this . setActiveParts ( 
2393+                           { 
2394+                             month : _month , 
2395+                             day, 
2396+                             year : _year , 
2397+                             hiddenDay : hiddenDay , 
2398+                           } , 
2399+                           isActive 
2400+                         ) ; 
2401+                       }  else  { 
2402+                         this . setActiveParts ( { 
2403+                           ...activePart , 
2404+                           month : _month , 
2405+                           day, 
2406+                           year : _year , 
2407+                           hiddenDay : hiddenDay , 
2408+                         } ) ; 
2409+                       } 
2410+                     } } 
2411+                   > 
2412+                     { text } 
2413+                   </ button > 
2414+                 </ div > 
2415+               ) ; 
2416+             } 
2417+           ) } 
24162418        </ div > 
24172419      </ div > 
24182420    ) ; 
0 commit comments