@odx/angular 2.11.2 → 2.11.4

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/calendar/index.d.ts +5 -1
  3. package/components/calendar/lib/calendar.component.d.ts +11 -11
  4. package/components/calendar/lib/calendar.config.d.ts +42 -0
  5. package/components/calendar/lib/{services/calendar.service.d.ts → calendar.service.d.ts} +4 -14
  6. package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +17 -27
  7. package/components/calendar/lib/components/calendar-month/calendar-month.component.d.ts +11 -12
  8. package/components/calendar/lib/components/calendar-year/calendar-year.component.d.ts +10 -10
  9. package/components/calendar/lib/components/calendar-years/calendar-years.component.d.ts +9 -9
  10. package/components/calendar/lib/directives/calendar-cell.directive.d.ts +20 -13
  11. package/components/calendar/lib/directives/calendar-view.directive.d.ts +23 -12
  12. package/components/calendar/lib/{enums/calendar-view.enum.d.ts → models/calendar-view.d.ts} +1 -1
  13. package/components/calendar/lib/models/index.d.ts +1 -0
  14. package/components/calendar/lib/pipes/date-label.pipe.d.ts +7 -0
  15. package/components/calendar/lib/services/calendar-month.service.d.ts +6 -8
  16. package/components/calendar/lib/services/calendar-year.service.d.ts +4 -6
  17. package/components/calendar/lib/services/calendar-years.service.d.ts +3 -4
  18. package/components/calendar/lib/services/index.d.ts +0 -1
  19. package/components/calendar/lib/utils/check-identical-date.d.ts +2 -2
  20. package/components/calendar/lib/utils/get-A11y-label.d.ts +2 -2
  21. package/components/calendar/lib/utils/index.d.ts +1 -0
  22. package/components/calendar/lib/utils/is-date-disabled.d.ts +2 -0
  23. package/components/calendar/lib/utils/validate-max-date.d.ts +2 -2
  24. package/components/calendar/lib/utils/validate-min-date.d.ts +2 -2
  25. package/components/calendar/lib/utils/validate-next-date-set.d.ts +2 -2
  26. package/components/calendar/lib/utils/validate-previous-date-set.d.ts +2 -2
  27. package/components/datepicker/lib/datepicker.component.d.ts +3 -1
  28. package/esm2020/components/calendar/index.mjs +6 -2
  29. package/esm2020/components/calendar/lib/calendar.component.mjs +12 -19
  30. package/esm2020/components/calendar/lib/calendar.config.mjs +8 -1
  31. package/esm2020/components/calendar/lib/calendar.service.mjs +36 -0
  32. package/esm2020/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +33 -27
  33. package/esm2020/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +6 -6
  34. package/esm2020/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +7 -7
  35. package/esm2020/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +9 -8
  36. package/esm2020/components/calendar/lib/directives/calendar-cell.directive.mjs +8 -11
  37. package/esm2020/components/calendar/lib/directives/calendar-view.directive.mjs +24 -14
  38. package/esm2020/components/calendar/lib/models/calendar-view.mjs +7 -0
  39. package/esm2020/components/calendar/lib/models/index.mjs +2 -1
  40. package/esm2020/components/calendar/lib/pipes/date-label.pipe.mjs +4 -4
  41. package/esm2020/components/calendar/lib/services/calendar-month.service.mjs +2 -2
  42. package/esm2020/components/calendar/lib/services/calendar-year.service.mjs +7 -5
  43. package/esm2020/components/calendar/lib/services/calendar-years.service.mjs +12 -9
  44. package/esm2020/components/calendar/lib/services/index.mjs +1 -2
  45. package/esm2020/components/calendar/lib/utils/check-identical-date.mjs +7 -7
  46. package/esm2020/components/calendar/lib/utils/get-A11y-label.mjs +7 -7
  47. package/esm2020/components/calendar/lib/utils/index.mjs +2 -1
  48. package/esm2020/components/calendar/lib/utils/is-date-disabled.mjs +10 -0
  49. package/esm2020/components/calendar/lib/utils/validate-max-date.mjs +7 -7
  50. package/esm2020/components/calendar/lib/utils/validate-min-date.mjs +7 -7
  51. package/esm2020/components/calendar/lib/utils/validate-next-date-set.mjs +7 -8
  52. package/esm2020/components/calendar/lib/utils/validate-previous-date-set.mjs +7 -8
  53. package/esm2020/components/datepicker/lib/datepicker.component.mjs +7 -4
  54. package/fesm2015/odx-angular-components-calendar.mjs +254 -270
  55. package/fesm2015/odx-angular-components-calendar.mjs.map +1 -1
  56. package/fesm2015/odx-angular-components-datepicker.mjs +5 -2
  57. package/fesm2015/odx-angular-components-datepicker.mjs.map +1 -1
  58. package/fesm2020/odx-angular-components-calendar.mjs +254 -269
  59. package/fesm2020/odx-angular-components-calendar.mjs.map +1 -1
  60. package/fesm2020/odx-angular-components-datepicker.mjs +5 -2
  61. package/fesm2020/odx-angular-components-datepicker.mjs.map +1 -1
  62. package/package.json +1 -1
  63. package/components/calendar/lib/enums/index.d.ts +0 -1
  64. package/esm2020/components/calendar/lib/enums/calendar-view.enum.mjs +0 -7
  65. package/esm2020/components/calendar/lib/enums/index.mjs +0 -2
  66. package/esm2020/components/calendar/lib/services/calendar.service.mjs +0 -73
