@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
176 lines (174 loc) • 5.51 kB
JavaScript
/**
* Internationalization/Globalization class.
* @dynamic
*/
export class Globalization {
static fullTimeOptions = {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
timeZoneName: 'short'
};
static dateTimeOnlyOptions = {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
};
static dateTimeOnlyShortOptions = {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric'
};
static dateOnlyOptions = {
year: 'numeric',
month: 'numeric',
day: 'numeric'
};
static timeOnlyOptions = {
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
};
/**
* Caching format objects for better performance.
*/
static internalFullTimeFormat;
static internalDateTimeOnlyShortFormat;
static internalDateTimeOnlyFormat;
static internalDateOnlyFormat;
static internalTimeOnlyFormat;
static internalNumberFormat;
static get fullTimeFormat() {
if (!Globalization.internalFullTimeFormat) {
Globalization.internalFullTimeFormat = new Intl.DateTimeFormat(Globalization.localeId, Globalization.fullTimeOptions);
}
return Globalization.internalFullTimeFormat;
}
static get dateTimeOnlyFormat() {
if (!Globalization.internalDateTimeOnlyFormat) {
Globalization.internalDateTimeOnlyFormat = new Intl.DateTimeFormat(Globalization.localeId, Globalization.dateTimeOnlyOptions);
}
return Globalization.internalDateTimeOnlyFormat;
}
static get dateTimeOnlyShortFormat() {
if (!Globalization.internalDateTimeOnlyShortFormat) {
Globalization.internalDateTimeOnlyShortFormat = new Intl.DateTimeFormat(Globalization.localeId, Globalization.dateTimeOnlyShortOptions);
}
return Globalization.internalDateTimeOnlyShortFormat;
}
static get dateOnlyFormat() {
if (!Globalization.internalDateOnlyFormat) {
Globalization.internalDateOnlyFormat = new Intl.DateTimeFormat(Globalization.localeId, Globalization.dateOnlyOptions);
}
return Globalization.internalDateOnlyFormat;
}
static get timeOnlyFormat() {
if (!Globalization.internalTimeOnlyFormat) {
Globalization.internalTimeOnlyFormat = new Intl.DateTimeFormat(Globalization.localeId, Globalization.timeOnlyOptions);
}
return Globalization.internalTimeOnlyFormat;
}
static get numberFormat() {
if (!Globalization.internalNumberFormat) {
Globalization.internalNumberFormat = new Intl.NumberFormat(Globalization.localeId);
}
return Globalization.internalNumberFormat;
}
/**
* Gets the locale ID for regional format.
*
* This ID must be used for any locale function calls.
*
* - String.prototype.localeCompare()
* - Number.prototype.toLocaleString()
* - Date.prototype.toLocaleString()
* - Date.prototype.toLocaleDateString()
* - Date.prototype.toLocaleTimeString()
*
* @return string the local ID.
*/
static get localeId() {
const resources = MsftSme.self().Resources;
const id = resources.localeRegionalId;
return id ? id : null;
}
/**
* Format with full time to display.
*
* @param data the date object.
*/
static fullTime(date) {
if (MsftSme.isNullOrUndefined(date)) {
return null;
}
return Globalization.fullTimeFormat.format(date);
}
/**
* Format with date time only to display.
*
* @param data the date object.
*/
static dateTimeOnly(date) {
if (MsftSme.isNullOrUndefined(date)) {
return null;
}
return Globalization.dateTimeOnlyFormat.format(date);
}
/**
* Format with date time only without seconds to display.
*
* @param data the date object.
*/
static dateTimeOnlyShort(date) {
if (MsftSme.isNullOrUndefined(date)) {
return null;
}
return Globalization.dateTimeOnlyShortFormat.format(date);
}
/**
* Format with date only to display.
*
* @param data the date object.
*/
static dateOnly(date) {
if (MsftSme.isNullOrUndefined(date)) {
return null;
}
return Globalization.dateOnlyFormat.format(date);
}
/**
* Format with time only to display.
*
* @param data the date object.
*/
static timeOnly(date) {
if (MsftSme.isNullOrUndefined(date)) {
return null;
}
return Globalization.timeOnlyFormat.format(date);
}
/**
* Format simple number to display.
*
* (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat to add
* more feature such as currency display)
*
* @param data the number data.
* @param options the number formatting options.
*/
static number(data, options) {
if (!options) {
return Globalization.numberFormat.format(data);
}
return Intl.NumberFormat(Globalization.localeId, options).format(data);
}
}
//# sourceMappingURL=globalization.js.map