@odx/angular 5.7.4 → 6.0.0
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/CHANGELOG.md +10 -0
- package/components/calendar/lib/calendar.config.d.ts +24 -93
- package/components/calendar/lib/directives/calendar-cell.directive.d.ts +0 -9
- package/components/calendar/lib/directives/calendar-view.directive.d.ts +0 -9
- package/components/calendar/lib/pipes/date-label.pipe.d.ts +7 -21
- package/components/calendar/lib/utils/get-A11y-label.d.ts +1 -2
- package/esm2022/components/calendar/lib/calendar.config.mjs +1 -12
- package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +3 -3
- package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +3 -3
- package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +3 -3
- package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +2 -2
- package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +22 -9
- package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +10 -8
- package/esm2022/internal/lib/helpers/fast-equals.mjs +3 -0
- package/esm2022/internal/lib/helpers/index.mjs +2 -1
- package/esm2022/localization/lib/localization.config.mjs +3 -5
- package/esm2022/localization/lib/localization.logger.mjs +3 -0
- package/esm2022/localization/lib/localization.service.mjs +20 -29
- package/fesm2022/odx-angular-components-calendar.mjs +39 -34
- package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
- package/fesm2022/odx-angular-internal.mjs +4 -1
- package/fesm2022/odx-angular-internal.mjs.map +1 -1
- package/fesm2022/odx-angular-localization.mjs +24 -32
- package/fesm2022/odx-angular-localization.mjs.map +1 -1
- package/internal/lib/helpers/fast-equals.d.ts +1 -0
- package/internal/lib/helpers/index.d.ts +1 -0
- package/localization/lib/localization.config.d.ts +0 -2
- package/localization/lib/localization.logger.d.ts +3 -0
- package/localization/lib/localization.service.d.ts +3 -7
- package/package.json +8 -7
|
@@ -42,7 +42,7 @@ export let CalendarCellDirective = class CalendarCellDirective {
|
|
|
42
42
|
}
|
|
43
43
|
ngOnChanges(changes) {
|
|
44
44
|
if (hasChanged(changes, ['date', 'calendarView'], false)) {
|
|
45
|
-
this.ariaLabel = this.dateLabelPipe.transform(this.date, getA11yLabel(this.calendarView
|
|
45
|
+
this.ariaLabel = this.dateLabelPipe.transform(this.date, getA11yLabel(this.calendarView));
|
|
46
46
|
this.isCurrent = checkIdenticalDate(this.date, new Date(), this.calendarView);
|
|
47
47
|
}
|
|
48
48
|
if (this.activeDate && hasChanged(changes, ['date', 'activeDate'], false)) {
|
|
@@ -169,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
169
169
|
type: Input,
|
|
170
170
|
args: ['odxCalendarCellPreviewDate']
|
|
171
171
|
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2RpcmVjdGl2ZXMvY2FsZW5kYXItY2VsbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBYSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQWtCLE1BQU0sV0FBVyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFrQnpELFdBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBQTNCO1FBQ1ksdUJBQWtCLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFakQsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7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S0FBSzt1QkFBQyw2QkFBNkI7Z0JBSTdCLGlCQUFpQjtzQkFEdkIsS0FBSzt1QkFBQyxrQ0FBa0M7Z0JBSWxDLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXNhYmxlZENvbnRyb2xsZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWZlckZuLCBFdmVudE1hbmFnZXIsIGhhc0NoYW5nZWQsIGluamVjdEVsZW1lbnQsIE5nQ2hhbmdlcyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBpc1NhbWVNb250aCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGluamVjdENhbGVuZGFyQ29uZmlnIH0gZnJvbSAnLi4vY2FsZW5kYXIuY29uZmlnJztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLCBDYWxlbmRhclZpZXcsIERhdGVSYW5nZVNlbGVjdGlvblN0YXRlLCBEYXRlUmFuZ2VTdGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBEYXRlTGFiZWxQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgY2hlY2tJZGVudGljYWxEYXRlLCBnZXRBMTF5TGFiZWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBjaGVja0NlbGxJblJhbmdlIH0gZnJvbSAnLi4vdXRpbHMvY2hlY2stY2VsbC1pbi1yYW5nZSc7XG5cbkBDU1NDb21wb25lbnQoJ2NhbGVuZGFyLWNlbGwnKVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29keENhbGVuZGFyQ2VsbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtEaXNhYmxlZENvbnRyb2xsZXIuY29ubmVjdCgpLCBEYXRlTGFiZWxQaXBlXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuaXMtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaXMtc2VsZWN0ZWRdJzogJ2lzU2VsZWN0ZWQnLFxuICAgICdbY2xhc3MuaXMtaW4tYW55LXJhbmdlXSc6ICdpc0luUmFuZ2UgfHwgaXNJblByZXZpZXdSYW5nZScsXG4gICAgJ1thdHRyLmhpZGRlbl0nOiAnaXNIaWRkZW4gfHwgbnVsbCcsXG4gICAgJ1t0YWJpbmRleF0nOiAnaXNBY3RpdmUgPyAwIDogLTEnLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdhcmlhTGFiZWwnLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdpc0Rpc2FibGVkJyxcbiAgICAnW2F0dHIudHlwZV0nOiAnXCJidXR0b25cIicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ2VsbERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkQ29udHJvbGxlciA9IERpc2FibGVkQ29udHJvbGxlci5pbmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50TWFuYWdlciA9IGluamVjdChFdmVudE1hbmFnZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyU2VydmljZSA9IGluamVjdChDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIHJlZ2lzdGVyZWRFdmVudElkID0gJyc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdENhbGVuZGFyQ29uZmlnKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRlTGFiZWxQaXBlID0gaW5qZWN0KERhdGVMYWJlbFBpcGUpO1xuICBwcm90ZWN0ZWQgaXNBY3RpdmUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGlzSGlkZGVuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhcmlhTGFiZWwgPSAnJztcblxuICBwcm90ZWN0ZWQgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaXNhYmxlZENvbnRyb2xsZXI/LmRpc2FibGVkO1xuICB9XG5cbiAgQENTU01vZGlmaWVyKClcbiAgcHJvdGVjdGVkIGlzQ3VycmVudCA9IGZhbHNlO1xuXG4gIEBDU1NNb2RpZmllcigpXG4gIHByb3RlY3RlZCBhZGphY2VudCA9IGZhbHNlO1xuXG4gIEBDU1NNb2RpZmllcigpXG4gIHByb3RlY3RlZCBpc0luUmFuZ2UgPSBmYWxzZTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBwcm90ZWN0ZWQgaXNSYW5nZVN0YXJ0ID0gZmFsc2U7XG5cbiAgQENTU01vZGlmaWVyKClcbiAgcHJvdGVjdGVkIGlzUmFuZ2VFbmQgPSBmYWxzZTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBwcm90ZWN0ZWQgaXNJblByZXZpZXdSYW5nZSA9IGZhbHNlO1xuXG4gIEBDU1NNb2RpZmllcigpXG4gIHByb3RlY3RlZCBpc1ByZXZpZXdSYW5nZVN0YXJ0ID0gZmFsc2U7XG5cbiAgQENTU01vZGlmaWVyKClcbiAgcHJvdGVjdGVkIGlzUHJldmlld1JhbmdlRW5kID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgQElucHV0KCdvZHhDYWxlbmRhckNlbGwnKVxuICBwdWJsaWMgZGF0ZSE6IERhdGU7XG5cbiAgQElucHV0KCdvZHhDYWxlbmRhckNlbGxDYWxlbmRhclZpZXcnKVxuICBwdWJsaWMgY2FsZW5kYXJWaWV3ITogQ2FsZW5kYXJWaWV3O1xuXG4gIEBJbnB1dCgnb2R4Q2FsZW5kYXJDZWxsQWN0aXZlRGF0ZScpXG4gIHB1YmxpYyBhY3RpdmVEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCdvZHhDYWxlbmRhckNlbGxTZWxlY3RlZERhdGUnKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlPzogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgnb2R4Q2FsZW5kYXJDZWxsU2VsZWN0ZWREYXRlUmFuZ2UnKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlUmFuZ2U/OiBEYXRlUmFuZ2VTdGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgnb2R4Q2FsZW5kYXJDZWxsUHJldmlld0RhdGUnKVxuICBwdWJsaWMgcHJldmlld0RhdGU/OiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxDYWxlbmRhckNlbGxEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgWydkYXRlJywgJ2NhbGVuZGFyVmlldyddLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuYXJpYUxhYmVsID0gdGhpcy5kYXRlTGFiZWxQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGUsIGdldEExMXlMYWJlbCh0aGlzLmNhbGVuZGFyVmlldywgdGhpcy5jb25maWcpKTtcbiAgICAgIHRoaXMuaXNDdXJyZW50ID0gY2hlY2tJZGVudGljYWxEYXRlKHRoaXMuZGF0ZSwgbmV3IERhdGUoKSwgdGhpcy5jYWxlbmRhclZpZXcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZURhdGUgJiYgaGFzQ2hhbmdlZChjaGFuZ2VzLCBbJ2RhdGUnLCAnYWN0aXZlRGF0ZSddLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBjaGVja0lkZW50aWNhbERhdGUodGhpcy5kYXRlLCB0aGlzLmFjdGl2ZURhdGUsIHRoaXMuY2FsZW5kYXJWaWV3KTtcbiAgICAgIGlmICh0aGlzLmNhbGVuZGFyVmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoKSB7XG4gICAgICAgIHRoaXMuYWRqYWNlbnQgPSAhaXNTYW1lTW9udGgodGhpcy5kYXRlLCB0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICB0aGlzLmlzSGlkZGVuID0gdGhpcy5hZGphY2VudCAmJiAhdGhpcy5jb25maWcuZGlzcGxheUFkamFjZW50RGF5cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgaGFzQ2hhbmdlZChjaGFuZ2VzLCBbJ2RhdGUnLCAnc2VsZWN0ZWREYXRlJ10sIGZhbHNlKSkge1xuICAgICAgdGhpcy5pc1NlbGVjdGVkID0gY2hlY2tJZGVudGljYWxEYXRlKHRoaXMuZGF0ZSwgdGhpcy5zZWxlY3RlZERhdGUsIHRoaXMuY2FsZW5kYXJWaWV3KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuc2VsZWN0aW9uTW9kZSA9PT0gQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLkRhdGVSYW5nZSAmJiB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlICYmIGhhc0NoYW5nZWQoY2hhbmdlcywgWydkYXRlJywgJ3NlbGVjdGVkRGF0ZVJhbmdlJ10sIGZhbHNlKSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmRhdGVSYW5nZS5zdGFydDtcbiAgICAgIHRoaXMuaXNTZWxlY3RlZCA9IGNoZWNrSWRlbnRpY2FsRGF0ZSh0aGlzLmRhdGUsIHN0YXJ0IHx8IG5ldyBEYXRlKCksIHRoaXMuY2FsZW5kYXJWaWV3KTtcbiAgICAgIGNvbnN0IHJhbmdlVmFsaWRhdGlvbiA9IGNoZWNrQ2VsbEluUmFuZ2UodGhpcy5kYXRlLCB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLCB0aGlzLmNhbGVuZGFyVmlldywgRGF0ZVJhbmdlU2VsZWN0aW9uU3RhdGUuRW5kU2VsZWN0ZWQpO1xuICAgICAgdGhpcy5pc1JhbmdlU3RhcnQgPSByYW5nZVZhbGlkYXRpb24uaXNSYW5nZVN0YXJ0O1xuICAgICAgdGhpcy5pc1JhbmdlRW5kID0gcmFuZ2VWYWxpZGF0aW9uLmlzUmFuZ2VFbmQ7XG4gICAgICB0aGlzLmlzSW5SYW5nZSA9IHJhbmdlVmFsaWRhdGlvbi5pc0luUmFuZ2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcuc2VsZWN0aW9uTW9kZSA9PT0gQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLkRhdGVSYW5nZSAmJlxuICAgICAgdGhpcy5wcmV2aWV3RGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSAmJlxuICAgICAgaGFzQ2hhbmdlZChjaGFuZ2VzLCBbJ2RhdGUnLCAnc2VsZWN0ZWREYXRlUmFuZ2UnLCAncHJldmlld0RhdGUnXSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHByZXZpZXdSYW5nZTogRGF0ZVJhbmdlU3RhdGUgPSB7XG4gICAgICAgIHNlbGVjdGlvblN0YXRlOiB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnNlbGVjdGlvblN0YXRlLFxuICAgICAgICBkYXRlUmFuZ2U6IHsgc3RhcnQ6IHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZGF0ZVJhbmdlLnN0YXJ0LCBlbmQ6IHRoaXMucHJldmlld0RhdGUgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCByYW5nZVZhbGlkYXRpb24gPSBjaGVja0NlbGxJblJhbmdlKHRoaXMuZGF0ZSwgcHJldmlld1JhbmdlLCB0aGlzLmNhbGVuZGFyVmlldywgRGF0ZVJhbmdlU2VsZWN0aW9uU3RhdGUuU3RhcnRTZWxlY3RlZCk7XG4gICAgICB0aGlzLmlzUHJldmlld1JhbmdlU3RhcnQgPSByYW5nZVZhbGlkYXRpb24uaXNSYW5nZVN0YXJ0O1xuICAgICAgdGhpcy5pc1ByZXZpZXdSYW5nZUVuZCA9IHJhbmdlVmFsaWRhdGlvbi5pc1JhbmdlRW5kO1xuICAgICAgdGhpcy5pc0luUHJldmlld1JhbmdlID0gcmFuZ2VWYWxpZGF0aW9uLmlzSW5SYW5nZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgZGVmZXJGbigoKSA9PiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnNlbGVjdGlvbk1vZGUgPT09IENhbGVuZGFyU2VsZWN0aW9uTW9kZS5EYXRlUmFuZ2UgJiYgdGhpcy5jYWxlbmRhclZpZXcgPT09IENhbGVuZGFyVmlldy5Nb250aCkge1xuICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95TGlzdGVuZXIodGhpcy5yZWdpc3RlcmVkRXZlbnRJZCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJlZEV2ZW50SWQgPSB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihcbiAgICAgIFsnbW91c2VvdmVyJ10sXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uuc2V0SG92ZXJlZERhdGUodGhpcy5kYXRlKTtcbiAgICAgIH0sXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICApWzBdO1xuICB9XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL2RpcmVjdGl2ZXMvY2FsZW5kYXItY2VsbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBYSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQWtCLE1BQU0sV0FBVyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFrQnpELFdBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBQTNCO1FBQ1ksdUJBQWtCLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFakQsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7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QUk3QixpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsa0NBQWtDO2dCQUlsQyxXQUFXO3NCQURqQixLQUFLO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzYWJsZWRDb250cm9sbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCwgQ1NTTW9kaWZpZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZGVmZXJGbiwgRXZlbnRNYW5hZ2VyLCBoYXNDaGFuZ2VkLCBpbmplY3RFbGVtZW50LCBOZ0NoYW5nZXMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgaXNTYW1lTW9udGggfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBpbmplY3RDYWxlbmRhckNvbmZpZyB9IGZyb20gJy4uL2NhbGVuZGFyLmNvbmZpZyc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyU2VsZWN0aW9uTW9kZSwgQ2FsZW5kYXJWaWV3LCBEYXRlUmFuZ2VTZWxlY3Rpb25TdGF0ZSwgRGF0ZVJhbmdlU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgRGF0ZUxhYmVsUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcbmltcG9ydCB7IGNoZWNrSWRlbnRpY2FsRGF0ZSwgZ2V0QTExeUxhYmVsIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgY2hlY2tDZWxsSW5SYW5nZSB9IGZyb20gJy4uL3V0aWxzL2NoZWNrLWNlbGwtaW4tcmFuZ2UnO1xuXG5AQ1NTQ29tcG9uZW50KCdjYWxlbmRhci1jZWxsJylcbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tvZHhDYWxlbmRhckNlbGxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbRGlzYWJsZWRDb250cm9sbGVyLmNvbm5lY3QoKSwgRGF0ZUxhYmVsUGlwZV0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmlzLWRpc2FibGVkXSc6ICdpc0Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmlzLXNlbGVjdGVkXSc6ICdpc1NlbGVjdGVkJyxcbiAgICAnW2NsYXNzLmlzLWluLWFueS1yYW5nZV0nOiAnaXNJblJhbmdlIHx8IGlzSW5QcmV2aWV3UmFuZ2UnLFxuICAgICdbYXR0ci5oaWRkZW5dJzogJ2lzSGlkZGVuIHx8IG51bGwnLFxuICAgICdbdGFiaW5kZXhdJzogJ2lzQWN0aXZlID8gMCA6IC0xJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnYXJpYUxhYmVsJyxcbiAgICAnW2F0dHIuYXJpYS1kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCcsXG4gICAgJ1thdHRyLnR5cGVdJzogJ1wiYnV0dG9uXCInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNlbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlZENvbnRyb2xsZXIgPSBEaXNhYmxlZENvbnRyb2xsZXIuaW5qZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBldmVudE1hbmFnZXIgPSBpbmplY3QoRXZlbnRNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWdpc3RlcmVkRXZlbnRJZCA9ICcnO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSBpbmplY3RDYWxlbmRhckNvbmZpZygpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0ZUxhYmVsUGlwZSA9IGluamVjdChEYXRlTGFiZWxQaXBlKTtcbiAgcHJvdGVjdGVkIGlzQWN0aXZlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc1NlbGVjdGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBpc0hpZGRlbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYXJpYUxhYmVsID0gJyc7XG5cbiAgcHJvdGVjdGVkIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGlzYWJsZWRDb250cm9sbGVyPy5kaXNhYmxlZDtcbiAgfVxuXG4gIEBDU1NNb2RpZmllcigpXG4gIHByb3RlY3RlZCBpc0N1cnJlbnQgPSBmYWxzZTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBwcm90ZWN0ZWQgYWRqYWNlbnQgPSBmYWxzZTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBwcm90ZWN0ZWQgaXNJblJhbmdlID0gZmFsc2U7XG5cbiAgQENTU01vZGlmaWVyKClcbiAgcHJvdGVjdGVkIGlzUmFuZ2VTdGFydCA9IGZhbHNlO1xuXG4gIEBDU1NNb2RpZmllcigpXG4gIHByb3RlY3RlZCBpc1JhbmdlRW5kID0gZmFsc2U7XG5cbiAgQENTU01vZGlmaWVyKClcbiAgcHJvdGVjdGVkIGlzSW5QcmV2aWV3UmFuZ2UgPSBmYWxzZTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBwcm90ZWN0ZWQgaXNQcmV2aWV3UmFuZ2VTdGFydCA9IGZhbHNlO1xuXG4gIEBDU1NNb2RpZmllcigpXG4gIHByb3RlY3RlZCBpc1ByZXZpZXdSYW5nZUVuZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIEBJbnB1dCgnb2R4Q2FsZW5kYXJDZWxsJylcbiAgcHVibGljIGRhdGUhOiBEYXRlO1xuXG4gIEBJbnB1dCgnb2R4Q2FsZW5kYXJDZWxsQ2FsZW5kYXJWaWV3JylcbiAgcHVibGljIGNhbGVuZGFyVmlldyE6IENhbGVuZGFyVmlldztcblxuICBASW5wdXQoJ29keENhbGVuZGFyQ2VsbEFjdGl2ZURhdGUnKVxuICBwdWJsaWMgYWN0aXZlRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgnb2R4Q2FsZW5kYXJDZWxsU2VsZWN0ZWREYXRlJylcbiAgcHVibGljIHNlbGVjdGVkRGF0ZT86IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoJ29keENhbGVuZGFyQ2VsbFNlbGVjdGVkRGF0ZVJhbmdlJylcbiAgcHVibGljIHNlbGVjdGVkRGF0ZVJhbmdlPzogRGF0ZVJhbmdlU3RhdGUgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoJ29keENhbGVuZGFyQ2VsbFByZXZpZXdEYXRlJylcbiAgcHVibGljIHByZXZpZXdEYXRlPzogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBOZ0NoYW5nZXM8Q2FsZW5kYXJDZWxsRGlyZWN0aXZlPik6IHZvaWQge1xuICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnZGF0ZScsICdjYWxlbmRhclZpZXcnXSwgZmFsc2UpKSB7XG4gICAgICB0aGlzLmFyaWFMYWJlbCA9IHRoaXMuZGF0ZUxhYmVsUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlLCBnZXRBMTF5TGFiZWwodGhpcy5jYWxlbmRhclZpZXcpKTtcbiAgICAgIHRoaXMuaXNDdXJyZW50ID0gY2hlY2tJZGVudGljYWxEYXRlKHRoaXMuZGF0ZSwgbmV3IERhdGUoKSwgdGhpcy5jYWxlbmRhclZpZXcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZURhdGUgJiYgaGFzQ2hhbmdlZChjaGFuZ2VzLCBbJ2RhdGUnLCAnYWN0aXZlRGF0ZSddLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBjaGVja0lkZW50aWNhbERhdGUodGhpcy5kYXRlLCB0aGlzLmFjdGl2ZURhdGUsIHRoaXMuY2FsZW5kYXJWaWV3KTtcbiAgICAgIGlmICh0aGlzLmNhbGVuZGFyVmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoKSB7XG4gICAgICAgIHRoaXMuYWRqYWNlbnQgPSAhaXNTYW1lTW9udGgodGhpcy5kYXRlLCB0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICB0aGlzLmlzSGlkZGVuID0gdGhpcy5hZGphY2VudCAmJiAhdGhpcy5jb25maWcuZGlzcGxheUFkamFjZW50RGF5cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgaGFzQ2hhbmdlZChjaGFuZ2VzLCBbJ2RhdGUnLCAnc2VsZWN0ZWREYXRlJ10sIGZhbHNlKSkge1xuICAgICAgdGhpcy5pc1NlbGVjdGVkID0gY2hlY2tJZGVudGljYWxEYXRlKHRoaXMuZGF0ZSwgdGhpcy5zZWxlY3RlZERhdGUsIHRoaXMuY2FsZW5kYXJWaWV3KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuc2VsZWN0aW9uTW9kZSA9PT0gQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLkRhdGVSYW5nZSAmJiB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlICYmIGhhc0NoYW5nZWQoY2hhbmdlcywgWydkYXRlJywgJ3NlbGVjdGVkRGF0ZVJhbmdlJ10sIGZhbHNlKSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLmRhdGVSYW5nZS5zdGFydDtcbiAgICAgIHRoaXMuaXNTZWxlY3RlZCA9IGNoZWNrSWRlbnRpY2FsRGF0ZSh0aGlzLmRhdGUsIHN0YXJ0IHx8IG5ldyBEYXRlKCksIHRoaXMuY2FsZW5kYXJWaWV3KTtcbiAgICAgIGNvbnN0IHJhbmdlVmFsaWRhdGlvbiA9IGNoZWNrQ2VsbEluUmFuZ2UodGhpcy5kYXRlLCB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLCB0aGlzLmNhbGVuZGFyVmlldywgRGF0ZVJhbmdlU2VsZWN0aW9uU3RhdGUuRW5kU2VsZWN0ZWQpO1xuICAgICAgdGhpcy5pc1JhbmdlU3RhcnQgPSByYW5nZVZhbGlkYXRpb24uaXNSYW5nZVN0YXJ0O1xuICAgICAgdGhpcy5pc1JhbmdlRW5kID0gcmFuZ2VWYWxpZGF0aW9uLmlzUmFuZ2VFbmQ7XG4gICAgICB0aGlzLmlzSW5SYW5nZSA9IHJhbmdlVmFsaWRhdGlvbi5pc0luUmFuZ2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcuc2VsZWN0aW9uTW9kZSA9PT0gQ2FsZW5kYXJTZWxlY3Rpb25Nb2RlLkRhdGVSYW5nZSAmJlxuICAgICAgdGhpcy5wcmV2aWV3RGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSAmJlxuICAgICAgaGFzQ2hhbmdlZChjaGFuZ2VzLCBbJ2RhdGUnLCAnc2VsZWN0ZWREYXRlUmFuZ2UnLCAncHJldmlld0RhdGUnXSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHByZXZpZXdSYW5nZTogRGF0ZVJhbmdlU3RhdGUgPSB7XG4gICAgICAgIHNlbGVjdGlvblN0YXRlOiB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlLnNlbGVjdGlvblN0YXRlLFxuICAgICAgICBkYXRlUmFuZ2U6IHsgc3RhcnQ6IHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UuZGF0ZVJhbmdlLnN0YXJ0LCBlbmQ6IHRoaXMucHJldmlld0RhdGUgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCByYW5nZVZhbGlkYXRpb24gPSBjaGVja0NlbGxJblJhbmdlKHRoaXMuZGF0ZSwgcHJldmlld1JhbmdlLCB0aGlzLmNhbGVuZGFyVmlldywgRGF0ZVJhbmdlU2VsZWN0aW9uU3RhdGUuU3RhcnRTZWxlY3RlZCk7XG4gICAgICB0aGlzLmlzUHJldmlld1JhbmdlU3RhcnQgPSByYW5nZVZhbGlkYXRpb24uaXNSYW5nZVN0YXJ0O1xuICAgICAgdGhpcy5pc1ByZXZpZXdSYW5nZUVuZCA9IHJhbmdlVmFsaWRhdGlvbi5pc1JhbmdlRW5kO1xuICAgICAgdGhpcy5pc0luUHJldmlld1JhbmdlID0gcmFuZ2VWYWxpZGF0aW9uLmlzSW5SYW5nZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgZGVmZXJGbigoKSA9PiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnNlbGVjdGlvbk1vZGUgPT09IENhbGVuZGFyU2VsZWN0aW9uTW9kZS5EYXRlUmFuZ2UgJiYgdGhpcy5jYWxlbmRhclZpZXcgPT09IENhbGVuZGFyVmlldy5Nb250aCkge1xuICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50TWFuYWdlci5kZXN0cm95TGlzdGVuZXIodGhpcy5yZWdpc3RlcmVkRXZlbnRJZCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJlZEV2ZW50SWQgPSB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihcbiAgICAgIFsnbW91c2VvdmVyJ10sXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2Uuc2V0SG92ZXJlZERhdGUodGhpcy5kYXRlKTtcbiAgICAgIH0sXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICApWzBdO1xuICB9XG59XG4iXX0=
|
|
@@ -1,25 +1,38 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { ChangeDetectorRef, Pipe, inject } from '@angular/core';
|
|
2
|
+
import { WindowRef } from '@odx/angular';
|
|
3
|
+
import { fastDeepEqual } from '@odx/angular/internal';
|
|
4
|
+
import { LocalizationService } from '@odx/angular/localization';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export class DateLabelPipe {
|
|
6
7
|
constructor() {
|
|
7
|
-
this.
|
|
8
|
+
this.localizationService = inject(LocalizationService);
|
|
9
|
+
this.windowRef = inject(WindowRef);
|
|
10
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
11
|
+
this.lastValue = null;
|
|
12
|
+
this.lastFormatOptions = null;
|
|
13
|
+
this.formattedValue = '';
|
|
8
14
|
}
|
|
9
|
-
transform(value,
|
|
15
|
+
transform(value, formatOptions) {
|
|
10
16
|
if (!value)
|
|
11
17
|
return '';
|
|
12
|
-
|
|
18
|
+
if (value === this.lastValue && fastDeepEqual(formatOptions, this.lastFormatOptions)) {
|
|
19
|
+
return this.formattedValue;
|
|
20
|
+
}
|
|
21
|
+
this.formattedValue = this.windowRef.nativeWindow.Intl.DateTimeFormat(this.localizationService.getActiveLanguage(), formatOptions).format(value);
|
|
22
|
+
this.lastValue = value;
|
|
23
|
+
this.lastFormatOptions = formatOptions;
|
|
24
|
+
this.cdr.markForCheck();
|
|
25
|
+
return this.formattedValue;
|
|
13
26
|
}
|
|
14
27
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
15
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, isStandalone: true, name: "odxDateLabel" }); }
|
|
28
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, isStandalone: true, name: "odxDateLabel", pure: false }); }
|
|
16
29
|
}
|
|
17
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, decorators: [{
|
|
18
31
|
type: Pipe,
|
|
19
32
|
args: [{
|
|
20
33
|
standalone: true,
|
|
21
34
|
name: 'odxDateLabel',
|
|
22
|
-
pure:
|
|
35
|
+
pure: false,
|
|
23
36
|
}]
|
|
24
37
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1sYWJlbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvY2FsZW5kYXIvc3JjL2xpYi9waXBlcy9kYXRlLWxhYmVsLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU9oRSxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQU1tQix3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQWdCLElBQUksQ0FBQztRQUM5QixzQkFBaUIsR0FBc0MsSUFBSSxDQUFDO1FBQzVELG1CQUFjLEdBQUcsRUFBRSxDQUFDO0tBZ0I3QjtJQWRRLFNBQVMsQ0FBQyxLQUFrQixFQUFFLGFBQXlDO1FBQzVFLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3BGLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakosSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDOytHQXJCVSxhQUFhOzZHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBTHpCLElBQUk7bUJBQUM7b0JBQ0osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBmYXN0RGVlcEVxdWFsIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvbG9jYWxpemF0aW9uJztcblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAnb2R4RGF0ZUxhYmVsJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVMYWJlbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZiA9IGluamVjdChXaW5kb3dSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgbGFzdFZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGFzdEZvcm1hdE9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZm9ybWF0dGVkVmFsdWUgPSAnJztcblxuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBEYXRlIHwgbnVsbCwgZm9ybWF0T3B0aW9uczogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcblxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5sYXN0VmFsdWUgJiYgZmFzdERlZXBFcXVhbChmb3JtYXRPcHRpb25zLCB0aGlzLmxhc3RGb3JtYXRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5JbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5nZXRBY3RpdmVMYW5ndWFnZSgpLCBmb3JtYXRPcHRpb25zKS5mb3JtYXQodmFsdWUpO1xuICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sYXN0Rm9ybWF0T3B0aW9ucyA9IGZvcm1hdE9wdGlvbnM7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZWRWYWx1ZTtcbiAgfVxufVxuIl19
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { CalendarView } from '../models';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
export function getA11yLabel(calendarView) {
|
|
3
|
+
switch (calendarView) {
|
|
4
|
+
case CalendarView.Year:
|
|
5
|
+
return { month: 'long', year: 'numeric' };
|
|
6
|
+
case CalendarView.Years:
|
|
7
|
+
return { year: 'numeric' };
|
|
8
|
+
default:
|
|
9
|
+
return { month: 'long', day: '2-digit', year: 'numeric' };
|
|
10
|
+
}
|
|
9
11
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LUExMXktbGFiZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9jYWxlbmRhci9zcmMvbGliL3V0aWxzL2dldC1BMTF5LWxhYmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsTUFBTSxVQUFVLFlBQVksQ0FBQyxZQUEwQjtJQUNyRCxRQUFRLFlBQVksRUFBRTtRQUNwQixLQUFLLFlBQVksQ0FBQyxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUU1QyxLQUFLLFlBQVksQ0FBQyxLQUFLO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFFN0I7WUFDRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUM3RDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWxlbmRhclZpZXcgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QTExeUxhYmVsKGNhbGVuZGFyVmlldzogQ2FsZW5kYXJWaWV3KTogSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMge1xuICBzd2l0Y2ggKGNhbGVuZGFyVmlldykge1xuICAgIGNhc2UgQ2FsZW5kYXJWaWV3LlllYXI6XG4gICAgICByZXR1cm4geyBtb250aDogJ2xvbmcnLCB5ZWFyOiAnbnVtZXJpYycgfTtcblxuICAgIGNhc2UgQ2FsZW5kYXJWaWV3LlllYXJzOlxuICAgICAgcmV0dXJuIHsgeWVhcjogJ251bWVyaWMnIH07XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHsgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcsIHllYXI6ICdudW1lcmljJyB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { deepEqual } from 'fast-equals';
|
|
2
|
+
export const fastDeepEqual = (obj1, obj2) => deepEqual(obj1, obj2);
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1lcXVhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvc3JjL2xpYi9oZWxwZXJzL2Zhc3QtZXF1YWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFFLElBQWEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJ2Zhc3QtZXF1YWxzJztcblxuZXhwb3J0IGNvbnN0IGZhc3REZWVwRXF1YWwgPSAob2JqMTogdW5rbm93biwgb2JqMjogdW5rbm93bikgPT4gZGVlcEVxdWFsKG9iajEsIG9iajIpO1xuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './camel-to-kebab-case';
|
|
2
2
|
export * from './decorator-property-name';
|
|
3
3
|
export * from './deepmerge';
|
|
4
|
+
export * from './fast-equals';
|
|
4
5
|
export * from './get-css-variables';
|
|
5
6
|
export * from './get-enum-values';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvc3JjL2xpYi9oZWxwZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhbWVsLXRvLWtlYmFiLWNhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3ItcHJvcGVydHktbmFtZSc7XG5leHBvcnQgKiBmcm9tICcuL2RlZXBtZXJnZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zhc3QtZXF1YWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LWNzcy12YXJpYWJsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtZW51bS12YWx1ZXMnO1xuIl19
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { APP_INITIALIZER, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
-
import { createConfigTokens
|
|
2
|
+
import { createConfigTokens } from '@odx/angular/utils';
|
|
3
3
|
import { LocalizationService } from './localization.service';
|
|
4
|
-
export const
|
|
5
|
-
export const DEFAULT_AVAILABLE_LANGUAGES = Array.from(new Set(DEFAULT_AVAILABLE_LOCALES.map(getLanguageCode)));
|
|
4
|
+
export const DEFAULT_AVAILABLE_LANGUAGES = ['en-US', 'en-GB', 'en', 'de-DE', 'de', 'es-ES', 'es', 'fr-FR', 'fr-CA', 'fr'];
|
|
6
5
|
export const { LocalizationConfig, LocalizationDefaultConfig, injectLocalizationConfig, provideLocalizationConfig } = createConfigTokens('Localization', '@odx/angular/internal/translate', {
|
|
7
6
|
availableLanguages: DEFAULT_AVAILABLE_LANGUAGES,
|
|
8
|
-
availableLocales: DEFAULT_AVAILABLE_LOCALES,
|
|
9
7
|
});
|
|
10
8
|
export function provideLocalization(config, ...features) {
|
|
11
9
|
return makeEnvironmentProviders([
|
|
@@ -19,4 +17,4 @@ export function provideLocalization(config, ...features) {
|
|
|
19
17
|
features,
|
|
20
18
|
]);
|
|
21
19
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9sb2NhbGl6YXRpb24vc3JjL2xpYi9sb2NhbGl6YXRpb24uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXdCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzdELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFNMUgsTUFBTSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxHQUFHLGtCQUFrQixDQUN0SSxjQUFjLEVBQ2QsaUNBQWlDLEVBQ2pDO0lBQ0Usa0JBQWtCLEVBQUUsMkJBQTJCO0NBQzFCLENBQ3hCLENBQUM7QUFFRixNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBbUMsRUFBRSxHQUFHLFFBQStCO0lBQ3pHLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIseUJBQXlCLENBQUMsTUFBTSxDQUFDO1FBQ2pDO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsbUJBQXdDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFO1lBQ3hHLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQzNCLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxRQUFRO0tBQ1QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgRW52aXJvbm1lbnRQcm92aWRlcnMsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnVG9rZW5zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExhbmd1YWdlTG9hZGVyRm4sIExvY2FsaXphdGlvbkZlYXR1cmUgfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FWQUlMQUJMRV9MQU5HVUFHRVMgPSBbJ2VuLVVTJywgJ2VuLUdCJywgJ2VuJywgJ2RlLURFJywgJ2RlJywgJ2VzLUVTJywgJ2VzJywgJ2ZyLUZSJywgJ2ZyLUNBJywgJ2ZyJ107XG5leHBvcnQgaW50ZXJmYWNlIExvY2FsaXphdGlvbkNvbmZpZyB7XG4gIGFjdGl2ZUxhbmd1YWdlTG9hZGVyPzogTGFuZ3VhZ2VMb2FkZXJGbjtcbiAgYXZhaWxhYmxlTGFuZ3VhZ2VzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNvbnN0IHsgTG9jYWxpemF0aW9uQ29uZmlnLCBMb2NhbGl6YXRpb25EZWZhdWx0Q29uZmlnLCBpbmplY3RMb2NhbGl6YXRpb25Db25maWcsIHByb3ZpZGVMb2NhbGl6YXRpb25Db25maWcgfSA9IGNyZWF0ZUNvbmZpZ1Rva2VucyhcbiAgJ0xvY2FsaXphdGlvbicsXG4gICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlJyxcbiAge1xuICAgIGF2YWlsYWJsZUxhbmd1YWdlczogREVGQVVMVF9BVkFJTEFCTEVfTEFOR1VBR0VTLFxuICB9IGFzIExvY2FsaXphdGlvbkNvbmZpZyxcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTG9jYWxpemF0aW9uKGNvbmZpZzogUGFydGlhbDxMb2NhbGl6YXRpb25Db25maWc+LCAuLi5mZWF0dXJlczogTG9jYWxpemF0aW9uRmVhdHVyZVtdKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBwcm92aWRlTG9jYWxpemF0aW9uQ29uZmlnKGNvbmZpZyksXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UpID0+ICgpID0+IGxvY2FsaXphdGlvblNlcnZpY2UubG9hZEFjdGl2ZUxhbmd1YWdlKCksXG4gICAgICBkZXBzOiBbTG9jYWxpemF0aW9uU2VydmljZV0sXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIGZlYXR1cmVzLFxuICBdKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Logger } from '@odx/angular/internal';
|
|
2
|
+
export default new Logger('@odx/angular/localization');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9sb2NhbGl6YXRpb24vc3JjL2xpYi9sb2NhbGl6YXRpb24ubG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxlQUFlLElBQUksTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgTG9nZ2VyKCdAb2R4L2FuZ3VsYXIvbG9jYWxpemF0aW9uJyk7XG4iXX0=
|
|
@@ -1,51 +1,42 @@
|
|
|
1
1
|
import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, from, isObservable, of, shareReplay } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, from, isObservable, map, of, shareReplay } from 'rxjs';
|
|
4
3
|
import { injectLocalizationConfig } from './localization.config';
|
|
4
|
+
import logger from './localization.logger';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class LocalizationService {
|
|
7
7
|
constructor() {
|
|
8
|
-
this.injector = inject(Injector);
|
|
9
8
|
this.localizationConfig = injectLocalizationConfig();
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
this.activeLanguage$ = this.
|
|
9
|
+
this.injector = inject(Injector);
|
|
10
|
+
this.localeState$ = new BehaviorSubject(new Intl.Locale(this.localizationConfig.availableLanguages[0]));
|
|
11
|
+
this.activeLanguage$ = this.localeState$.pipe(filter(Boolean), map((x) => x.baseName), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
13
12
|
this.availableLanguages = this.localizationConfig.availableLanguages;
|
|
14
13
|
this.defaultLanguage = this.availableLanguages[0];
|
|
15
|
-
this.availableLocales = this.localizationConfig.availableLocales;
|
|
16
|
-
this.defaultLocale = this.availableLocales[0];
|
|
17
14
|
}
|
|
18
15
|
getActiveLanguage() {
|
|
19
|
-
return this.
|
|
16
|
+
return this.localeState$.getValue()?.baseName ?? new Intl.Locale(this.defaultLanguage).baseName; // returns full locale name e.g. 'en-US' or just 'en' if no region info is attached
|
|
17
|
+
}
|
|
18
|
+
getActiveLanguageSubtag() {
|
|
19
|
+
return this.localeState$.getValue()?.language ?? new Intl.Locale(this.defaultLanguage).language; // returns two digits language subtag, e.g. 'en', 'fr'
|
|
20
20
|
}
|
|
21
21
|
setActiveLanguage(language) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
try {
|
|
23
|
+
const locale = new Intl.Locale(language);
|
|
24
|
+
if (this.availableLanguages.includes(locale.baseName) || this.availableLanguages.includes(locale.language)) {
|
|
25
|
+
this.localeState$.next(locale);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error(`Unrecognizable language '${language}'. Make sure it's a part of availableLanguages inside LocalizationService config.`);
|
|
29
|
+
}
|
|
25
30
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.activeLanguage$$.next(languageCode);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
this.activeLanguage$$.next(this.defaultLanguage);
|
|
32
|
-
}
|
|
33
|
-
getActiveLocale() {
|
|
34
|
-
return this.activeLocale$$.getValue() ?? this.defaultLocale;
|
|
35
|
-
}
|
|
36
|
-
setActiveLocale(locale) {
|
|
37
|
-
if (this.availableLocales.includes(locale)) {
|
|
38
|
-
this.activeLocale$$.next(locale);
|
|
39
|
-
return;
|
|
31
|
+
catch (error) {
|
|
32
|
+
logger.error(error);
|
|
40
33
|
}
|
|
41
|
-
this.activeLocale$$.next(this.defaultLocale);
|
|
42
34
|
}
|
|
43
35
|
async loadActiveLanguage() {
|
|
44
36
|
return runInInjectionContext(this.injector, async () => {
|
|
45
37
|
const activeLanguageLoader$ = this.createActiveLanguageLoader$();
|
|
46
38
|
const activeLanguage = await firstValueFrom(activeLanguageLoader$).catch(() => null);
|
|
47
39
|
this.setActiveLanguage(activeLanguage ?? this.defaultLanguage);
|
|
48
|
-
this.setActiveLocale(activeLanguage ?? this.defaultLocale);
|
|
49
40
|
});
|
|
50
41
|
}
|
|
51
42
|
createActiveLanguageLoader$() {
|
|
@@ -65,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
65
56
|
type: Injectable,
|
|
66
57
|
args: [{ providedIn: 'root' }]
|
|
67
58
|
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvbG9jYWxpemF0aW9uL3NyYy9saWIvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQWMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sTUFBTSxNQUFNLHVCQUF1QixDQUFDOztBQUczQyxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRW1CLHVCQUFrQixHQUFHLHdCQUF3QixFQUFFLENBQUM7UUFDaEQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3SCxvQkFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQ3RCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUM7UUFFYyx1QkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7UUFDaEUsb0JBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7S0F5QzlEO0lBdkNRLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsbUZBQW1GO0lBQ3RMLENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNEQUFzRDtJQUN6SixDQUFDO0lBRU0saUJBQWlCLENBQUMsUUFBZ0I7UUFDdkMsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMxRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixRQUFRLG1GQUFtRixDQUFDLENBQUM7YUFDMUk7U0FDRjtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sY0FBYyxHQUFHLE1BQU0sY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1FBQ2xFLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxRQUFRLFlBQVksT0FBTyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQzsrR0FyRFUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FETixNQUFNOzs0RkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBmaXJzdFZhbHVlRnJvbSwgZnJvbSwgaXNPYnNlcnZhYmxlLCBtYXAsIG9mLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0TG9jYWxpemF0aW9uQ29uZmlnIH0gZnJvbSAnLi9sb2NhbGl6YXRpb24uY29uZmlnJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2NhbGl6YXRpb24ubG9nZ2VyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGl6YXRpb25Db25maWcgPSBpbmplY3RMb2NhbGl6YXRpb25Db25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnRsLkxvY2FsZSB8IHVuZGVmaW5lZD4obmV3IEludGwuTG9jYWxlKHRoaXMubG9jYWxpemF0aW9uQ29uZmlnLmF2YWlsYWJsZUxhbmd1YWdlc1swXSkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVMYW5ndWFnZSQgPSB0aGlzLmxvY2FsZVN0YXRlJC5waXBlKFxuICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICBtYXAoKHgpID0+IHguYmFzZU5hbWUpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmxlTGFuZ3VhZ2VzID0gdGhpcy5sb2NhbGl6YXRpb25Db25maWcuYXZhaWxhYmxlTGFuZ3VhZ2VzO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5hdmFpbGFibGVMYW5ndWFnZXNbMF07XG5cbiAgcHVibGljIGdldEFjdGl2ZUxhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxlU3RhdGUkLmdldFZhbHVlKCk/LmJhc2VOYW1lID8/IG5ldyBJbnRsLkxvY2FsZSh0aGlzLmRlZmF1bHRMYW5ndWFnZSkuYmFzZU5hbWU7IC8vIHJldHVybnMgZnVsbCBsb2NhbGUgbmFtZSBlLmcuICdlbi1VUycgb3IganVzdCAnZW4nIGlmIG5vIHJlZ2lvbiBpbmZvIGlzIGF0dGFjaGVkXG4gIH1cblxuICBwdWJsaWMgZ2V0QWN0aXZlTGFuZ3VhZ2VTdWJ0YWcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbGVTdGF0ZSQuZ2V0VmFsdWUoKT8ubGFuZ3VhZ2UgPz8gbmV3IEludGwuTG9jYWxlKHRoaXMuZGVmYXVsdExhbmd1YWdlKS5sYW5ndWFnZTsgLy8gcmV0dXJucyB0d28gZGlnaXRzIGxhbmd1YWdlIHN1YnRhZywgZS5nLiAnZW4nLCAnZnInXG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsb2NhbGUgPSBuZXcgSW50bC5Mb2NhbGUobGFuZ3VhZ2UpO1xuICAgICAgaWYgKHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzLmluY2x1ZGVzKGxvY2FsZS5iYXNlTmFtZSkgfHwgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMobG9jYWxlLmxhbmd1YWdlKSkge1xuICAgICAgICB0aGlzLmxvY2FsZVN0YXRlJC5uZXh0KGxvY2FsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXphYmxlIGxhbmd1YWdlICcke2xhbmd1YWdlfScuIE1ha2Ugc3VyZSBpdCdzIGEgcGFydCBvZiBhdmFpbGFibGVMYW5ndWFnZXMgaW5zaWRlIExvY2FsaXphdGlvblNlcnZpY2UgY29uZmlnLmApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkQWN0aXZlTGFuZ3VhZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVMYW5ndWFnZUxvYWRlciQgPSB0aGlzLmNyZWF0ZUFjdGl2ZUxhbmd1YWdlTG9hZGVyJCgpO1xuICAgICAgY29uc3QgYWN0aXZlTGFuZ3VhZ2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShhY3RpdmVMYW5ndWFnZUxvYWRlciQpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgdGhpcy5zZXRBY3RpdmVMYW5ndWFnZShhY3RpdmVMYW5ndWFnZSA/PyB0aGlzLmRlZmF1bHRMYW5ndWFnZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFjdGl2ZUxhbmd1YWdlTG9hZGVyJCgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5sb2NhbGl6YXRpb25Db25maWcuYWN0aXZlTGFuZ3VhZ2VMb2FkZXI/LigpO1xuICAgIGlmIChpc09ic2VydmFibGUobGFuZ3VhZ2UpKSB7XG4gICAgICByZXR1cm4gbGFuZ3VhZ2U7XG4gICAgfVxuICAgIGlmIChsYW5ndWFnZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJldHVybiBmcm9tKGxhbmd1YWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKGxhbmd1YWdlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { __decorate, __metadata } from 'tslib';
|
|
2
2
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output,
|
|
4
|
+
import { EventEmitter, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, inject, ChangeDetectorRef, Pipe, Directive } from '@angular/core';
|
|
5
5
|
import * as i2 from '@odx/angular';
|
|
6
|
-
import { CoreModule, DisabledController } from '@odx/angular';
|
|
7
|
-
import { CSSComponent, CSSModifier } from '@odx/angular/internal';
|
|
6
|
+
import { CoreModule, WindowRef, DisabledController } from '@odx/angular';
|
|
7
|
+
import { CSSComponent, fastDeepEqual, CSSModifier } from '@odx/angular/internal';
|
|
8
8
|
import { createConfigTokens, isString, isPresent, injectElement, hasChanged, EventManager, deferFn, untilDestroyed, trackByIndex, isFunction } from '@odx/angular/utils';
|
|
9
|
-
import {
|
|
9
|
+
import { isSameDay, isSameMonth, isSameYear, endOfDay, endOfMonth, endOfYear, startOfDay, startOfMonth, startOfYear, isValid, toDate, isBefore, isEqual, addMonths, subMonths, isWithinInterval, startOfWeek, addDays, endOfWeek, eachMonthOfInterval, addYears, getYear, setYear, subDays, subWeeks, addWeeks, setMonth, getMonth } from 'date-fns';
|
|
10
10
|
import { BehaviorSubject, shareReplay, map, filter, distinctUntilChanged, merge, defer, of, withLatestFrom } from 'rxjs';
|
|
11
|
-
import { isSameDay, isSameMonth, isSameYear, endOfDay, endOfMonth, endOfYear, startOfDay, startOfMonth, startOfYear, isValid, toDate, isBefore, isEqual, addMonths, subMonths, format, isWithinInterval, startOfWeek, addDays, endOfWeek, eachMonthOfInterval, addYears, getYear, setYear, subDays, subWeeks, addWeeks, setMonth, getMonth } from 'date-fns';
|
|
12
11
|
import { ActionGroupComponent } from '@odx/angular/components/action-group';
|
|
13
12
|
import { ButtonComponent } from '@odx/angular/components/button';
|
|
14
13
|
import { IconComponent } from '@odx/angular/components/icon';
|
|
14
|
+
import { LocalizationService } from '@odx/angular/localization';
|
|
15
15
|
import * as i1 from '@angular/common';
|
|
16
16
|
import { DOCUMENT } from '@angular/common';
|
|
17
17
|
import * as i3 from '@ngrx/component';
|
|
@@ -23,16 +23,7 @@ var CalendarSelectionMode;
|
|
|
23
23
|
})(CalendarSelectionMode || (CalendarSelectionMode = {}));
|
|
24
24
|
|
|
25
25
|
const { CalendarConfig, CalendarDefaultConfig, injectCalendarConfig, provideCalendarConfig } = createConfigTokens('Calendar', '@odx/angular/components/calendar', {
|
|
26
|
-
monthYearLabel: 'LLLL yyyy',
|
|
27
|
-
monthLabel: 'LLL',
|
|
28
|
-
weekLabel: 'EEEEE',
|
|
29
|
-
dayLabel: 'd',
|
|
30
|
-
yearLabel: 'yyyy',
|
|
31
|
-
dayA11yLabel: 'MMMM dd, yyyy',
|
|
32
|
-
monthA11yLabel: 'MMMM, yyyy',
|
|
33
|
-
yearA11yLabel: 'yyyy',
|
|
34
26
|
displayAdjacentDays: true,
|
|
35
|
-
locale: new BehaviorSubject(enGB),
|
|
36
27
|
selectionMode: CalendarSelectionMode.Date,
|
|
37
28
|
yearView: {
|
|
38
29
|
itemsPerRow: 3,
|
|
@@ -71,13 +62,15 @@ function checkIdenticalDate(currentDate, date, calendarView) {
|
|
|
71
62
|
return dateValidators$4[calendarView](currentDate, date);
|
|
72
63
|
}
|
|
73
64
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
65
|
+
function getA11yLabel(calendarView) {
|
|
66
|
+
switch (calendarView) {
|
|
67
|
+
case CalendarView.Year:
|
|
68
|
+
return { month: 'long', year: 'numeric' };
|
|
69
|
+
case CalendarView.Years:
|
|
70
|
+
return { year: 'numeric' };
|
|
71
|
+
default:
|
|
72
|
+
return { month: 'long', day: '2-digit', year: 'numeric' };
|
|
73
|
+
}
|
|
81
74
|
}
|
|
82
75
|
|
|
83
76
|
const dateValidators$3 = {
|
|
@@ -238,22 +231,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
238
231
|
|
|
239
232
|
class DateLabelPipe {
|
|
240
233
|
constructor() {
|
|
241
|
-
this.
|
|
242
|
-
|
|
243
|
-
|
|
234
|
+
this.localizationService = inject(LocalizationService);
|
|
235
|
+
this.windowRef = inject(WindowRef);
|
|
236
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
237
|
+
this.lastValue = null;
|
|
238
|
+
this.lastFormatOptions = null;
|
|
239
|
+
this.formattedValue = '';
|
|
240
|
+
}
|
|
241
|
+
transform(value, formatOptions) {
|
|
244
242
|
if (!value)
|
|
245
243
|
return '';
|
|
246
|
-
|
|
244
|
+
if (value === this.lastValue && fastDeepEqual(formatOptions, this.lastFormatOptions)) {
|
|
245
|
+
return this.formattedValue;
|
|
246
|
+
}
|
|
247
|
+
this.formattedValue = this.windowRef.nativeWindow.Intl.DateTimeFormat(this.localizationService.getActiveLanguage(), formatOptions).format(value);
|
|
248
|
+
this.lastValue = value;
|
|
249
|
+
this.lastFormatOptions = formatOptions;
|
|
250
|
+
this.cdr.markForCheck();
|
|
251
|
+
return this.formattedValue;
|
|
247
252
|
}
|
|
248
253
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
249
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, isStandalone: true, name: "odxDateLabel" }); }
|
|
254
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, isStandalone: true, name: "odxDateLabel", pure: false }); }
|
|
250
255
|
}
|
|
251
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateLabelPipe, decorators: [{
|
|
252
257
|
type: Pipe,
|
|
253
258
|
args: [{
|
|
254
259
|
standalone: true,
|
|
255
260
|
name: 'odxDateLabel',
|
|
256
|
-
pure:
|
|
261
|
+
pure: false,
|
|
257
262
|
}]
|
|
258
263
|
}] });
|
|
259
264
|
|
|
@@ -313,7 +318,7 @@ let CalendarCellDirective = class CalendarCellDirective {
|
|
|
313
318
|
}
|
|
314
319
|
ngOnChanges(changes) {
|
|
315
320
|
if (hasChanged(changes, ['date', 'calendarView'], false)) {
|
|
316
|
-
this.ariaLabel = this.dateLabelPipe.transform(this.date, getA11yLabel(this.calendarView
|
|
321
|
+
this.ariaLabel = this.dateLabelPipe.transform(this.date, getA11yLabel(this.calendarView));
|
|
317
322
|
this.isCurrent = checkIdenticalDate(this.date, new Date(), this.calendarView);
|
|
318
323
|
}
|
|
319
324
|
if (this.activeDate && hasChanged(changes, ['date', 'activeDate'], false)) {
|
|
@@ -612,14 +617,14 @@ let CalendarMonthComponent = class CalendarMonthComponent extends CalendarViewDi
|
|
|
612
617
|
this.calendar.selectDate(value, { emitOutside: true });
|
|
613
618
|
}
|
|
614
619
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarMonthComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
615
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarMonthComponent, isStandalone: true, selector: "odx-calendar-month", providers: [CalendarMonthService], usesInheritance: true, ngImport: i0, template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"7\">\n <odx-calendar-header\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (previous)=\"previousMonth($event)\"\n (next)=\"nextMonth($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel:
|
|
620
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarMonthComponent, isStandalone: true, selector: "odx-calendar-month", providers: [CalendarMonthService], usesInheritance: true, ngImport: i0, template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"7\">\n <odx-calendar-header\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (previous)=\"previousMonth($event)\"\n (next)=\"nextMonth($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { month: 'long', year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n\n <tr class=\"odx-calendar__weekdays\">\n <td *ngFor=\"let day of calendarMonth.weekDays$ | async\">\n {{ (day | odxDateLabel: { weekday: 'short' }).charAt(0) }}\n </td>\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousDay($event)\"\n (keydown.ArrowRight)=\"nextDay($event)\"\n (keydown.ArrowUp)=\"previousWeek($event)\"\n (keydown.ArrowDown)=\"nextWeek($event)\"\n (keydown.PageUp)=\"previousMonth($event)\"\n (keydown.PageDown)=\"nextMonth($event)\"\n >\n <tr *ngFor=\"let week of calendarMonth.weeks$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let day of week; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(day)\"\n [odxCalendarCell]=\"day\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n [odxCalendarCellPreviewDate]=\"previewDate\"\n (click)=\"selectDate(day)\"\n >\n {{ day | odxDateLabel: { day: 'numeric' } }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: CalendarCellDirective, selector: "[odxCalendarCell]", inputs: ["odxCalendarCell", "odxCalendarCellCalendarView", "odxCalendarCellActiveDate", "odxCalendarCellSelectedDate", "odxCalendarCellSelectedDateRange", "odxCalendarCellPreviewDate"] }, { kind: "component", type: CalendarHeaderComponent, selector: "odx-calendar-header", inputs: ["activeDate", "calendarView", "minDate", "maxDate"], outputs: ["previous", "next", "changeView"] }, { kind: "pipe", type: DateLabelPipe, name: "odxDateLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
616
621
|
};
|
|
617
622
|
CalendarMonthComponent = __decorate([
|
|
618
623
|
CSSComponent('calendar-month')
|
|
619
624
|
], CalendarMonthComponent);
|
|
620
625
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarMonthComponent, decorators: [{
|
|
621
626
|
type: Component,
|
|
622
|
-
args: [{ selector: 'odx-calendar-month', standalone: true, imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CalendarMonthService], template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"7\">\n <odx-calendar-header\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (previous)=\"previousMonth($event)\"\n (next)=\"nextMonth($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel:
|
|
627
|
+
args: [{ selector: 'odx-calendar-month', standalone: true, imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CalendarMonthService], template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"7\">\n <odx-calendar-header\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (previous)=\"previousMonth($event)\"\n (next)=\"nextMonth($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { month: 'long', year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n\n <tr class=\"odx-calendar__weekdays\">\n <td *ngFor=\"let day of calendarMonth.weekDays$ | async\">\n {{ (day | odxDateLabel: { weekday: 'short' }).charAt(0) }}\n </td>\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousDay($event)\"\n (keydown.ArrowRight)=\"nextDay($event)\"\n (keydown.ArrowUp)=\"previousWeek($event)\"\n (keydown.ArrowDown)=\"nextWeek($event)\"\n (keydown.PageUp)=\"previousMonth($event)\"\n (keydown.PageDown)=\"nextMonth($event)\"\n >\n <tr *ngFor=\"let week of calendarMonth.weeks$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let day of week; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(day)\"\n [odxCalendarCell]=\"day\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n [odxCalendarCellPreviewDate]=\"previewDate\"\n (click)=\"selectDate(day)\"\n >\n {{ day | odxDateLabel: { day: 'numeric' } }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n" }]
|
|
623
628
|
}] });
|
|
624
629
|
|
|
625
630
|
let CalendarYearComponent = class CalendarYearComponent extends CalendarViewDirective {
|
|
@@ -655,14 +660,14 @@ let CalendarYearComponent = class CalendarYearComponent extends CalendarViewDire
|
|
|
655
660
|
this.changeView();
|
|
656
661
|
}
|
|
657
662
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarYearComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
658
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarYearComponent, isStandalone: true, selector: "odx-calendar-year", providers: [CalendarYearService], usesInheritance: true, ngImport: i0, template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"3\">\n <odx-calendar-header\n (previous)=\"previousYear($event)\"\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (next)=\"nextYear($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel:
|
|
663
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarYearComponent, isStandalone: true, selector: "odx-calendar-year", providers: [CalendarYearService], usesInheritance: true, ngImport: i0, template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"3\">\n <odx-calendar-header\n (previous)=\"previousYear($event)\"\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (next)=\"nextYear($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousMonth($event)\"\n (keydown.ArrowRight)=\"nextMonth($event)\"\n (keydown.ArrowUp)=\"previousSeason($event)\"\n (keydown.ArrowDown)=\"nextSeason($event)\"\n (keydown.PageDown)=\"nextYear($event)\"\n (keydown.PageUp)=\"previousYear($event)\"\n >\n <tr class=\"odx-calendar__season\" *ngFor=\"let season of calendarYear.seasons$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let month of season; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(month)\"\n [odxCalendarCell]=\"month\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(month)\"\n >\n {{ month | odxDateLabel: { month: 'short' } }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: CalendarCellDirective, selector: "[odxCalendarCell]", inputs: ["odxCalendarCell", "odxCalendarCellCalendarView", "odxCalendarCellActiveDate", "odxCalendarCellSelectedDate", "odxCalendarCellSelectedDateRange", "odxCalendarCellPreviewDate"] }, { kind: "component", type: CalendarHeaderComponent, selector: "odx-calendar-header", inputs: ["activeDate", "calendarView", "minDate", "maxDate"], outputs: ["previous", "next", "changeView"] }, { kind: "pipe", type: DateLabelPipe, name: "odxDateLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
659
664
|
};
|
|
660
665
|
CalendarYearComponent = __decorate([
|
|
661
666
|
CSSComponent('calendar-year')
|
|
662
667
|
], CalendarYearComponent);
|
|
663
668
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarYearComponent, decorators: [{
|
|
664
669
|
type: Component,
|
|
665
|
-
args: [{ selector: 'odx-calendar-year', standalone: true, imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CalendarYearService], template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"3\">\n <odx-calendar-header\n (previous)=\"previousYear($event)\"\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (next)=\"nextYear($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel:
|
|
670
|
+
args: [{ selector: 'odx-calendar-year', standalone: true, imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CalendarYearService], template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\">\n <thead>\n <tr>\n <th colspan=\"3\">\n <odx-calendar-header\n (previous)=\"previousYear($event)\"\n [calendarView]=\"currentView\"\n [activeDate]=\"activeDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (next)=\"nextYear($event)\"\n (changeView)=\"changeView()\"\n >\n {{ activeDate | odxDateLabel: { year: 'numeric' } }}\n </odx-calendar-header>\n </th>\n </tr>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousMonth($event)\"\n (keydown.ArrowRight)=\"nextMonth($event)\"\n (keydown.ArrowUp)=\"previousSeason($event)\"\n (keydown.ArrowDown)=\"nextSeason($event)\"\n (keydown.PageDown)=\"nextYear($event)\"\n (keydown.PageUp)=\"previousYear($event)\"\n >\n <tr class=\"odx-calendar__season\" *ngFor=\"let season of calendarYear.seasons$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let month of season; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(month)\"\n [odxCalendarCell]=\"month\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(month)\"\n >\n {{ month | odxDateLabel: { month: 'short' } }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n" }]
|
|
666
671
|
}] });
|
|
667
672
|
|
|
668
673
|
let CalendarYearsComponent = class CalendarYearsComponent extends CalendarViewDirective {
|
|
@@ -704,14 +709,14 @@ let CalendarYearsComponent = class CalendarYearsComponent extends CalendarViewDi
|
|
|
704
709
|
}
|
|
705
710
|
}
|
|
706
711
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarYearsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
707
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarYearsComponent, isStandalone: true, selector: "odx-calendar-years", providers: [CalendarYearsService], usesInheritance: true, ngImport: i0, template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\" *ngrxLet=\"calendar.activeDate$ as activeDate\">\n <thead aria-hidden=\"true\">\n <th></th>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousYear($event)\"\n (keydown.ArrowRight)=\"nextYear($event)\"\n (keydown.ArrowUp)=\"previousRow($event)\"\n (keydown.ArrowDown)=\"nextRow($event)\"\n >\n <tr class=\"odx-calendar__year-row\" *ngFor=\"let yearRow of calendarYears.years$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let year of yearRow; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel:
|
|
712
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarYearsComponent, isStandalone: true, selector: "odx-calendar-years", providers: [CalendarYearsService], usesInheritance: true, ngImport: i0, template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\" *ngrxLet=\"calendar.activeDate$ as activeDate\">\n <thead aria-hidden=\"true\">\n <th></th>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousYear($event)\"\n (keydown.ArrowRight)=\"nextYear($event)\"\n (keydown.ArrowUp)=\"previousRow($event)\"\n (keydown.ArrowDown)=\"nextRow($event)\"\n >\n <tr class=\"odx-calendar__year-row\" *ngFor=\"let yearRow of calendarYears.years$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let year of yearRow; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel: { year: 'numeric' } }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "directive", type: i3.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: CalendarCellDirective, selector: "[odxCalendarCell]", inputs: ["odxCalendarCell", "odxCalendarCellCalendarView", "odxCalendarCellActiveDate", "odxCalendarCellSelectedDate", "odxCalendarCellSelectedDateRange", "odxCalendarCellPreviewDate"] }, { kind: "pipe", type: DateLabelPipe, name: "odxDateLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
708
713
|
};
|
|
709
714
|
CalendarYearsComponent = __decorate([
|
|
710
715
|
CSSComponent('calendar-years')
|
|
711
716
|
], CalendarYearsComponent);
|
|
712
717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarYearsComponent, decorators: [{
|
|
713
718
|
type: Component,
|
|
714
|
-
args: [{ selector: 'odx-calendar-years', standalone: true, imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CalendarYearsService], template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\" *ngrxLet=\"calendar.activeDate$ as activeDate\">\n <thead aria-hidden=\"true\">\n <th></th>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousYear($event)\"\n (keydown.ArrowRight)=\"nextYear($event)\"\n (keydown.ArrowUp)=\"previousRow($event)\"\n (keydown.ArrowDown)=\"nextRow($event)\"\n >\n <tr class=\"odx-calendar__year-row\" *ngFor=\"let yearRow of calendarYears.years$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let year of yearRow; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel:
|
|
719
|
+
args: [{ selector: 'odx-calendar-years', standalone: true, imports: [CoreModule, CalendarCellDirective, CalendarHeaderComponent, DateLabelPipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CalendarYearsService], template: "<table class=\"odx-calendar__table\" role=\"grid\" aria-describedby=\"odx-calendar\" *ngrxLet=\"calendar.activeDate$ as activeDate\">\n <thead aria-hidden=\"true\">\n <th></th>\n </thead>\n\n <tbody\n class=\"odx-calendar__body\"\n (keydown.ArrowLeft)=\"previousYear($event)\"\n (keydown.ArrowRight)=\"nextYear($event)\"\n (keydown.ArrowUp)=\"previousRow($event)\"\n (keydown.ArrowDown)=\"nextRow($event)\"\n >\n <tr class=\"odx-calendar__year-row\" *ngFor=\"let yearRow of calendarYears.years$ | async; trackBy: trackByIndex\">\n <td role=\"gridcell\" *ngFor=\"let year of yearRow; trackBy: trackByIndex\">\n <button\n [disabled]=\"isDateDisabled(year)\"\n [odxCalendarCell]=\"year\"\n [odxCalendarCellActiveDate]=\"activeDate\"\n [odxCalendarCellCalendarView]=\"currentView\"\n [odxCalendarCellSelectedDate]=\"selectedDate\"\n [odxCalendarCellSelectedDateRange]=\"selectedDateRange\"\n (click)=\"selectDate(year)\"\n >\n {{ year | odxDateLabel: { year: 'numeric' } }}\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n" }]
|
|
715
720
|
}] });
|
|
716
721
|
|
|
717
722
|
class DaterangeService {
|