igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
141 lines (131 loc) • 6.82 kB
HTML
<ng-template let-result #defaultHeader>
<span>{{ getFormattedDate().weekday }}, </span>
<span>{{ getFormattedDate().monthday }}</span>
</ng-template>
<ng-template let-result #defaultMonth let-obj>
<span *ngIf="monthsViewNumber < 2 || obj.index < 1" class="igx-calendar__aria-off-screen" aria-live="polite">
{{ monthsViewNumber > 1 ? (resourceStrings.igx_calendar_first_picker_of.replace('{0}', monthsViewNumber.toString()) + ' ' + (getViewDate(obj.index) | date: 'LLLL yyyy')) : resourceStrings.igx_calendar_selected_month_is + (getViewDate(obj.index) | date: 'LLLL yyyy')}}
</span>
<span
tabindex="0"
role="button"
[attr.aria-label]="(getViewDate(obj.index) | date: 'LLLL') + ' ' + resourceStrings.igx_calendar_select_month"
#monthsBtn
(keydown)="onActiveViewYearKB(getViewDate(obj.index), $event, obj.index)"
(click)="onActiveViewYear(getViewDate(obj.index), obj.index)"
class="igx-calendar-picker__date">
{{ formattedMonth(getViewDate(obj.index)) }}
</span>
<span
tabindex="0"
role="button"
[attr.aria-label]="(getViewDate(obj.index) | date: 'yyyy') + ' ' + resourceStrings.igx_calendar_select_year"
#yearsBtn
(keydown)="onActiveViewDecadeKB($event, getViewDate(obj.index), obj.index)"
(click)="onActiveViewDecade(getViewDate(obj.index), obj.index)"
class="igx-calendar-picker__date">
{{ formattedYear(getViewDate(obj.index)) }}
</span>
</ng-template>
<header
aria-labelledby="igx-aria-calendar-title-month igx-aria-calendar-title-year"
class="igx-calendar__header"
*ngIf="selection === 'single' && hasHeader">
<h5 id="igx-aria-calendar-title-year" class="igx-calendar__header-year">
{{ formattedYear(headerDate) }}
</h5>
<h2 id="igx-aria-calendar-title-month" class="igx-calendar__header-date">
<ng-container *ngTemplateOutlet="headerTemplate ? headerTemplate : defaultHeader; context: headerContext">
</ng-container>
</h2>
</header>
<div *ngIf="isDefaultView" class="igx-calendar__body" [@animateView]="activeView" (@animateView.done)="viewRendered($event)" (swiperight)="previousMonth()"
(swipeleft)="nextMonth()" (pointerdown)="suppressBlur()">
<section class="igx-calendar-picker">
<span tabindex="0" class="igx-calendar__aria-off-screen">
<ng-container *ngIf="selection === 'multi'">
{{ monthsViewNumber && monthsViewNumber > 1 ? resourceStrings.igx_calendar_multi_selection.replace('{0}', monthsViewNumber.toString()) : resourceStrings.igx_calendar_singular_multi_selection}}
</ng-container>
<ng-container *ngIf="selection === 'range'">
{{ monthsViewNumber && monthsViewNumber > 1 ? resourceStrings.igx_calendar_range_selection.replace('{0}', monthsViewNumber.toString()) : resourceStrings.igx_calendar_singular_range_selection}}
</ng-container>
<ng-container *ngIf="selection === 'single'">
{{ monthsViewNumber && monthsViewNumber > 1 ? resourceStrings.igx_calendar_single_selection.replace('{0}', monthsViewNumber.toString()) : resourceStrings.igx_calendar_singular_single_selection}}
</ng-container>
</span>
<div
tabindex="0"
class="igx-calendar-picker__prev"
role="button"
[attr.aria-label]="resourceStrings.igx_calendar_previous_month + ', ' + (getPrevMonth(viewDate) | date: 'LLLL')"
data-action="prev"
#prevMonthBtn
igxCalendarScrollMonth
[startScroll]="startPrevMonthScroll"
[stopScroll]="stopMonthScroll"
[ngStyle]="{ 'min-width.%': 100/(monthsViewNumber*7)}">
<igx-icon aria-hidden="true">keyboard_arrow_left</igx-icon>
</div>
<div class="igx-calendar-picker__dates"
*ngFor="let view of monthsViewNumber | IgxMonthViewSlots; index as i;"
[style.width.%]="100/monthsViewNumber"
[attr.data-month]="i | IgxGetViewDate:viewDate:false">
<ng-container *ngTemplateOutlet="subheaderTemplate ? subheaderTemplate : defaultMonth; context: getContext(i)">
</ng-container>
</div>
<div
tabindex="0"
class="igx-calendar-picker__next"
role="button"
[attr.aria-label]="resourceStrings.igx_calendar_next_month + ', ' + (getNextMonth(viewDate, monthsViewNumber) | date: 'LLLL')"
data-action="next"
#nextMonthBtn
igxCalendarScrollMonth
[startScroll]="startNextMonthScroll"
[stopScroll]="stopMonthScroll"
[ngStyle]="{'min-width.%': 100/(monthsViewNumber*7)}">
<igx-icon aria-hidden="true">keyboard_arrow_right</igx-icon>
</div>
</section>
<section style="display: flex"
[@animateChange]="animationAction"
(@animateChange.done)="animationDone($event)">
<igx-days-view role="grid" *ngFor="let view of monthsViewNumber | IgxMonthViewSlots; index as i;" [changeDaysView]="true" #days
[selection]="selection"
[locale]="locale"
[value]="value"
[(activeDate)]="activeDate"
[viewDate]="i | IgxGetViewDate:viewDate"
[weekStart]="weekStart"
[formatOptions]="formatOptions"
[formatViews]="formatViews"
[disabledDates]="disabledDates"
[specialDates]="specialDates"
[hideOutsideDays]="hideOutsideDays"
[showWeekNumbers]="showWeekNumbers"
(viewChanging)="viewChanging($event)"
(dateSelection)="childClicked($event)"
(monthsViewBlur)="resetActiveDate()">
</igx-days-view>
</section>
</div>
<igx-months-view *ngIf="isYearView"
[@animateView]="activeView"
#months
(@animateView.done)="viewRendered($event)"
[date]="viewDate"
[locale]="locale"
[formatView]="formatViews.month"
[monthFormat]="formatOptions.month"
(selected)="changeMonth($event)">
</igx-months-view>
<igx-years-view *ngIf="isDecadeView"
[@animateView]="activeView"
#decade
(@animateView.done)="viewRendered($event)"
[date]="viewDate"
[locale]="locale"
[formatView]="formatViews.year"
[yearFormat]="formatOptions.year"
(selected)="changeYear($event)">
</igx-years-view>