UNPKG

@clr/angular

Version:

Angular components for Clarity

101 lines 13.1 kB
/* * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved. * This software is released under MIT license. * The full license information can be found in LICENSE in the root directory of this project. */ import { FormatWidth, FormStyle, getLocaleDateFormat, getLocaleDayNames, getLocaleFirstDayOfWeek, getLocaleMonthNames, TranslationWidth, } from '@angular/common'; import { Inject, Injectable, LOCALE_ID } from '@angular/core'; import * as i0 from "@angular/core"; /** * This service extracts the Angular CLDR data needed by the datepicker. */ export class LocaleHelperService { constructor(locale) { this.locale = locale; this._firstDayOfWeek = 0; this.initializeLocaleData(); } get firstDayOfWeek() { return this._firstDayOfWeek; } get localeDays() { return this._localeDays; } // leave for backward compatibility get localeDaysNarrow() { return this._localeDays.map(day => day.narrow); } get localeMonthsAbbreviated() { return this._localeMonthsAbbreviated; } get localeMonthsWide() { return this._localeMonthsWide; } get localeDateFormat() { return this._localeDateFormat; } /** * Initializes the locale data. */ initializeLocaleData() { // Order in which these functions is called is very important. this.initializeFirstDayOfWeek(); this.initializeLocaleDateFormat(); this.initializeLocaleMonthsAbbreviated(); this.initializeLocaleMonthsWide(); this.initializeLocaleDays(); } /** * Initialize day names based on the locale. * eg: [{day: Sunday, narrow: S}, {day: Monday, narrow: M}...] for en-US. */ initializeLocaleDays() { // Get locale day names starting with Sunday const tempArr = []; const tempWideArr = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice(); const tempNarrowArr = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Narrow).slice(); // Get first day of the week based on the locale const firstDayOfWeek = this.firstDayOfWeek; for (let i = 0; i < 7; i++) { tempArr.push({ day: tempWideArr[i], narrow: tempNarrowArr[i] }); } // Rearrange the tempArr to start with the first day of the week based on the locale. if (firstDayOfWeek > 0) { const prevDays = tempArr.splice(0, firstDayOfWeek); tempArr.push(...prevDays); } this._localeDays = tempArr; } /** * Initializes the array of month names in the TranslationWidth.Abbreviated format. * e.g. `[Jan, Feb, ...]` for en-US */ initializeLocaleMonthsAbbreviated() { this._localeMonthsAbbreviated = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Abbreviated).slice(); } /** * Initializes the array of month names in the TranslationWidth.Wide format. * e.g. `[January, February, ...]` for en-US */ initializeLocaleMonthsWide() { this._localeMonthsWide = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice(); } /** * Initializes the first day of the week based on the locale. */ initializeFirstDayOfWeek() { this._firstDayOfWeek = getLocaleFirstDayOfWeek(this.locale); } initializeLocaleDateFormat() { this._localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short); } } LocaleHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LocaleHelperService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); LocaleHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LocaleHelperService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LocaleHelperService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Inject, args: [LOCALE_ID] }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvZGF0ZXBpY2tlci9wcm92aWRlcnMvbG9jYWxlLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUk5RDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsWUFBc0MsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFONUMsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFPMUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CO1FBQzFCLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssb0JBQW9CO1FBQzFCLDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxXQUFXLEdBQWEsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xILE1BQU0sYUFBYSxHQUFhLGlCQUFpQixDQUMvQyxJQUFJLENBQUMsTUFBTSxFQUNYLFNBQVMsQ0FBQyxVQUFVLEVBQ3BCLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLGdEQUFnRDtRQUNoRCxNQUFNLGNBQWMsR0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakU7UUFDRCxxRkFBcUY7UUFDckYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxHQUFzQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN0RixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssaUNBQWlDO1FBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxtQkFBbUIsQ0FDakQsSUFBSSxDQUFDLE1BQU0sRUFDWCxTQUFTLENBQUMsVUFBVSxFQUNwQixnQkFBZ0IsQ0FBQyxXQUFXLENBQzdCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakgsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9FLENBQUM7O2dIQXZHVSxtQkFBbUIsa0JBT1YsU0FBUztvSEFQbEIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQVFJLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHtcbiAgRm9ybWF0V2lkdGgsXG4gIEZvcm1TdHlsZSxcbiAgZ2V0TG9jYWxlRGF0ZUZvcm1hdCxcbiAgZ2V0TG9jYWxlRGF5TmFtZXMsXG4gIGdldExvY2FsZUZpcnN0RGF5T2ZXZWVrLFxuICBnZXRMb2NhbGVNb250aE5hbWVzLFxuICBUcmFuc2xhdGlvbldpZHRoLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2xyRGF5T2ZXZWVrIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kYXktb2Ytd2Vlay5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFRoaXMgc2VydmljZSBleHRyYWN0cyB0aGUgQW5ndWxhciBDTERSIGRhdGEgbmVlZGVkIGJ5IHRoZSBkYXRlcGlja2VyLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9jYWxlSGVscGVyU2VydmljZSB7XG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrID0gMDtcbiAgcHJpdmF0ZSBfbG9jYWxlRGF5czogUmVhZG9ubHlBcnJheTxDbHJEYXlPZldlZWs+O1xuICBwcml2YXRlIF9sb2NhbGVNb250aHNBYmJyZXZpYXRlZDogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuICBwcml2YXRlIF9sb2NhbGVNb250aHNXaWRlOiBSZWFkb25seUFycmF5PHN0cmluZz47XG4gIHByaXZhdGUgX2xvY2FsZURhdGVGb3JtYXQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbml0aWFsaXplTG9jYWxlRGF0YSgpO1xuICB9XG5cbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrO1xuICB9XG5cbiAgZ2V0IGxvY2FsZURheXMoKTogUmVhZG9ubHlBcnJheTxDbHJEYXlPZldlZWs+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF5cztcbiAgfVxuXG4gIC8vIGxlYXZlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIGdldCBsb2NhbGVEYXlzTmFycm93KCk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZURheXMubWFwKGRheSA9PiBkYXkubmFycm93KTtcbiAgfVxuXG4gIGdldCBsb2NhbGVNb250aHNBYmJyZXZpYXRlZCgpOiBSZWFkb25seUFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGVNb250aHNBYmJyZXZpYXRlZDtcbiAgfVxuXG4gIGdldCBsb2NhbGVNb250aHNXaWRlKCk6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZU1vbnRoc1dpZGU7XG4gIH1cblxuICBnZXQgbG9jYWxlRGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRlRm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBsb2NhbGUgZGF0YS5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKTogdm9pZCB7XG4gICAgLy8gT3JkZXIgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGlzIGNhbGxlZCBpcyB2ZXJ5IGltcG9ydGFudC5cbiAgICB0aGlzLmluaXRpYWxpemVGaXJzdERheU9mV2VlaygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxvY2FsZURhdGVGb3JtYXQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVMb2NhbGVNb250aHNBYmJyZXZpYXRlZCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxvY2FsZU1vbnRoc1dpZGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVMb2NhbGVEYXlzKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBkYXkgbmFtZXMgYmFzZWQgb24gdGhlIGxvY2FsZS5cbiAgICogZWc6IFt7ZGF5OiBTdW5kYXksIG5hcnJvdzogU30sIHtkYXk6IE1vbmRheSwgbmFycm93OiBNfS4uLl0gZm9yIGVuLVVTLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplTG9jYWxlRGF5cygpOiB2b2lkIHtcbiAgICAvLyBHZXQgbG9jYWxlIGRheSBuYW1lcyBzdGFydGluZyB3aXRoIFN1bmRheVxuICAgIGNvbnN0IHRlbXBBcnIgPSBbXTtcbiAgICBjb25zdCB0ZW1wV2lkZUFycjogc3RyaW5nW10gPSBnZXRMb2NhbGVEYXlOYW1lcyh0aGlzLmxvY2FsZSwgRm9ybVN0eWxlLlN0YW5kYWxvbmUsIFRyYW5zbGF0aW9uV2lkdGguV2lkZSkuc2xpY2UoKTtcbiAgICBjb25zdCB0ZW1wTmFycm93QXJyOiBzdHJpbmdbXSA9IGdldExvY2FsZURheU5hbWVzKFxuICAgICAgdGhpcy5sb2NhbGUsXG4gICAgICBGb3JtU3R5bGUuU3RhbmRhbG9uZSxcbiAgICAgIFRyYW5zbGF0aW9uV2lkdGguTmFycm93XG4gICAgKS5zbGljZSgpO1xuICAgIC8vIEdldCBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgYmFzZWQgb24gdGhlIGxvY2FsZVxuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSB0aGlzLmZpcnN0RGF5T2ZXZWVrO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICB0ZW1wQXJyLnB1c2goeyBkYXk6IHRlbXBXaWRlQXJyW2ldLCBuYXJyb3c6IHRlbXBOYXJyb3dBcnJbaV0gfSk7XG4gICAgfVxuICAgIC8vIFJlYXJyYW5nZSB0aGUgdGVtcEFyciB0byBzdGFydCB3aXRoIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgYmFzZWQgb24gdGhlIGxvY2FsZS5cbiAgICBpZiAoZmlyc3REYXlPZldlZWsgPiAwKSB7XG4gICAgICBjb25zdCBwcmV2RGF5czogeyBkYXk6IHN0cmluZzsgbmFycm93OiBzdHJpbmcgfVtdID0gdGVtcEFyci5zcGxpY2UoMCwgZmlyc3REYXlPZldlZWspO1xuICAgICAgdGVtcEFyci5wdXNoKC4uLnByZXZEYXlzKTtcbiAgICB9XG4gICAgdGhpcy5fbG9jYWxlRGF5cyA9IHRlbXBBcnI7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGFycmF5IG9mIG1vbnRoIG5hbWVzIGluIHRoZSBUcmFuc2xhdGlvbldpZHRoLkFiYnJldmlhdGVkIGZvcm1hdC5cbiAgICogZS5nLiBgW0phbiwgRmViLCAuLi5dYCBmb3IgZW4tVVNcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxvY2FsZU1vbnRoc0FiYnJldmlhdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvY2FsZU1vbnRoc0FiYnJldmlhdGVkID0gZ2V0TG9jYWxlTW9udGhOYW1lcyhcbiAgICAgIHRoaXMubG9jYWxlLFxuICAgICAgRm9ybVN0eWxlLlN0YW5kYWxvbmUsXG4gICAgICBUcmFuc2xhdGlvbldpZHRoLkFiYnJldmlhdGVkXG4gICAgKS5zbGljZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBhcnJheSBvZiBtb250aCBuYW1lcyBpbiB0aGUgVHJhbnNsYXRpb25XaWR0aC5XaWRlIGZvcm1hdC5cbiAgICogZS5nLiBgW0phbnVhcnksIEZlYnJ1YXJ5LCAuLi5dYCBmb3IgZW4tVVNcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxvY2FsZU1vbnRoc1dpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9jYWxlTW9udGhzV2lkZSA9IGdldExvY2FsZU1vbnRoTmFtZXModGhpcy5sb2NhbGUsIEZvcm1TdHlsZS5TdGFuZGFsb25lLCBUcmFuc2xhdGlvbldpZHRoLldpZGUpLnNsaWNlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBiYXNlZCBvbiB0aGUgbG9jYWxlLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplRmlyc3REYXlPZldlZWsoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBnZXRMb2NhbGVGaXJzdERheU9mV2Vlayh0aGlzLmxvY2FsZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMb2NhbGVEYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgIHRoaXMuX2xvY2FsZURhdGVGb3JtYXQgPSBnZXRMb2NhbGVEYXRlRm9ybWF0KHRoaXMubG9jYWxlLCBGb3JtYXRXaWR0aC5TaG9ydCk7XG4gIH1cbn1cbiJdfQ==