@@ -1,73 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { isPresent, Pure } from '@odx/angular/utils';
4
- import { startOfDay } from 'date-fns';
5
- import { BehaviorSubject, shareReplay, tap } from 'rxjs';
6
- import { CalendarViewEnum } from '../enums';
7
- import { parseDate, validateMaxDate, validateMinDate, validateNextDateSet, validatePreviousDateSet } from '../utils';
8
- import * as i0 from "@angular/core";
9
- export class CalendarService {
10
- constructor() {
11
- this.calendarView$$ = new BehaviorSubject(CalendarViewEnum.Month);
12
- this.activeDate$$ = new BehaviorSubject(startOfDay(new Date()));
13
- this.selectedDate$$ = new BehaviorSubject(null);
14
- this.minDate = null;
15
- this.maxDate = null;
16
- this.filterFn = null;
17
- this.calendarView$ = this.calendarView$$.pipe(shareReplay({ refCount: true }));
18
- this.activeDate$ = this.activeDate$$.pipe(shareReplay({ refCount: true }));
19
- this.selectedDate$ = this.selectedDate$$.pipe(tap((date) => isPresent(date) && this.setActiveDate(date)), shareReplay({ refCount: true }));
20
- }
21
- setActiveDate(value) {
22
- if (isPresent(value)) {
23
- this.activeDate$$.next(parseDate(value));
24
- }
25
- }
26
- selectDate(value) {
27
- if (isPresent(value)) {
28
- this.selectedDate$$.next(startOfDay(parseDate(value)));
29
- }
30
- else {
31
- this.selectedDate$$.next(null);
32
- }
33
- }
34
- get activeDate() {
35
- return this.activeDate$$.getValue();
36
- }
37
- get selectedDate() {
38
- return this.selectedDate$$.getValue();
39
- }
40
- changeView(view) {
41
- this.calendarView$$.next(view);
42
- }
43
- get calendarCurrentView() {
44
- return this.calendarView$$.getValue();
45
- }
46
- isDateDisabled(date) {
47
- const minDate = this.minDate && validateMinDate(this.minDate, date, this.calendarCurrentView);
48
- const maxDate = this.maxDate && validateMaxDate(this.maxDate, date, this.calendarCurrentView);
49
- let isDateFiltered = false;
50
- if (this.calendarCurrentView === CalendarViewEnum.Month) {
51
- isDateFiltered = this.filterFn?.(date) ?? false;
52
- }
53
- return minDate || maxDate || isDateFiltered;
54
- }
55
- isPreviousDateSetDisabled() {
56
- return this.minDate ? validatePreviousDateSet(this.minDate, this.activeDate, this.calendarCurrentView) : false;
57
- }
58
- isNextDateSetDisabled() {
59
- return this.maxDate ? validateNextDateSet(this.maxDate, this.activeDate, this.calendarCurrentView) : false;
60
- }
61
- }
62
- CalendarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
63
- CalendarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarService });
64
- __decorate([
65
- Pure,
66
- __metadata("design:type", Function),
67
- __metadata("design:paramtypes", [Date]),
68
- __metadata("design:returntype", Boolean)
69
- ], CalendarService.prototype, "isDateDisabled", null);
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarService, decorators: [{
71
- type: Injectable
72
- }], propDecorators: { isDateDisabled: [] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL2NhbGVuZGFyL3NyYy9saWIvc2VydmljZXMvY2FsZW5kYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR3JILE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRW1CLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQW1CLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9FLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQU8sVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLENBQUM7UUFFbEUsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFDNUIsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFDNUIsYUFBUSxHQUF1QixJQUFJLENBQUM7UUFFM0Isa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FB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ZTtrQkFEM0IsVUFBVTs4QkFpREYsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUHJlc2VudCwgUHVyZSB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYWxlbmRhclZpZXdFbnVtIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlciwgRGF0ZVR5cGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgcGFyc2VEYXRlLCB2YWxpZGF0ZU1heERhdGUsIHZhbGlkYXRlTWluRGF0ZSwgdmFsaWRhdGVOZXh0RGF0ZVNldCwgdmFsaWRhdGVQcmV2aW91c0RhdGVTZXQgfSBmcm9tICcuLi91dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYWxlbmRhclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyVmlldyQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYWxlbmRhclZpZXdFbnVtPihDYWxlbmRhclZpZXdFbnVtLk1vbnRoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVEYXRlJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KHN0YXJ0T2ZEYXkobmV3IERhdGUoKSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZSQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGZpbHRlckZuPzogRGF0ZUZpbHRlciB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYWxlbmRhclZpZXckID0gdGhpcy5jYWxlbmRhclZpZXckJC5waXBlKHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVEYXRlJCA9IHRoaXMuYWN0aXZlRGF0ZSQkLnBpcGUoc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERhdGUkID0gdGhpcy5zZWxlY3RlZERhdGUkJC5waXBlKFxuICAgIHRhcCgoZGF0ZSkgPT4gaXNQcmVzZW50KGRhdGUpICYmIHRoaXMuc2V0QWN0aXZlRGF0ZShkYXRlKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwdWJsaWMgc2V0QWN0aXZlRGF0ZSh2YWx1ZTogRGF0ZVR5cGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGlzUHJlc2VudCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSQkLm5leHQocGFyc2VEYXRlKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdERhdGUodmFsdWU6IERhdGVUeXBlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSQkLm5leHQoc3RhcnRPZkRheShwYXJzZURhdGUodmFsdWUpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlJCQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZSQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlJCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VWaWV3KHZpZXc6IENhbGVuZGFyVmlld0VudW0pOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyVmlldyQkLm5leHQodmlldyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbGVuZGFyQ3VycmVudFZpZXcoKTogQ2FsZW5kYXJWaWV3RW51bSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJWaWV3JCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBQdXJlXG4gIHB1YmxpYyBpc0RhdGVEaXNhYmxlZChkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSAmJiB2YWxpZGF0ZU1pbkRhdGUodGhpcy5taW5EYXRlLCBkYXRlLCB0aGlzLmNhbGVuZGFyQ3VycmVudFZpZXcpO1xuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUgJiYgdmFsaWRhdGVNYXhEYXRlKHRoaXMubWF4RGF0ZSwgZGF0ZSwgdGhpcy5jYWxlbmRhckN1cnJlbnRWaWV3KTtcbiAgICBsZXQgaXNEYXRlRmlsdGVyZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmNhbGVuZGFyQ3VycmVudFZpZXcgPT09IENhbGVuZGFyVmlld0VudW0uTW9udGgpIHtcbiAgICAgIGlzRGF0ZUZpbHRlcmVkID0gdGhpcy5maWx0ZXJGbj8uKGRhdGUpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBtaW5EYXRlIHx8IG1heERhdGUgfHwgaXNEYXRlRmlsdGVyZWQ7XG4gIH1cblxuICBwdWJsaWMgaXNQcmV2aW91c0RhdGVTZXREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5taW5EYXRlID8gdmFsaWRhdGVQcmV2aW91c0RhdGVTZXQodGhpcy5taW5EYXRlLCB0aGlzLmFjdGl2ZURhdGUsIHRoaXMuY2FsZW5kYXJDdXJyZW50VmlldykgOiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc05leHREYXRlU2V0RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWF4RGF0ZSA/IHZhbGlkYXRlTmV4dERhdGVTZXQodGhpcy5tYXhEYXRlLCB0aGlzLmFjdGl2ZURhdGUsIHRoaXMuY2FsZW5kYXJDdXJyZW50VmlldykgOiBmYWxzZTtcbiAgfVxufVxuIl19