@annalib/anna-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/annalib-anna-core.d.ts +5 -0
- package/esm2020/annalib-anna-core.mjs +5 -0
- package/esm2020/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
- package/esm2020/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
- package/esm2020/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
- package/esm2020/lib/anna-core-shared-lib/index.mjs +2 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
- package/esm2020/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
- package/esm2020/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
- package/esm2020/lib/anna-core-shared-lib/public-api.mjs +25 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
- package/esm2020/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
- package/esm2020/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
- package/esm2020/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
- package/esm2020/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
- package/esm2020/lib/anna-dropdown-lib/index.mjs +2 -0
- package/esm2020/lib/anna-dropdown-lib/public-api.mjs +6 -0
- package/esm2020/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
- package/esm2020/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
- package/esm2020/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
- package/esm2020/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
- package/esm2020/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
- package/esm2020/lib/anna-generic-table-lib/index.mjs +2 -0
- package/esm2020/lib/anna-generic-table-lib/public-api.mjs +10 -0
- package/esm2020/public-api.mjs +7 -0
- package/esm2020/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.mjs +59 -0
- package/esm2020/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +5 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.mjs +22 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.mjs +21 -0
- package/esm2020/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.mjs +15 -0
- package/esm2020/src/lib/anna-core-shared-lib/constants/shared.constant.mjs +34 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.mjs +2 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.mjs +2 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.mjs +3 -0
- package/esm2020/src/lib/anna-core-shared-lib/models/anna-tooltip.model.mjs +26 -0
- package/esm2020/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.mjs +31 -0
- package/esm2020/src/lib/anna-core-shared-lib/public-api.mjs +25 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.mjs +180 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-filter.service.mjs +537 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-generic-table.service.mjs +52 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-global-config.service.mjs +133 -0
- package/esm2020/src/lib/anna-core-shared-lib/services/anna-sort.service.mjs +185 -0
- package/esm2020/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.mjs +43 -0
- package/esm2020/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +5 -0
- package/esm2020/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.mjs +76 -0
- package/esm2020/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.mjs +360 -0
- package/esm2020/src/lib/anna-dropdown-lib/public-api.mjs +6 -0
- package/esm2020/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.mjs +86 -0
- package/esm2020/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +5 -0
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.mjs +991 -0
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.mjs +125 -0
- package/esm2020/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.mjs +357 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.mjs +189 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.mjs +2 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.mjs +178 -0
- package/esm2020/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.mjs +2 -0
- package/esm2020/src/lib/anna-generic-table-lib/public-api.mjs +10 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +474 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1887 -0
- package/fesm2015/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
- package/fesm2015/annalib-anna-core.mjs +3630 -0
- package/fesm2015/annalib-anna-core.mjs.map +1 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs +1295 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-core-shared-lib.mjs.map +1 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs +472 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map +1 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs +1886 -0
- package/fesm2020/annalib-anna-core-src-lib-anna-generic-table-lib.mjs.map +1 -0
- package/fesm2020/annalib-anna-core.mjs +3627 -0
- package/fesm2020/annalib-anna-core.mjs.map +1 -0
- package/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
- package/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
- package/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
- package/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
- package/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
- package/lib/anna-core-shared-lib/index.d.ts +1 -0
- package/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
- package/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
- package/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
- package/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
- package/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
- package/lib/anna-core-shared-lib/public-api.d.ts +18 -0
- package/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
- package/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
- package/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
- package/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
- package/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
- package/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
- package/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
- package/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
- package/lib/anna-dropdown-lib/index.d.ts +1 -0
- package/lib/anna-dropdown-lib/public-api.d.ts +3 -0
- package/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
- package/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
- package/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
- package/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -0
- package/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
- package/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
- package/lib/anna-generic-table-lib/index.d.ts +1 -0
- package/lib/anna-generic-table-lib/public-api.d.ts +6 -0
- package/package.json +61 -0
- package/public-api.d.ts +3 -0
- package/src/lib/anna-core-shared-lib/anna-core-shared-lib.module.d.ts +14 -0
- package/src/lib/anna-core-shared-lib/annalib-anna-core-src-lib-anna-core-shared-lib.d.ts +5 -0
- package/src/lib/anna-core-shared-lib/components/anna-buyer-approval-icon-template/anna-buyer-approval-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/components/anna-live-icon-template/anna-live-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/components/anna-no-data/anna-no-data.component.d.ts +11 -0
- package/src/lib/anna-core-shared-lib/components/anna-notify-icon-template/anna-notify-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/components/anna-pay-for-performance-icon-template/anna-pay-for-performance-icon-template.component.d.ts +11 -0
- package/src/lib/anna-core-shared-lib/components/anna-rejected-icon-template/anna-rejected-icon-template.component.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/constants/shared.constant.d.ts +32 -0
- package/src/lib/anna-core-shared-lib/models/anna-generic-data-type.model.d.ts +8 -0
- package/src/lib/anna-core-shared-lib/models/anna-global-dropdown-config.model.d.ts +95 -0
- package/src/lib/anna-core-shared-lib/models/anna-non-editable-gt-models.d.ts +70 -0
- package/src/lib/anna-core-shared-lib/models/anna-tooltip.model.d.ts +21 -0
- package/src/lib/anna-core-shared-lib/package.json +10 -0
- package/src/lib/anna-core-shared-lib/pipes/annaFilterSearchedText.pipe.d.ts +9 -0
- package/src/lib/anna-core-shared-lib/public-api.d.ts +18 -0
- package/src/lib/anna-core-shared-lib/services/anna-date-time-format.service.d.ts +25 -0
- package/src/lib/anna-core-shared-lib/services/anna-filter.service.d.ts +68 -0
- package/src/lib/anna-core-shared-lib/services/anna-generic-table.service.d.ts +14 -0
- package/src/lib/anna-core-shared-lib/services/anna-global-config.service.d.ts +21 -0
- package/src/lib/anna-core-shared-lib/services/anna-sort.service.d.ts +23 -0
- package/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.d.ts +11 -0
- package/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.d.ts +5 -0
- package/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.d.ts +29 -0
- package/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.d.ts +67 -0
- package/src/lib/anna-dropdown-lib/package.json +10 -0
- package/src/lib/anna-dropdown-lib/public-api.d.ts +3 -0
- package/src/lib/anna-generic-table-lib/anna-generic-table-lib.module.d.ts +21 -0
- package/src/lib/anna-generic-table-lib/annalib-anna-core-src-lib-anna-generic-table-lib.d.ts +5 -0
- package/src/lib/anna-generic-table-lib/components/anna-non-editable-generic-table/anna-non-editable-generic-table.component.d.ts +171 -0
- package/src/lib/anna-generic-table-lib/components/anna-sort/anna-sort.component.d.ts +27 -0
- package/src/lib/anna-generic-table-lib/components/anna-table-virtual-scroll-viewport/anna-table-virtual-scroll-viewport.component.d.ts +141 -0
- package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/anna-fixed-row-size-table-virtual-scroll-strategy.directive.d.ts +89 -0
- package/src/lib/anna-generic-table-lib/directives/anna-fixed-row-size-table-virtual-scroll-strategy/index.d.ts +1 -0
- package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/anna-virtual-table.directive.d.ts +45 -0
- package/src/lib/anna-generic-table-lib/directives/anna-virtual-table/index.d.ts +1 -0
- package/src/lib/anna-generic-table-lib/package.json +10 -0
- package/src/lib/anna-generic-table-lib/public-api.d.ts +6 -0
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
3
|
+
import * as i3 from '@angular/common';
|
|
4
|
+
import { DatePipe, CommonModule } from '@angular/common';
|
|
5
|
+
import * as i1 from '@ng-bootstrap/ng-bootstrap';
|
|
6
|
+
import { NgbDate, NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
7
|
+
import moment from 'moment';
|
|
8
|
+
import * as i2 from '@annalib/anna-core/src/lib/anna-core-shared-lib';
|
|
9
|
+
import { AnnaCoreSharedLibModule } from '@annalib/anna-core/src/lib/anna-core-shared-lib';
|
|
10
|
+
|
|
11
|
+
// Angular import statements
|
|
12
|
+
class AnnaWeekCalendarComponent {
|
|
13
|
+
constructor(calendar, datePickerConfig, annaDateTimeFormatService, globalConfigService) {
|
|
14
|
+
this.calendar = calendar;
|
|
15
|
+
this.datePickerConfig = datePickerConfig;
|
|
16
|
+
this.annaDateTimeFormatService = annaDateTimeFormatService;
|
|
17
|
+
this.globalConfigService = globalConfigService;
|
|
18
|
+
this.hoveredDate = null;
|
|
19
|
+
this.toDate = null;
|
|
20
|
+
this.weekNumbers = [];
|
|
21
|
+
this.dateToDisplay = "";
|
|
22
|
+
this.multiSelectDropdownOpen = false;
|
|
23
|
+
this.calendarMap = new Map();
|
|
24
|
+
this.disabledDates = [];
|
|
25
|
+
this.applyWeekCalendarChanges = new EventEmitter();
|
|
26
|
+
this.calendarToggled = new EventEmitter();
|
|
27
|
+
}
|
|
28
|
+
ngOnChanges(changes) {
|
|
29
|
+
//if some values are not sent, setting the default values
|
|
30
|
+
this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;
|
|
31
|
+
this.config = { ...this._defaultValues, ...this.config };
|
|
32
|
+
if (this.config.selectCurrentWeek) {
|
|
33
|
+
this.initializeWeekData();
|
|
34
|
+
this.fromDate && this.selectWeek(this.fromDate);
|
|
35
|
+
}
|
|
36
|
+
this.formatter = this.formattedDates();
|
|
37
|
+
if (this.selectedFromDate && this.selectedEndDate && this.config) {
|
|
38
|
+
// this.selectWeek(this.fromDate);
|
|
39
|
+
this.fromDate = NgbDate.from(this.selectedFromDate);
|
|
40
|
+
this.toDate = NgbDate.from(this.selectedEndDate);
|
|
41
|
+
this.weekNumberGenerator();
|
|
42
|
+
this.displayToUI();
|
|
43
|
+
this.setCalendarMap();
|
|
44
|
+
}
|
|
45
|
+
if (this.disabledDates.length > 0) {
|
|
46
|
+
this.disabledFunc = (date, current) => {
|
|
47
|
+
return this.checkIfDateIsDisabled(date);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getWeekNumber(week, firstDayOfWeek) {
|
|
52
|
+
const weekStartDate = moment(convertNgbDateToMoment(week[0]), "MM/DD/YYYY");
|
|
53
|
+
const weekYear = weekStartDate.year();
|
|
54
|
+
const yearStartDate = moment(`01/01/${weekYear}`, "MM/DD/YYYY");
|
|
55
|
+
const weekDay = yearStartDate.day();
|
|
56
|
+
const noOfDays = weekStartDate.diff(yearStartDate, "d") + 1;
|
|
57
|
+
function convertNgbDateToMoment(ngbDate) {
|
|
58
|
+
let converted = moment();
|
|
59
|
+
converted.month(ngbDate.month - 1);
|
|
60
|
+
converted.date(ngbDate.day);
|
|
61
|
+
converted.year(ngbDate.year);
|
|
62
|
+
return converted.format("MM/DD/YYYY");
|
|
63
|
+
}
|
|
64
|
+
function checkIfYearIsBroadcastLeapYear() {
|
|
65
|
+
let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;
|
|
66
|
+
return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);
|
|
67
|
+
}
|
|
68
|
+
const isLeapYear = checkIfYearIsBroadcastLeapYear();
|
|
69
|
+
const divider = isLeapYear ? 53 : 52;
|
|
70
|
+
const adder = isLeapYear ? 2 : 1;
|
|
71
|
+
let broadcastNumberOfDays = weekDay + noOfDays;
|
|
72
|
+
let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;
|
|
73
|
+
if (Math.floor(broadcastWeekNumber % divider) === 0) {
|
|
74
|
+
return divider;
|
|
75
|
+
}
|
|
76
|
+
return Math.floor(broadcastWeekNumber % divider);
|
|
77
|
+
}
|
|
78
|
+
ngAfterViewInit() {
|
|
79
|
+
// CHANGES@ANNALIB Changed this.
|
|
80
|
+
// this.calendar["__proto__"].getWeekNumber = this.getWeekNumber;
|
|
81
|
+
Object.setPrototypeOf(this.calendar, { getWeekNumber: this.getWeekNumber });
|
|
82
|
+
}
|
|
83
|
+
ngOnInit() {
|
|
84
|
+
// this.selectWeek(this.fromDate);
|
|
85
|
+
this.setCalendarMap();
|
|
86
|
+
}
|
|
87
|
+
initializeWeekData() {
|
|
88
|
+
this.weekObjects = [];
|
|
89
|
+
this.fromDate = this.calendar.getToday();
|
|
90
|
+
this.today = this.calendar.getToday();
|
|
91
|
+
let backDatedPeriod = JSON.parse(localStorage.getItem("userDetails") || '{}').locking_period_days;
|
|
92
|
+
if (backDatedPeriod < 0) {
|
|
93
|
+
let date = this.calendar.getPrev(this.calendar.getToday(), "d", Math.abs(backDatedPeriod));
|
|
94
|
+
this.today = NgbDate.from(date);
|
|
95
|
+
this.fromDate = NgbDate.from(date);
|
|
96
|
+
}
|
|
97
|
+
// Disable months before numberOfMonthsToEnable
|
|
98
|
+
this.datePickerConfig.markDisabled = (date) => {
|
|
99
|
+
let previousMonth = this.calendar.getPrev(this.today, "m", this.config.numberOfMonthsToEnableInPast);
|
|
100
|
+
let previousDay = this.calendar.getPrev(previousMonth, "d", 1);
|
|
101
|
+
return !NgbDate.from(previousDay).before(date);
|
|
102
|
+
};
|
|
103
|
+
this.formatter = this.formattedDates();
|
|
104
|
+
this.flag1 = false;
|
|
105
|
+
this.flag2 = false;
|
|
106
|
+
}
|
|
107
|
+
selectWeek(date) {
|
|
108
|
+
const dateObject = new Date(date.year, date.month - 1, date.day);
|
|
109
|
+
let constructDate = this.buildDate(dateObject);
|
|
110
|
+
if (!this.config.selectMultipleWeeks) {
|
|
111
|
+
//Single week selection
|
|
112
|
+
this.fromDate = this.constructStartDate(dateObject)(constructDate);
|
|
113
|
+
this.toDate = this.constructEndDate(dateObject)(constructDate);
|
|
114
|
+
this.weekNumberGenerator();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
if (date.before(this.fromDate)) {
|
|
118
|
+
this.fromDate = this.constructStartDate(dateObject)(constructDate);
|
|
119
|
+
if (this.flag1) {
|
|
120
|
+
this.toDate = this.constructEndDate(dateObject)(constructDate);
|
|
121
|
+
}
|
|
122
|
+
this.flag1 = !this.flag1;
|
|
123
|
+
}
|
|
124
|
+
else if (date.after(this.toDate)) {
|
|
125
|
+
if (this.flag2) {
|
|
126
|
+
this.fromDate = this.constructStartDate(dateObject)(constructDate);
|
|
127
|
+
//this.toDate = this.constructEndDate(dateObject)(constructDate);
|
|
128
|
+
}
|
|
129
|
+
this.flag2 = !this.flag2;
|
|
130
|
+
this.toDate = this.constructEndDate(dateObject)(constructDate);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.fromDate = this.constructStartDate(dateObject)(constructDate);
|
|
134
|
+
this.toDate = this.constructEndDate(dateObject)(constructDate);
|
|
135
|
+
}
|
|
136
|
+
if (this.disabledDates.length > 0) {
|
|
137
|
+
let momentStartDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), "MM/DD/YYYY");
|
|
138
|
+
let momentEndDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), "MM/DD/YYYY");
|
|
139
|
+
let ngbDate;
|
|
140
|
+
while (!momentStartDate.isSame(momentEndDate)) {
|
|
141
|
+
ngbDate = this.annaDateTimeFormatService.convertToNgbDate(momentStartDate, "MM/DD/YYYY");
|
|
142
|
+
if (this.checkIfDateIsDisabled(ngbDate)) {
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
momentStartDate.add(1, "d");
|
|
146
|
+
}
|
|
147
|
+
let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);
|
|
148
|
+
let constructDate = this.buildDate(newDateObject);
|
|
149
|
+
this.toDate = this.constructEndDate(newDateObject)(constructDate);
|
|
150
|
+
}
|
|
151
|
+
this.weekNumberGenerator();
|
|
152
|
+
}
|
|
153
|
+
if (!this.config.showAsDropdown) {
|
|
154
|
+
this.applyChanges();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
weekNumberGenerator() {
|
|
158
|
+
let dates = [];
|
|
159
|
+
let week = [];
|
|
160
|
+
let startDate = NgbDate.from(this.fromDate);
|
|
161
|
+
let endDate = NgbDate.from(this.toDate);
|
|
162
|
+
week.push(startDate);
|
|
163
|
+
while (endDate != null && !startDate.equals(endDate)) {
|
|
164
|
+
let date = this.calendar.getNext(startDate, "d", 1);
|
|
165
|
+
startDate = date;
|
|
166
|
+
week.push(date);
|
|
167
|
+
// Collect all days in week to calculate the week number
|
|
168
|
+
if (week.length == 7) {
|
|
169
|
+
dates.push(week);
|
|
170
|
+
week = [];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {
|
|
174
|
+
dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));
|
|
175
|
+
}
|
|
176
|
+
this.selectedDates(dates);
|
|
177
|
+
this.weekNumbers = [];
|
|
178
|
+
this.weekObjects = [];
|
|
179
|
+
if (dates.length > 0) {
|
|
180
|
+
for (let date of dates) {
|
|
181
|
+
this.weekNumbers.push(" Week " + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));
|
|
182
|
+
let dates = this.formatter(date[0], date[6]);
|
|
183
|
+
let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };
|
|
184
|
+
this.weekObjects.push(dateObjects);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
this.displayToUI();
|
|
188
|
+
}
|
|
189
|
+
selectedDates(dates) {
|
|
190
|
+
this.fromDate = dates[0][0];
|
|
191
|
+
this.toDate = dates[dates.length - 1][6];
|
|
192
|
+
}
|
|
193
|
+
formattedDates() {
|
|
194
|
+
let pipe = new DatePipe("en-US");
|
|
195
|
+
let thisObj = this;
|
|
196
|
+
return function (fromDate, toDate) {
|
|
197
|
+
let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);
|
|
198
|
+
let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);
|
|
199
|
+
thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);
|
|
200
|
+
thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);
|
|
201
|
+
thisObj.dateToDisplay =
|
|
202
|
+
pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +
|
|
203
|
+
" to " +
|
|
204
|
+
pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);
|
|
205
|
+
return thisObj;
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
displayToUI() {
|
|
209
|
+
if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {
|
|
210
|
+
// Display for only Single Week
|
|
211
|
+
this.formatter(this.fromDate, this.toDate);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Display for Multiple Weeks
|
|
215
|
+
if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {
|
|
216
|
+
let weekDisplay = [];
|
|
217
|
+
for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {
|
|
218
|
+
weekDisplay.push(this.weekNumbers.shift());
|
|
219
|
+
}
|
|
220
|
+
let remainingWeeks = this.weekNumbers.length;
|
|
221
|
+
this.weekNumbers = [];
|
|
222
|
+
this.weekNumbers.push(weekDisplay + " +" + remainingWeeks);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
constructStartDate(date) {
|
|
227
|
+
let firstDayOfWeek = this.config.firstDayOfWeek;
|
|
228
|
+
return function (constructDate) {
|
|
229
|
+
let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;
|
|
230
|
+
return constructDate(startDay);
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
constructEndDate(date) {
|
|
234
|
+
let firstDayOfWeek = this.config.firstDayOfWeek;
|
|
235
|
+
return function (constructDate) {
|
|
236
|
+
let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;
|
|
237
|
+
return constructDate(endDay);
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
buildDate(date) {
|
|
241
|
+
return function (number) {
|
|
242
|
+
let day = date.getDate() + number;
|
|
243
|
+
const dateObject = new Date(date.getFullYear(), date.getMonth(), day);
|
|
244
|
+
let ngbDateObject = {};
|
|
245
|
+
ngbDateObject.day = day;
|
|
246
|
+
if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {
|
|
247
|
+
ngbDateObject.day = dateObject.getDate();
|
|
248
|
+
}
|
|
249
|
+
ngbDateObject.month = dateObject.getMonth() + 1;
|
|
250
|
+
ngbDateObject.year = dateObject.getFullYear();
|
|
251
|
+
return NgbDate.from(ngbDateObject);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
isHovered(date) {
|
|
255
|
+
return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);
|
|
256
|
+
}
|
|
257
|
+
isInside(date) {
|
|
258
|
+
return this.toDate && date.after(this.fromDate) && date.before(this.toDate);
|
|
259
|
+
}
|
|
260
|
+
isRange(date) {
|
|
261
|
+
return (date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date));
|
|
262
|
+
}
|
|
263
|
+
previousWeek() {
|
|
264
|
+
if (this.fromDate) {
|
|
265
|
+
this.toDate = this.calendar.getPrev(this.fromDate, "d", 1);
|
|
266
|
+
this.fromDate = this.calendar.getPrev(this.fromDate, "d", this.calendar.getDaysPerWeek());
|
|
267
|
+
}
|
|
268
|
+
this.weekNumberGenerator();
|
|
269
|
+
this.applyChanges();
|
|
270
|
+
}
|
|
271
|
+
nextWeek() {
|
|
272
|
+
if (this.fromDate) {
|
|
273
|
+
this.fromDate = this.calendar.getNext(this.fromDate, "d", this.calendar.getDaysPerWeek());
|
|
274
|
+
this.toDate = this.calendar.getNext(this.fromDate, "d", this.calendar.getDaysPerWeek() - 1);
|
|
275
|
+
}
|
|
276
|
+
this.weekNumberGenerator();
|
|
277
|
+
this.applyChanges();
|
|
278
|
+
}
|
|
279
|
+
setCalendarMap() {
|
|
280
|
+
let dateObj = { fromDate: this.fromDate, toDate: this.toDate };
|
|
281
|
+
this.calendarMap.set("oldDates", dateObj);
|
|
282
|
+
}
|
|
283
|
+
applyChanges() {
|
|
284
|
+
this.multiSelectDropdownOpen = false;
|
|
285
|
+
if (!this.config.emitMultipleWeekObjects) {
|
|
286
|
+
let dates = {};
|
|
287
|
+
let formattedDates = this.formatter(this.fromDate, this.toDate);
|
|
288
|
+
dates.startDate = formattedDates.formattedStartDate;
|
|
289
|
+
dates.endDate = formattedDates.formattedEndDate;
|
|
290
|
+
this.applyWeekCalendarChanges.emit(dates);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
this.applyWeekCalendarChanges.emit(this.weekObjects);
|
|
294
|
+
}
|
|
295
|
+
this.setCalendarMap();
|
|
296
|
+
}
|
|
297
|
+
isFocused(value) {
|
|
298
|
+
this.calendarToggled.emit(value);
|
|
299
|
+
}
|
|
300
|
+
isDropdownOpenedForCalendar(datepicker) {
|
|
301
|
+
this.datepicker = datepicker;
|
|
302
|
+
if (this.datepicker.isOpen()) {
|
|
303
|
+
this.revertDates();
|
|
304
|
+
this.datepicker.close();
|
|
305
|
+
this.multiSelectDropdownOpen = false;
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
this.datepicker.open();
|
|
309
|
+
this.multiSelectDropdownOpen = true;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
revertDates() {
|
|
313
|
+
this.multiSelectDropdownOpen = false;
|
|
314
|
+
if (this.calendarMap.get("oldDates")) {
|
|
315
|
+
let dateObj = this.calendarMap.get("oldDates");
|
|
316
|
+
this.fromDate = dateObj.fromDate;
|
|
317
|
+
this.toDate = dateObj.toDate;
|
|
318
|
+
this.weekNumberGenerator();
|
|
319
|
+
this.displayToUI();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
checkIfDateIsDisabled(date) {
|
|
323
|
+
const validatorFunc = (ngbDate) => ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;
|
|
324
|
+
return this.disabledDates.some(validatorFunc);
|
|
325
|
+
}
|
|
326
|
+
closeDatepicker(datepickerRef) {
|
|
327
|
+
datepickerRef.close();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
AnnaWeekCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaWeekCalendarComponent, deps: [{ token: i1.NgbCalendar }, { token: i1.NgbDatepickerConfig }, { token: i2.AnnaDateTimeFormatService }, { token: i2.AnnaGlobalConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
331
|
+
AnnaWeekCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: AnnaWeekCalendarComponent, selector: "anna-core-week-calendar-filter-lib", inputs: { selectedFromDate: ["from-date", "selectedFromDate"], selectedEndDate: ["to-date", "selectedEndDate"], disabledDates: ["disabled-dates", "disabledDates"], maxDate: "maxDate", minDate: "minDate", config: ["week-calendar-config", "config"] }, outputs: { applyWeekCalendarChanges: "apply", calendarToggled: "toggle-calendar" }, usesOnChanges: true, ngImport: i0, template: "<form class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> {{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n", styles: [":host::ng-deep .right{width:unset!important;background-color:#fff!important}:host::ng-deep .ngb-dp-day,:host::ng-deep .ngb-dp-weekday{width:3rem!important;font-style:unset!important;color:#8bac2a;outline:none}:host::ng-deep .ngb-dp-day:first-child{border:1px solid black}:host::ng-deep .ngb-dp-day.disabled{color:#d4d4d4;cursor:not-allowed}:host::ng-deep .ngb-dp-showweek:before{content:\"Weeks\";margin-right:5px}:host::ng-deep .ngb-dp-week-number{font-style:unset!important;width:4rem!important;margin-right:5px;font-weight:700;color:#000!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-week-number:before{font-style:unset!important;content:\"Week \"}:host::ng-deep .ngb-dp-weekday.ngb-dp-showweek{margin-right:5px;width:4rem!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .dropdown-menu{box-shadow:none}:host::ng-deep .dropdown-menu.show{top:15px!important}:host::ng-deep .bg-light{background-color:#fff!important}:host::ng-deep .ngb-dp-weekdays{border-top:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-arrow-btn:focus{box-shadow:none}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:1.75rem;font-weight:700;color:#222b45;width:3rem!important}.custom-day.focused{background-color:#fff}.custom-day.faded{background-color:#0275d880!important}.custom-day.faded:focus{outline:none!important}.custom-day:hover{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day:focus{outline:none!important}.custom-day.range{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day.range:focus{outline:none!important}.custom-day.disabled{color:#d3d3d3}.input-group>.single-week,.input-group .multiple-weeks{display:inline-flex!important}.input-group>.single-week>.form-control,.input-group .multiple-weeks>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.input-group>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.form-control[readonly]{background-color:#fff!important}.next-round-btn{transform:rotate(180deg);margin-left:.125rem;line-height:1.3;border-radius:50%;cursor:pointer}.round-btn{line-height:1.3;border-radius:50%;cursor:pointer;margin-left:.25rem}:host::ng-deep select.custom-select{background:none;-webkit-appearance:auto;appearance:auto}.left,.right{width:1.875rem!important;height:1.875rem;background:#d8d8d8!important;border-radius:50%}.left{margin-right:.3125rem}.right{margin-left:.3125rem}:host::ng-deep .right .ngb-dp-navigation-chevron,:host::ng-deep .ngb-dp-navigation-chevron{color:#268bff}:host::ng-deep .ngb-dp-arrow-btn:focus{outline-width:0px}.custom-day.faded{background-color:#268bff33;color:#000;font-weight:600}.custom-day{text-align:center;padding:.185rem .25rem;color:#000;display:inline-block;line-height:1.9;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:#268bff;color:#fff;font-weight:600}:host::ng-deep div.ngb-dp-weekday{color:#8bac2a;font-family:Roboto;font-size:.8125rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:2.6;letter-spacing:normal}.mdi-menu-up,.mdi-menu-down{position:absolute;right:2.438rem;top:1px;font-size:1.375rem;cursor:pointer}.multiselect-input-arrow{position:absolute;right:.75rem;top:3px;font-size:1.25rem;cursor:pointer;pointer-events:none}button:focus{outline:none;box-shadow:none;border-color:transparent}::ng-deep .ngb-dp-header,::ng-deep .ngb-dp-week{background:white!important}\n"], components: [{ type: i1.NgbDatepicker, selector: "ngb-datepicker", inputs: ["dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekdays", "showWeekNumbers", "startDate"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["disabled", "autoClose", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekdays", "showWeekNumbers", "startDate", "container", "positionTarget"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaWeekCalendarComponent, decorators: [{
|
|
333
|
+
type: Component,
|
|
334
|
+
args: [{ selector: "anna-core-week-calendar-filter-lib", template: "<form class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> {{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n", styles: [":host::ng-deep .right{width:unset!important;background-color:#fff!important}:host::ng-deep .ngb-dp-day,:host::ng-deep .ngb-dp-weekday{width:3rem!important;font-style:unset!important;color:#8bac2a;outline:none}:host::ng-deep .ngb-dp-day:first-child{border:1px solid black}:host::ng-deep .ngb-dp-day.disabled{color:#d4d4d4;cursor:not-allowed}:host::ng-deep .ngb-dp-showweek:before{content:\"Weeks\";margin-right:5px}:host::ng-deep .ngb-dp-week-number{font-style:unset!important;width:4rem!important;margin-right:5px;font-weight:700;color:#000!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-week-number:before{font-style:unset!important;content:\"Week \"}:host::ng-deep .ngb-dp-weekday.ngb-dp-showweek{margin-right:5px;width:4rem!important;border-right:1px solid rgba(0,0,0,.125)}:host::ng-deep .dropdown-menu{box-shadow:none}:host::ng-deep .dropdown-menu.show{top:15px!important}:host::ng-deep .bg-light{background-color:#fff!important}:host::ng-deep .ngb-dp-weekdays{border-top:1px solid rgba(0,0,0,.125)}:host::ng-deep .ngb-dp-arrow-btn:focus{box-shadow:none}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:1.75rem;font-weight:700;color:#222b45;width:3rem!important}.custom-day.focused{background-color:#fff}.custom-day.faded{background-color:#0275d880!important}.custom-day.faded:focus{outline:none!important}.custom-day:hover{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day:focus{outline:none!important}.custom-day.range{background-color:#268bff1f!important;color:#4a4a4a!important}.custom-day.range:focus{outline:none!important}.custom-day.disabled{color:#d3d3d3}.input-group>.single-week,.input-group .multiple-weeks{display:inline-flex!important}.input-group>.single-week>.form-control,.input-group .multiple-weeks>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.input-group>.form-control{width:212px;border-radius:2px;border:solid 1px #b3b3b3;height:1.875rem;cursor:pointer}.form-control[readonly]{background-color:#fff!important}.next-round-btn{transform:rotate(180deg);margin-left:.125rem;line-height:1.3;border-radius:50%;cursor:pointer}.round-btn{line-height:1.3;border-radius:50%;cursor:pointer;margin-left:.25rem}:host::ng-deep select.custom-select{background:none;-webkit-appearance:auto;appearance:auto}.left,.right{width:1.875rem!important;height:1.875rem;background:#d8d8d8!important;border-radius:50%}.left{margin-right:.3125rem}.right{margin-left:.3125rem}:host::ng-deep .right .ngb-dp-navigation-chevron,:host::ng-deep .ngb-dp-navigation-chevron{color:#268bff}:host::ng-deep .ngb-dp-arrow-btn:focus{outline-width:0px}.custom-day.faded{background-color:#268bff33;color:#000;font-weight:600}.custom-day{text-align:center;padding:.185rem .25rem;color:#000;display:inline-block;line-height:1.9;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:#268bff;color:#fff;font-weight:600}:host::ng-deep div.ngb-dp-weekday{color:#8bac2a;font-family:Roboto;font-size:.8125rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:2.6;letter-spacing:normal}.mdi-menu-up,.mdi-menu-down{position:absolute;right:2.438rem;top:1px;font-size:1.375rem;cursor:pointer}.multiselect-input-arrow{position:absolute;right:.75rem;top:3px;font-size:1.25rem;cursor:pointer;pointer-events:none}button:focus{outline:none;box-shadow:none;border-color:transparent}::ng-deep .ngb-dp-header,::ng-deep .ngb-dp-week{background:white!important}\n"] }]
|
|
335
|
+
}], ctorParameters: function () { return [{ type: i1.NgbCalendar }, { type: i1.NgbDatepickerConfig }, { type: i2.AnnaDateTimeFormatService }, { type: i2.AnnaGlobalConfigService }]; }, propDecorators: { selectedFromDate: [{
|
|
336
|
+
type: Input,
|
|
337
|
+
args: ["from-date"]
|
|
338
|
+
}], selectedEndDate: [{
|
|
339
|
+
type: Input,
|
|
340
|
+
args: ["to-date"]
|
|
341
|
+
}], disabledDates: [{
|
|
342
|
+
type: Input,
|
|
343
|
+
args: ["disabled-dates"]
|
|
344
|
+
}], maxDate: [{
|
|
345
|
+
type: Input
|
|
346
|
+
}], minDate: [{
|
|
347
|
+
type: Input
|
|
348
|
+
}], config: [{
|
|
349
|
+
type: Input,
|
|
350
|
+
args: ["week-calendar-config"]
|
|
351
|
+
}], applyWeekCalendarChanges: [{
|
|
352
|
+
type: Output,
|
|
353
|
+
args: ["apply"]
|
|
354
|
+
}], calendarToggled: [{
|
|
355
|
+
type: Output,
|
|
356
|
+
args: ["toggle-calendar"]
|
|
357
|
+
}] } });
|
|
358
|
+
|
|
359
|
+
// Angular import statements
|
|
360
|
+
class AnnaCalendarFilterComponent {
|
|
361
|
+
constructor() {
|
|
362
|
+
this.selectedDate = new EventEmitter();
|
|
363
|
+
this.apply = new EventEmitter();
|
|
364
|
+
this.cancel = new EventEmitter();
|
|
365
|
+
this.disableApplyBtn = false;
|
|
366
|
+
}
|
|
367
|
+
ngOnInit() {
|
|
368
|
+
this.fromDate = this.selectedFromDate;
|
|
369
|
+
this.toDate = this.selectedToDate;
|
|
370
|
+
}
|
|
371
|
+
dateSelected(event) {
|
|
372
|
+
this.selectedDate.emit(event);
|
|
373
|
+
}
|
|
374
|
+
onDateSelection(date) {
|
|
375
|
+
if (!this.fromDate && !this.toDate) {
|
|
376
|
+
this.fromDate = date;
|
|
377
|
+
}
|
|
378
|
+
else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {
|
|
379
|
+
this.toDate = date;
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
this.toDate = null;
|
|
383
|
+
this.fromDate = date;
|
|
384
|
+
}
|
|
385
|
+
this.disableCalendarApplyBtn();
|
|
386
|
+
}
|
|
387
|
+
isHovered(date) {
|
|
388
|
+
return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);
|
|
389
|
+
}
|
|
390
|
+
isInside(date) {
|
|
391
|
+
return this.toDate && date.after(this.fromDate) && date.before(this.toDate);
|
|
392
|
+
}
|
|
393
|
+
isRange(date) {
|
|
394
|
+
return (date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date));
|
|
395
|
+
}
|
|
396
|
+
cancelSelection() {
|
|
397
|
+
this.cancel.emit();
|
|
398
|
+
}
|
|
399
|
+
applySelection() {
|
|
400
|
+
if (this.fromDate && this.toDate) {
|
|
401
|
+
let dateObj = { fromDate: this.fromDate, toDate: this.toDate };
|
|
402
|
+
this.apply.emit(dateObj);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
disableCalendarApplyBtn() {
|
|
406
|
+
this.disableApplyBtn = !(this.fromDate && this.toDate);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
AnnaCalendarFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaCalendarFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
410
|
+
AnnaCalendarFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: AnnaCalendarFilterComponent, selector: "anna-core-calendar-filter-lib", inputs: { maxDate: "maxDate", minDate: "minDate", showDate: "showDate", selectedFromDate: "selectedFromDate", selectedToDate: "selectedToDate" }, outputs: { selectedDate: "selectedDate", apply: "apply", cancel: "cancel" }, ngImport: i0, template: "<ngb-datepicker\r\n class=\"custom-datepicker\"\r\n #dp\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate\"\r\n (dateSelect)=\"onDateSelection($event)\"\r\n navigation=\"select\"\r\n>\r\n</ngb-datepicker>\r\n<div class=\"buttons\">\r\n <button class=\"btn\" (click)=\"cancelSelection()\">Cancel</button>\r\n <button class=\"btn\" (click)=\"applySelection()\" [disabled]=\"disableApplyBtn\">Apply</button>\r\n</div>\r\n\r\n<ng-template #t let-date let-focused=\"focused\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n", styles: [":host::ng-deep div.ngb-dp-arrow.right{width:2.4375rem!important;background-color:#fff!important}:host::ng-deep div.ngb-dp-weekday{color:#8bac2a;border-top:1px solid rgba(183,183,183,.6);margin-top:.5rem;font-family:Roboto;font-size:.8125rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:2.6;letter-spacing:normal}:host::ng-deep div.ngb-dp-week{background-color:#fff!important}:host::ng-deep div.ngb-dp-header{background-color:#fff!important}:host::ng-deep div.bg-primary{background-color:#d9e1e6!important;border-radius:.25rem}:host::ng-deep .ngb-dp-arrow-btn:focus{outline-width:0px}:host::ng-deep .right .ngb-dp-navigation-chevron,:host::ng-deep .ngb-dp-navigation-chevron{color:#000}:host::ng-deep .custom-select{border:1px solid rgba(183,183,183,.6);box-shadow:none}:host::ng-deep .btn:focus{box-shadow:none}div{margin:0 .3125rem}.custom-day{text-align:center;padding:.185rem .25rem;color:#000;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range{background-color:#268bff;color:#fff}.custom-day:hover{background-color:#d9e1e6;border-radius:.25rem;color:#bdbdbd}:host::ng-deep div.ngb-dp-day.disabled{cursor:not-allowed}.custom-day.faded{background-color:#268bff33;color:#000;font-weight:600}:host::ng-deep div.ngb-dp-week div.ngb-dp-day.disabled .custom-day{color:#bdbdbd;opacity:50%}.buttons{display:flex;margin:0px auto .4375rem;margin-bottom:0;justify-content:center}.buttons button.btn:disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.buttons .btn{display:inline-block;margin:8px 4px 0 8px;padding:5px 16px;text-align:center;outline:none;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.14;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.buttons .btn:last-of-type{background-color:#268bff;color:#fff}:host::ng-deep .ngb-dp-day{font-weight:700}\n"], components: [{ type: i1.NgbDatepicker, selector: "ngb-datepicker", inputs: ["dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekdays", "showWeekNumbers", "startDate"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaCalendarFilterComponent, decorators: [{
|
|
412
|
+
type: Component,
|
|
413
|
+
args: [{ selector: "anna-core-calendar-filter-lib", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngb-datepicker\r\n class=\"custom-datepicker\"\r\n #dp\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate\"\r\n (dateSelect)=\"onDateSelection($event)\"\r\n navigation=\"select\"\r\n>\r\n</ngb-datepicker>\r\n<div class=\"buttons\">\r\n <button class=\"btn\" (click)=\"cancelSelection()\">Cancel</button>\r\n <button class=\"btn\" (click)=\"applySelection()\" [disabled]=\"disableApplyBtn\">Apply</button>\r\n</div>\r\n\r\n<ng-template #t let-date let-focused=\"focused\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n", styles: [":host::ng-deep div.ngb-dp-arrow.right{width:2.4375rem!important;background-color:#fff!important}:host::ng-deep div.ngb-dp-weekday{color:#8bac2a;border-top:1px solid rgba(183,183,183,.6);margin-top:.5rem;font-family:Roboto;font-size:.8125rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:2.6;letter-spacing:normal}:host::ng-deep div.ngb-dp-week{background-color:#fff!important}:host::ng-deep div.ngb-dp-header{background-color:#fff!important}:host::ng-deep div.bg-primary{background-color:#d9e1e6!important;border-radius:.25rem}:host::ng-deep .ngb-dp-arrow-btn:focus{outline-width:0px}:host::ng-deep .right .ngb-dp-navigation-chevron,:host::ng-deep .ngb-dp-navigation-chevron{color:#000}:host::ng-deep .custom-select{border:1px solid rgba(183,183,183,.6);box-shadow:none}:host::ng-deep .btn:focus{box-shadow:none}div{margin:0 .3125rem}.custom-day{text-align:center;padding:.185rem .25rem;color:#000;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range{background-color:#268bff;color:#fff}.custom-day:hover{background-color:#d9e1e6;border-radius:.25rem;color:#bdbdbd}:host::ng-deep div.ngb-dp-day.disabled{cursor:not-allowed}.custom-day.faded{background-color:#268bff33;color:#000;font-weight:600}:host::ng-deep div.ngb-dp-week div.ngb-dp-day.disabled .custom-day{color:#bdbdbd;opacity:50%}.buttons{display:flex;margin:0px auto .4375rem;margin-bottom:0;justify-content:center}.buttons button.btn:disabled{background:#bdbdbd;opacity:.5;color:#4a4a4a}.buttons .btn{display:inline-block;margin:8px 4px 0 8px;padding:5px 16px;text-align:center;outline:none;font-family:Roboto;font-size:.875rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.14;letter-spacing:normal;border:none;color:#268bff;background-color:#e5f1ff}.buttons .btn:last-of-type{background-color:#268bff;color:#fff}:host::ng-deep .ngb-dp-day{font-weight:700}\n"] }]
|
|
414
|
+
}], ctorParameters: function () { return []; }, propDecorators: { maxDate: [{
|
|
415
|
+
type: Input
|
|
416
|
+
}], minDate: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], showDate: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}], selectedDate: [{
|
|
421
|
+
type: Output
|
|
422
|
+
}], selectedFromDate: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], selectedToDate: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], apply: [{
|
|
427
|
+
type: Output
|
|
428
|
+
}], cancel: [{
|
|
429
|
+
type: Output
|
|
430
|
+
}] } });
|
|
431
|
+
|
|
432
|
+
// Angular import statements
|
|
433
|
+
class AnnaDropdownLibModule {
|
|
434
|
+
}
|
|
435
|
+
AnnaDropdownLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDropdownLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
436
|
+
AnnaDropdownLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDropdownLibModule, declarations: [AnnaWeekCalendarComponent,
|
|
437
|
+
AnnaCalendarFilterComponent], imports: [CommonModule,
|
|
438
|
+
NgbModule,
|
|
439
|
+
AnnaCoreSharedLibModule], exports: [AnnaWeekCalendarComponent,
|
|
440
|
+
AnnaCalendarFilterComponent] });
|
|
441
|
+
AnnaDropdownLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDropdownLibModule, imports: [[
|
|
442
|
+
CommonModule,
|
|
443
|
+
NgbModule,
|
|
444
|
+
AnnaCoreSharedLibModule
|
|
445
|
+
]] });
|
|
446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AnnaDropdownLibModule, decorators: [{
|
|
447
|
+
type: NgModule,
|
|
448
|
+
args: [{
|
|
449
|
+
declarations: [
|
|
450
|
+
AnnaWeekCalendarComponent,
|
|
451
|
+
AnnaCalendarFilterComponent
|
|
452
|
+
],
|
|
453
|
+
imports: [
|
|
454
|
+
CommonModule,
|
|
455
|
+
NgbModule,
|
|
456
|
+
AnnaCoreSharedLibModule
|
|
457
|
+
],
|
|
458
|
+
exports: [
|
|
459
|
+
AnnaWeekCalendarComponent,
|
|
460
|
+
AnnaCalendarFilterComponent
|
|
461
|
+
]
|
|
462
|
+
}]
|
|
463
|
+
}] });
|
|
464
|
+
|
|
465
|
+
//Modules
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Generated bundle index. Do not edit.
|
|
469
|
+
*/
|
|
470
|
+
|
|
471
|
+
export { AnnaCalendarFilterComponent, AnnaDropdownLibModule, AnnaWeekCalendarComponent };
|
|
472
|
+
//# sourceMappingURL=annalib-anna-core-src-lib-anna-dropdown-lib.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annalib-anna-core-src-lib-anna-dropdown-lib.mjs","sources":["../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-week-calendar-filter/anna-week-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/components/anna-calendar-filter/anna-calendar-filter.component.html","../../../projects/anna-core/src/lib/anna-dropdown-lib/anna-dropdown-lib.module.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/public-api.ts","../../../projects/anna-core/src/lib/anna-dropdown-lib/annalib-anna-core-src-lib-anna-dropdown-lib.ts"],"sourcesContent":["// Angular import statements\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\n\r\n// Third party import statements\r\nimport { NgbCalendar, NgbDate, NgbDatepickerConfig, NgbDateStruct, NgbInputDatepicker } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport moment from \"moment\";\r\n\r\n// User defined import statements\r\n\r\n//sub-entries of anna lib import statement\r\nimport { WeekObject, IWeekCalendar, AnnaDateTimeFormatService, AnnaGlobalConfigService } from \"@annalib/anna-core/src/lib/anna-core-shared-lib\";\r\n\r\n\r\n@Component({\r\n selector: \"anna-core-week-calendar-filter-lib\",\r\n templateUrl: \"./anna-week-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-week-calendar-filter.component.scss\"],\r\n})\r\nexport class AnnaWeekCalendarComponent implements OnInit, OnChanges, AfterViewInit {\r\n fromDate: NgbDate | null;\r\n hoveredDate: NgbDate | null = null;\r\n toDate: NgbDate | null = null;\r\n today: NgbDate;\r\n\r\n model: NgbDateStruct;\r\n\r\n weekNumbers: string[] = [];\r\n pipe: DatePipe;\r\n dateToDisplay: string = \"\";\r\n weekObjects: WeekObject[];\r\n multiSelectDropdownOpen: boolean = false;\r\n datepicker: NgbInputDatepicker;\r\n private formatter: any;\r\n public formattedStartDate: string;\r\n public formattedEndDate: string;\r\n private calendarMap = new Map();\r\n private flag1: boolean;\r\n private flag2: boolean;\r\n @Input(\"from-date\") selectedFromDate: NgbDateStruct;\r\n @Input(\"to-date\") selectedEndDate: NgbDateStruct;\r\n @Input(\"disabled-dates\") disabledDates: NgbDate[] = [];\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n\r\n disabledFunc: any;\r\n state: any;\r\n\r\n //Setting the default values;\r\n private _defaultValues: IWeekCalendar;\r\n\r\n @Input(\"week-calendar-config\") config: IWeekCalendar;\r\n @Output(\"apply\") applyWeekCalendarChanges = new EventEmitter();\r\n @Output(\"toggle-calendar\") calendarToggled = new EventEmitter();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //if some values are not sent, setting the default values\r\n this._defaultValues = this.globalConfigService.defaultWeekCalendarConfig;\r\n this.config = { ...this._defaultValues, ...this.config };\r\n\r\n if (this.config.selectCurrentWeek) {\r\n this.initializeWeekData();\r\n this.fromDate && this.selectWeek(this.fromDate);\r\n }\r\n\r\n this.formatter = this.formattedDates();\r\n\r\n if (this.selectedFromDate && this.selectedEndDate && this.config) {\r\n // this.selectWeek(this.fromDate);\r\n this.fromDate = NgbDate.from(this.selectedFromDate);\r\n this.toDate = NgbDate.from(this.selectedEndDate);\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n this.setCalendarMap();\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n this.disabledFunc = (date: NgbDate, current: { month: number }) => {\r\n return this.checkIfDateIsDisabled(date);\r\n };\r\n }\r\n }\r\n\r\n constructor(\r\n private calendar: NgbCalendar,\r\n private datePickerConfig: NgbDatepickerConfig,\r\n private annaDateTimeFormatService: AnnaDateTimeFormatService,\r\n private globalConfigService: AnnaGlobalConfigService\r\n ) { }\r\n\r\n\r\n getWeekNumber(week: any, firstDayOfWeek: any) {\r\n const weekStartDate = moment(convertNgbDateToMoment(week[0]), \"MM/DD/YYYY\");\r\n const weekYear = weekStartDate.year();\r\n const yearStartDate = moment(`01/01/${weekYear}`, \"MM/DD/YYYY\");\r\n const weekDay = yearStartDate.day();\r\n\r\n const noOfDays = weekStartDate.diff(yearStartDate, \"d\") + 1;\r\n\r\n function convertNgbDateToMoment(ngbDate: NgbDate): string {\r\n let converted = moment();\r\n converted.month(ngbDate.month - 1);\r\n converted.date(ngbDate.day);\r\n converted.year(ngbDate.year);\r\n return converted.format(\"MM/DD/YYYY\");\r\n }\r\n\r\n function checkIfYearIsBroadcastLeapYear() {\r\n let isLeapYear = (weekYear % 4 == 0 && weekYear % 100 != 0) || weekYear % 400 == 0;\r\n return (isLeapYear && (weekDay == 0 || weekDay == 6)) || (!isLeapYear && weekDay == 0);\r\n }\r\n\r\n const isLeapYear = checkIfYearIsBroadcastLeapYear();\r\n const divider = isLeapYear ? 53 : 52;\r\n const adder = isLeapYear ? 2 : 1;\r\n\r\n let broadcastNumberOfDays = weekDay + noOfDays;\r\n let broadcastWeekNumber = broadcastNumberOfDays % 7 > 0 ? broadcastNumberOfDays / 7 + adder : broadcastNumberOfDays / 7;\r\n\r\n if (Math.floor(broadcastWeekNumber % divider) === 0) {\r\n return divider;\r\n }\r\n return Math.floor(broadcastWeekNumber % divider);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // CHANGES@ANNALIB Changed this.\r\n // this.calendar[\"__proto__\"].getWeekNumber = this.getWeekNumber;\r\n Object.setPrototypeOf(this.calendar, {getWeekNumber: this.getWeekNumber})\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.selectWeek(this.fromDate);\r\n this.setCalendarMap();\r\n }\r\n\r\n initializeWeekData() {\r\n this.weekObjects = [];\r\n\r\n this.fromDate = this.calendar.getToday();\r\n this.today = this.calendar.getToday();\r\n\r\n let backDatedPeriod = JSON.parse(localStorage.getItem(\"userDetails\") || '{}').locking_period_days;\r\n if (backDatedPeriod < 0) {\r\n let date: NgbDate = this.calendar.getPrev(this.calendar.getToday(), \"d\", Math.abs(backDatedPeriod));\r\n this.today = NgbDate.from(date);\r\n this.fromDate = NgbDate.from(date);\r\n }\r\n\r\n // Disable months before numberOfMonthsToEnable\r\n this.datePickerConfig.markDisabled = (date: NgbDateStruct) => {\r\n let previousMonth = this.calendar.getPrev(this.today, \"m\", this.config.numberOfMonthsToEnableInPast);\r\n let previousDay = this.calendar.getPrev(previousMonth, \"d\", 1);\r\n return !NgbDate.from(previousDay).before(date);\r\n };\r\n this.formatter = this.formattedDates();\r\n this.flag1 = false;\r\n this.flag2 = false;\r\n }\r\n\r\n selectWeek(date: NgbDate): void {\r\n const dateObject = new Date(date.year, date.month - 1, date.day);\r\n let constructDate = this.buildDate(dateObject);\r\n\r\n if (!this.config.selectMultipleWeeks) {\r\n //Single week selection\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n this.weekNumberGenerator();\r\n } else {\r\n if (date.before(this.fromDate)) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n if (this.flag1) {\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag1 = !this.flag1;\r\n } else if (date.after(this.toDate)) {\r\n if (this.flag2) {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n //this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n this.flag2 = !this.flag2;\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n } else {\r\n this.fromDate = this.constructStartDate(dateObject)(constructDate);\r\n this.toDate = this.constructEndDate(dateObject)(constructDate);\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n let momentStartDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.fromDate), \"MM/DD/YYYY\");\r\n let momentEndDate = moment(this.annaDateTimeFormatService.convertNgbDateToMoment(this.toDate), \"MM/DD/YYYY\");\r\n let ngbDate;\r\n while (!momentStartDate.isSame(momentEndDate)) {\r\n ngbDate = this.annaDateTimeFormatService.convertToNgbDate(momentStartDate, \"MM/DD/YYYY\");\r\n if (this.checkIfDateIsDisabled(ngbDate)) {\r\n break;\r\n }\r\n momentStartDate.add(1, \"d\");\r\n }\r\n let newDateObject = new Date(ngbDate.year, ngbDate.month - 1, ngbDate.day - 1);\r\n let constructDate = this.buildDate(newDateObject);\r\n this.toDate = this.constructEndDate(newDateObject)(constructDate);\r\n }\r\n\r\n this.weekNumberGenerator();\r\n }\r\n\r\n if (!this.config.showAsDropdown) {\r\n this.applyChanges();\r\n }\r\n }\r\n\r\n weekNumberGenerator(): void {\r\n let dates = [];\r\n let week = [];\r\n\r\n let startDate = NgbDate.from(this.fromDate);\r\n let endDate = NgbDate.from(this.toDate);\r\n\r\n week.push(startDate);\r\n while (endDate != null && !startDate.equals(endDate)) {\r\n let date = this.calendar.getNext(startDate, \"d\", 1);\r\n startDate = date;\r\n week.push(date);\r\n\r\n // Collect all days in week to calculate the week number\r\n if (week.length == 7) {\r\n dates.push(week);\r\n week = [];\r\n }\r\n }\r\n if (((this.config.maxWeeksToSelect ?? 0) > 0 && dates.length > (this.config.maxWeeksToSelect ?? 0))) {\r\n dates.splice((this.config.maxWeeksToSelect ?? 0), dates.length - (this.config.maxWeeksToSelect ?? 0));\r\n }\r\n this.selectedDates(dates);\r\n\r\n this.weekNumbers = [];\r\n this.weekObjects = [];\r\n if (dates.length > 0) {\r\n for (let date of dates) {\r\n this.weekNumbers.push(\" Week \" + this.calendar.getWeekNumber(date, this.config.firstDayOfWeek));\r\n let dates = this.formatter(date[0], date[6]);\r\n let dateObjects = { startDate: dates.formattedStartDate, endDate: dates.formattedEndDate };\r\n this.weekObjects.push(dateObjects);\r\n }\r\n }\r\n this.displayToUI();\r\n }\r\n\r\n selectedDates(dates: any) {\r\n this.fromDate = dates[0][0];\r\n this.toDate = dates[dates.length - 1][6];\r\n }\r\n\r\n formattedDates() {\r\n let pipe = new DatePipe(\"en-US\");\r\n let thisObj = this;\r\n return function (fromDate: NgbDate, toDate: NgbDate) {\r\n let fromDateObject = new Date(fromDate.year, fromDate.month - 1, fromDate.day);\r\n let toDateObject = new Date(toDate.year, toDate.month - 1, toDate.day);\r\n thisObj.formattedStartDate = pipe.transform(fromDateObject, thisObj.config.dateFormatForRequest);\r\n thisObj.formattedEndDate = pipe.transform(toDateObject, thisObj.config.dateFormatForRequest);\r\n\r\n thisObj.dateToDisplay =\r\n pipe.transform(fromDateObject, thisObj.config.dateFormatToDisplay) +\r\n \" to \" +\r\n pipe.transform(toDateObject, thisObj.config.dateFormatToDisplay);\r\n return thisObj;\r\n };\r\n }\r\n\r\n displayToUI() {\r\n if (!this.config.selectMultipleWeeks && this.fromDate && this.toDate) {\r\n // Display for only Single Week\r\n this.formatter(this.fromDate, this.toDate);\r\n } else {\r\n // Display for Multiple Weeks\r\n if (this.weekNumbers.length > (this.config.maxWeeksToShowWithRemainingCount ?? 0)) {\r\n let weekDisplay = [];\r\n for (let i = 0; i < (this.config.maxWeeksToShowWithRemainingCount ?? 0); i++) {\r\n weekDisplay.push(this.weekNumbers.shift());\r\n }\r\n let remainingWeeks = this.weekNumbers.length;\r\n this.weekNumbers = [];\r\n this.weekNumbers.push(weekDisplay + \" +\" + remainingWeeks);\r\n }\r\n }\r\n }\r\n\r\n constructStartDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let startDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) - date.getDay() : -6;\r\n return constructDate(startDay);\r\n };\r\n }\r\n\r\n constructEndDate(date: Date) {\r\n let firstDayOfWeek = this.config.firstDayOfWeek;\r\n return function (constructDate: any) {\r\n let endDay = date.getDay() != 0 ? (firstDayOfWeek ?? 0) + 6 - date.getDay() : 0;\r\n return constructDate(endDay);\r\n };\r\n }\r\n\r\n buildDate(date: Date) {\r\n return function (number: number): NgbDate | null {\r\n let day = date.getDate() + number;\r\n const dateObject = new Date(date.getFullYear(), date.getMonth(), day);\r\n\r\n let ngbDateObject = {} as NgbDate;\r\n ngbDateObject.day = day;\r\n\r\n if (ngbDateObject.day > 31 || ngbDateObject.day < 1) {\r\n ngbDateObject.day = dateObject.getDate();\r\n }\r\n\r\n ngbDateObject.month = dateObject.getMonth() + 1;\r\n ngbDateObject.year = dateObject.getFullYear();\r\n return NgbDate.from(ngbDateObject);\r\n };\r\n }\r\n\r\n isHovered(date: NgbDate): boolean | null {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\r\n }\r\n\r\n isInside(date: NgbDate): boolean | null {\r\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n }\r\n\r\n isRange(date: NgbDate): boolean | null {\r\n return (\r\n date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n previousWeek(): void {\r\n if (this.fromDate) {\r\n this.toDate = this.calendar.getPrev(this.fromDate, \"d\", 1);\r\n this.fromDate = this.calendar.getPrev(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n nextWeek(): void {\r\n if (this.fromDate) {\r\n this.fromDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek());\r\n this.toDate = this.calendar.getNext(this.fromDate, \"d\", this.calendar.getDaysPerWeek() - 1);\r\n }\r\n this.weekNumberGenerator();\r\n this.applyChanges();\r\n }\r\n\r\n setCalendarMap() {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.calendarMap.set(\"oldDates\", dateObj);\r\n }\r\n\r\n applyChanges() {\r\n this.multiSelectDropdownOpen = false;\r\n if (!this.config.emitMultipleWeekObjects) {\r\n let dates = {} as WeekObject;\r\n let formattedDates = this.formatter(this.fromDate, this.toDate);\r\n dates.startDate = formattedDates.formattedStartDate;\r\n dates.endDate = formattedDates.formattedEndDate;\r\n this.applyWeekCalendarChanges.emit(dates);\r\n } else {\r\n this.applyWeekCalendarChanges.emit(this.weekObjects);\r\n }\r\n this.setCalendarMap();\r\n }\r\n\r\n isFocused(value: any) {\r\n this.calendarToggled.emit(value);\r\n }\r\n\r\n isDropdownOpenedForCalendar(datepicker: NgbInputDatepicker) {\r\n this.datepicker = datepicker;\r\n if (this.datepicker.isOpen()) {\r\n this.revertDates();\r\n this.datepicker.close();\r\n this.multiSelectDropdownOpen = false;\r\n } else {\r\n this.datepicker.open();\r\n this.multiSelectDropdownOpen = true;\r\n }\r\n }\r\n\r\n revertDates() {\r\n this.multiSelectDropdownOpen = false;\r\n if (this.calendarMap.get(\"oldDates\")) {\r\n let dateObj = this.calendarMap.get(\"oldDates\");\r\n this.fromDate = dateObj.fromDate;\r\n this.toDate = dateObj.toDate;\r\n this.weekNumberGenerator();\r\n this.displayToUI();\r\n }\r\n }\r\n\r\n checkIfDateIsDisabled(date: any): boolean {\r\n const validatorFunc = (ngbDate: NgbDate) => ngbDate.year === date.year && ngbDate.month === date.month && ngbDate.day === date.day;\r\n return this.disabledDates.some(validatorFunc);\r\n }\r\n\r\n closeDatepicker(datepickerRef: any) {\r\n datepickerRef.close();\r\n }\r\n}\r\n","<form class=\"form-inline\" *ngIf=\"config.showAsDropdown\">\r\n <div class=\"form-group hidden\">\r\n <div class=\"input-group\">\r\n <input\r\n name=\"datepicker\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"false\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n (closed)=\"isFocused(false)\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n tabindex=\"-1\"\r\n style=\"display: none\"\r\n [footerTemplate]=\"footerTemplate\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!--Single week select-->\r\n <div *ngIf=\"!config.selectMultipleWeeks\">\r\n <span style=\"position: relative; left: 30px; font-size: 12px\"> {{ weekNumbers }} </span>\r\n <div class=\"form-group\">\r\n <div class=\"input-group\">\r\n <div class=\"single-week\">\r\n <div class=\"left\">\r\n <span class=\"material-icons next-round-btn\" (click)=\"previousWeek()\"> navigate_next </span>\r\n </div>\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [value]=\"dateToDisplay\"\r\n [readonly]=\"true\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i class=\"mdi mdi-menu-down\" *ngIf='!datepicker.isOpen()' (click)=\"datepicker.open()\"></i>\r\n <i class='mdi mdi-menu-up' *ngIf=\"datepicker.isOpen()\" (click)=\"isDropdownOpenedForCalendar(datepicker)\"></i>\r\n <div class=\"right\">\r\n <span class=\"material-icons round-btn\" (click)=\"nextWeek()\"> navigate_next </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--Multiple week select-->\r\n <div class=\"form-group\" *ngIf=\"config.selectMultipleWeeks\">\r\n <div class=\"input-group\">\r\n <div class=\"multiple-weeks\">\r\n <input\r\n #dpFromDate\r\n class=\"form-control\"\r\n placeholder=\"Select Weeks\"\r\n [ngClass]=\"[config.customClass == '' ? '' : config.customClass]\"\r\n name=\"dpFromDate\"\r\n [readonly]=\"true\"\r\n [value]=\"weekNumbers\"\r\n (click)=\"isFocused(true); isDropdownOpenedForCalendar(datepicker)\"\r\n />\r\n <i *ngIf=\"!multiSelectDropdownOpen\" class=\"mdi mdi-menu-down multiselect-input-arrow\"></i>\r\n <i *ngIf=\"multiSelectDropdownOpen\" class=\"mdi mdi-menu-up multiselect-input-arrow\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ngb-datepicker\r\n #weekPicker\r\n *ngIf=\"!config.showAsDropdown\"\r\n [displayMonths]=\"1\"\r\n [startDate]=\"fromDate!\"\r\n [firstDayOfWeek]=\"config.firstDayOfWeek\"\r\n [showWeekNumbers]=\"config.showWeekNumbers\"\r\n [dayTemplate]=\"t\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (dateSelect)=\"selectWeek($event)\"\r\n [markDisabled]=\"disabledFunc\"\r\n>\r\n</ngb-datepicker>\r\n\r\n<ng-template #footerTemplate>\r\n <hr class=\"my-0\" />\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"applyChanges(); closeDatepicker(datepicker)\"\r\n style=\"background-color: #268bff; color: #ffffff\"\r\n >\r\n Apply\r\n </button>\r\n <button\r\n class=\"btn btn-primary btn-sm m-2 float-right\"\r\n (click)=\"revertDates(); closeDatepicker(datepicker)\"\r\n style=\"background-color: rgba(38, 139, 255, 0.12); color: #268bff\"\r\n >\r\n Cancel\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #t let-date let-focused=\"focused\" let-disabled=\"disabled\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n [class.disabled]=\"disabled\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n\r\n<!--\r\n\r\n<hr>\r\n\r\n<pre>From: {{ fromDate | json }} </pre>\r\n<pre>To: {{ toDate | json }} </pre>\r\n<pre>weekNumbers: {{ weekNumbers | json }} </pre>\r\n\r\n-->\r\n","// Angular import statements\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { NgbDate } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\n@Component({\r\n selector: \"anna-core-calendar-filter-lib\",\r\n templateUrl: \"./anna-calendar-filter.component.html\",\r\n styleUrls: [\"./anna-calendar-filter.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AnnaCalendarFilterComponent implements OnInit {\r\n // @ViewChild(NgbDatepicker) datepicker: NgbDatepicker;\r\n @Input() maxDate: any;\r\n @Input() minDate: any;\r\n @Input() showDate: any;\r\n @Output() selectedDate = new EventEmitter();\r\n @Input() selectedFromDate: any;\r\n @Input() selectedToDate: any;\r\n @Output() apply = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n fromDate: any;\r\n toDate: any;\r\n hoveredDate: any;\r\n disableApplyBtn: boolean = false;\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.fromDate = this.selectedFromDate;\r\n this.toDate = this.selectedToDate;\r\n }\r\n\r\n dateSelected(event: any) {\r\n this.selectedDate.emit(event);\r\n }\r\n\r\n onDateSelection(date: NgbDate) {\r\n if (!this.fromDate && !this.toDate) {\r\n this.fromDate = date;\r\n } else if (this.fromDate && !this.toDate && (date.after(this.fromDate) || date.equals(this.fromDate))) {\r\n this.toDate = date;\r\n } else {\r\n this.toDate = null;\r\n this.fromDate = date;\r\n }\r\n this.disableCalendarApplyBtn();\r\n }\r\n\r\n isHovered(date: NgbDate) {\r\n return this.fromDate && !this.toDate && this.hoveredDate && date.after(this.fromDate) && date.before(this.hoveredDate);\r\n }\r\n\r\n isInside(date: NgbDate) {\r\n return this.toDate && date.after(this.fromDate) && date.before(this.toDate);\r\n }\r\n\r\n isRange(date: NgbDate) {\r\n return (\r\n date.equals(this.fromDate) || (this.toDate && date.equals(this.toDate)) || this.isInside(date) || this.isHovered(date)\r\n );\r\n }\r\n\r\n cancelSelection() {\r\n this.cancel.emit();\r\n }\r\n\r\n applySelection() {\r\n if (this.fromDate && this.toDate) {\r\n let dateObj = { fromDate: this.fromDate, toDate: this.toDate };\r\n this.apply.emit(dateObj);\r\n }\r\n }\r\n\r\n disableCalendarApplyBtn() {\r\n this.disableApplyBtn = !(this.fromDate && this.toDate);\r\n }\r\n}\r\n","<ngb-datepicker\r\n class=\"custom-datepicker\"\r\n #dp\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n [displayMonths]=\"1\"\r\n [dayTemplate]=\"t\"\r\n [startDate]=\"fromDate\"\r\n (dateSelect)=\"onDateSelection($event)\"\r\n navigation=\"select\"\r\n>\r\n</ngb-datepicker>\r\n<div class=\"buttons\">\r\n <button class=\"btn\" (click)=\"cancelSelection()\">Cancel</button>\r\n <button class=\"btn\" (click)=\"applySelection()\" [disabled]=\"disableApplyBtn\">Apply</button>\r\n</div>\r\n\r\n<ng-template #t let-date let-focused=\"focused\">\r\n <span\r\n class=\"custom-day\"\r\n [class.focused]=\"focused\"\r\n [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\"\r\n (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\"\r\n >\r\n {{ date.day }}\r\n </span>\r\n</ng-template>\r\n","// Angular import statements\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// Third party import statements\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n// User defined import statements\r\nimport { AnnaWeekCalendarComponent } from './components/anna-week-calendar-filter/anna-week-calendar-filter.component';\r\nimport { AnnaCalendarFilterComponent } from './components/anna-calendar-filter/anna-calendar-filter.component';\r\n\r\n//sub-entries of anna lib import statement\r\nimport { AnnaCoreSharedLibModule } from '@annalib/anna-core/src/lib/anna-core-shared-lib';\r\n\r\n@NgModule({\r\n declarations: [\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n NgbModule,\r\n AnnaCoreSharedLibModule\r\n ],\r\n exports: [\r\n AnnaWeekCalendarComponent,\r\n AnnaCalendarFilterComponent\r\n ]\r\n\r\n})\r\nexport class AnnaDropdownLibModule { }\r\n","//Modules\r\nexport * from \"./anna-dropdown-lib.module\";\r\n\r\n//Components\r\nexport * from \"./components/anna-calendar-filter/anna-calendar-filter.component\";\r\nexport * from \"./components/anna-week-calendar-filter/anna-week-calendar-filter.component\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|