@bootkit/ng0 0.0.0-alpha.50 → 0.0.0-alpha.52

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/locale-definition.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/formatter.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/format.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinition } from \"./locale-definition\";\nimport { TranslatedValidationError } from \"./types\";\nimport { ObjectFormatter } from \"./formatter\";\n\n/** Locale */\nexport class Locale {\n constructor(public readonly definition: LocaleDefinition) {\n }\n\n /** \n * Returns the name of the locale\n * @returns The name of the locale\n */\n get name(): string {\n return this.definition.name;\n }\n\n /** \n * Translates a key in the dictionary\n * @param key The key to look up\n * @param fallback Optional fallback value if the key is not found\n * @returns The translated string or the fallbackValue if not found\n */\n translate(key: string, fallback?: string): string | undefined {\n return this.definition.dictionary?.[key] ?? fallback;\n }\n\n /**\n * Translates an enum value \n * @param enumName The name of the enum \n * @param enumValue The value of the enum to translate \n * @param fallback\n * @returns The translated string or the enum value itself if not found \n */\n\n translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined {\n let e = this.definition.enums?.[enumName];\n\n if (!e) {\n return fallback || enumValue?.toString();\n }\n\n if (enumValue === null) {\n return e['[null]'] || e['[empty]'];\n } else if (enumValue === undefined) {\n return e['[undefined]'] || e['[empty]'];\n } else if (enumValue === '') {\n return e['empty'];\n } else {\n return e[enumValue] || e['[?]'] || fallback || enumValue?.toString();\n }\n }\n\n /** \n * Translates a form validation error\n * @param errorKey The key of the error to translate\n * @param error The error object\n */\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\n const errors = this.definition?.form?.validation?.errors;\n\n if (!errors) {\n return fallbackMessage;\n }\n\n const translatorFunc = errors[errorKey] ?? errors['*'];\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\n }\n\n /** \n * Translates validation errors \n * @param errors Validation errors object\n * @returns Array of translated validation errors\n */\n translateErrors(errors: any): TranslatedValidationError[] {\n const result: TranslatedValidationError[] = [];\n for (const key in errors) {\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\n result.push({\n key: key,\n value: errors[key],\n text: this.translateError(key, errors[key])\n });\n }\n }\n\n return result;\n }\n\n /** \n * Translates the first error in the validation errors object \n * @param errors Validation errors object\n * @returns TranslatedValidationError or undefined if no errors\n */\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\n const keys = Object.keys(errors);\n if (keys.length === 0) {\n return undefined;\n }\n\n const key = keys[0];\n const value = errors[key];\n return {\n key,\n value,\n text: this.translateError(key, value, fallbackMessage)\n };\n }\n\n /**\n * Clones and extends this object and returns a new Locale (without modifying this object).\n */\n extend(definition?: Omit<LocaleDefinition, 'name' | 'rtl'>): Locale {\n return new Locale({ ...this.definition, ...definition });\n }\n\n /**\n * \n * @param date Date string or timestamp\n * @returns Formatted date string based on the locale \n */\n formatDate(date: Date | string | number, format?: string): string {\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\n }\n\n format(object: any, formatterName: string, ...params: any[]): string {\n let formatter = this.definition.formatters?.[formatterName];\n\n if (!formatter) {\n throw Error(`The formatter \"${formatterName}\" is not defined in locale ${this.definition.name}`);\n }\n\n let formatterType = typeof formatter;\n if (formatterType === 'function') {\n return (formatter as ObjectFormatter)(object, ...params);\n } else if (Array.isArray(formatter)) {\n return formatter[+object];\n } else if (formatterType == 'object' && formatter != null) {\n return (formatter as any)[object] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n }\n}\n","import { ObjectFormatter } from \"./formatter\";\n\n/** Locale dictionary */\nexport type LocaleDictionary = { [key: string]: string; };\nexport type LocaleEnums = { [enumName: string]: { [enumValue: string]: string } };\n\n/** Locale Error Translator */\nexport type LocaleValidationErrorTranslator = (error: any) => string;\n\n\n/** Locale validation error translator functions */\nexport type LocaleValidationErrorTranslators = {\n [key: string]: LocaleValidationErrorTranslator;\n};\n\n/**\n * A function to format the paging info of a table.\n * \n */\nexport type TableComponentPagingFormatter = (info: {\n /**\n * The first record in the current page.\n */\n firstRecord: number,\n\n /**\n * The last record in the current page.\n */\n lastRecord: number,\n\n /**\n * The total number of records.\n */\n totalRecords?: number,\n\n /**\n * The current page index.\n */\n currentPage: number\n}) => string;\n\n/** \n * Locale definition\n */\nexport interface LocaleDefinition {\n /** Locale name */\n readonly name: string;\n\n /** Does this locale belongs to a RTL language */\n readonly rtl?: boolean;\n\n /** Locale dictionary */\n dictionary?: LocaleDictionary;\n enums?: LocaleEnums,\n form?: {\n validation?: {\n /** Form validation error translators. */\n errors?: LocaleValidationErrorTranslators\n }\n },\n data?: {\n logicalOperators?: {\n [operator: string]: string\n }\n },\n components?: {\n table?: {\n /**\n * No records found message.\n */\n noRecords?: string;\n\n /** \n * Error message displayed when loading data fails. \n */\n loadError?: string;\n\n /**\n * A format function to format the paging info.\n */\n pagingInfo?: TableComponentPagingFormatter;\n },\n select?: {\n placeholder?: string;\n }\n },\n\n formatters?: {\n // boolean?: {\n // [booleanKind: string]: string[] // [false, true]\n // },\n // enum?: {\n // [enumName: string]: { [enumValue: string]: string }\n // }\n // custom?: {\n [formatterName: string]: ObjectFormatter | string[] | {\n [value: string]: string\n }\n // },\n // date?: {\n // calendars?: {\n // [calendar: string]: {\n // days: string[],\n // daysShort: string[],\n // months: string[],\n // monthsShort: string[],\n // }\n // }\n // };\n // }\n }\n};\n\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Locale } from './locale';\nimport { LocaleChangeEvent } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService {\n private _locales: Locale[] = [];\n private _activeLocale?: Locale;\n private _changeSubject = new Subject<LocaleChangeEvent>();\n readonly change = this._changeSubject.asObservable();\n\n constructor() {\n }\n\n /** \n * Adds a Locale \n */\n add(locale: Locale): void;\n /** Adds an array of Locales to this LocaleProvider */\n add(locales: Locale[]): void;\n add(l: any): void {\n if (l instanceof Locale) {\n this._locales.push(l);\n } else if (Array.isArray(l)) {\n l.forEach(x => this.add(x));\n } else {\n throw Error('Invalid locale');\n }\n\n if (this._locales.length == 1) {\n this._activeLocale = this._locales[0];\n }\n }\n\n /** Changes the active locale */\n set(localeName: string): void {\n const locale = this._locales.find(x => x.name === localeName);\n if (locale) {\n this._changeSubject.next({ old: this._activeLocale, new: locale });\n this._activeLocale = locale;\n return;\n }\n\n throw Error('Locale not found.');\n }\n\n /** Gets the active locale */\n get(): Locale | undefined {\n return this._activeLocale;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n\n/**\n * Pipe to translate a dictionary key into a localized string.\n * It uses the LocalizationService to fetch the translation.\n * If the translation is not found, it returns the fallback string if provided.\n */\n@Pipe({\n name: 'ng0Translate',\n standalone: true,\n pure: true\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string, fallback?: string) {\n return this._ls.get()?.translate(dictionaryKey, fallback) || dictionaryKey;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateEnum',\n standalone: true,\n pure: true\n})\nexport class TranslateEnumPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n return this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateBool',\n standalone: true,\n pure: true\n})\nexport class TranslateBooleanPipe implements PipeTransform {\n\n constructor(private localeProvider: LocalizationService) {\n }\n\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { EnvironmentInjector, inject, runInInjectionContext } from \"@angular/core\";\nimport { Locale } from \"./locale\";\nimport { LocalizationService } from \"./localization.service\";\n\n/**\n * Object formatter function type.\n * @param obj The object to format.\n * @param params Additional parameters for formatting.\n * @returns The formatted value.\n */\nexport type ObjectFormatter = (obj: any, ...params: any[]) => any;\n\n/**\n * Object formatter-like types. \n */\nexport type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;\n\n/**\n * Default object formatter function.\n * @param value The item to format.\n * @returns The formatted string.\n */\nexport function defaultFormatter(obj: any): string {\n return obj?.toString() || '';\n}\n\n/**\n * Creates a field formatter that retrieves the value of a specified field from an object.\n * @param field The field name to retrieve.\n * @returns An ObjectFormatter function.\n */\nexport function createFieldFormatter(field: string): ObjectFormatter {\n return (obj: any) => obj?.[field];\n}\n\n/**\n * Creates an index formatter that retrieves the value at a specified index from an array.\n * @param index The index to retrieve (number or boolean).\n * @returns An ObjectFormatter function.\n */\nexport function createIndexFormatter(index: number | boolean): ObjectFormatter {\n return (obj: any) => {\n if (Array.isArray(obj)) {\n return obj[+index]; // use + to cast boolean values to numbers\n }\n\n throw Error('Object is not an array');\n }\n}\n\n/**\n * Creates a number formatter.\n * @param minimumIntegerDigits \n * @param minimumFractionDigits \n * @param maximumFractionDigits \n * @param useGrouping \n * @returns An ObjectFormatter function.\n */\nexport function createNumberFormatter(\n minimumIntegerDigits?: number,\n minimumFractionDigits?: number,\n maximumFractionDigits?: number,\n useGrouping = true): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n const localeName = locale?.definition.name || 'en-US';\n\n const f = new Intl.NumberFormat(localeName, {\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n })\n\n return (n: number) => Number.isFinite(n) ? f.format(n) : '';\n}\n\n/**\n * Creates a currency formatter.\n * @param minFractions \n * @param maxFractions \n * @returns \n */\nexport function createCurrencyFormatter(minFractions = 1, maxFractions = 2): ObjectFormatter {\n return (n: number, minFractions, maxFractions) => Number.isFinite(n) ? n.toString() : '';\n}\n\n/**\n * Creates a date formatter.\n */\nexport function createDateFormatter(\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[], // zone[0]: name, zone[1]: display ('long' | 'short' | 'shortOffset' | 'longOffset' | 'narrowOffset' | 'longGeneric' | 'shortGeneric')\n calendar?: string\n): ObjectFormatter;\nexport function createDateFormatter(options?: Intl.DateTimeFormatOptions): ObjectFormatter;\nexport function createDateFormatter(options?: any): ObjectFormatter {\n let intlOptions: Intl.DateTimeFormatOptions;\n\n if (options && (typeof options === 'object')) {\n intlOptions = options;\n } else {\n intlOptions = {\n dateStyle: arguments[0],\n timeStyle: arguments[1],\n timeZone: arguments[2]?.[0],\n timeZoneName: arguments[2]?.[1],\n calendar: arguments[3]\n }\n }\n\n const locale = inject(LocalizationService, { optional: true })?.get();\n let intlFormatter: Intl.DateTimeFormat;\n\n try {\n intlFormatter = new Intl.DateTimeFormat(locale?.name, intlOptions as Intl.DateTimeFormatOptions);\n return (d: string | number | Date) => intlFormatter.format(new Date(d));\n } catch (err) {\n console.warn('Invalid date format options:', intlOptions, err);\n // Return a fallback formatter\n return (d: string | number | Date) => new Date(d).toLocaleString()\n }\n}\n\n/**\n * Creates a locale-based formatter.\n * @param locale The Locale object.\n * @param formatterName The format string in the form of \"formatterName:param1:param2:...\"\n * @returns A ValueFormatterFunction\n * @private\n */\nexport function createLocaleFormatter(formatterName: string): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n\n if (locale == null) {\n throw Error('For using locale formatters, provide a Locale object.')\n }\n\n let formatter = locale.definition.formatters?.[formatterName];\n let formatterType = typeof formatter;\n\n if (!formatter) {\n console.warn(`The formatter \"${formatterName}\" is not defined in locale ${locale.definition.name}`);\n return defaultFormatter;\n }\n\n if (formatterType === 'function') {\n return formatter as ObjectFormatter;\n } else if (Array.isArray(formatter)) {\n return (index: number | boolean) => formatter[+index];\n } else if (formatterType == 'object' && formatter != null) {\n return (value: string) => (formatter as any)[value] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n}\n\n/**\n * Creates a composite formatter that applies multiple formatters in sequence. \n * @param formatters The list of ObjectFormatterLike values to compose.\n * @returns An ObjectFormatter function.\n */\nexport function createCompositeFormatter(...formatters: ObjectFormatterLike[]): ObjectFormatter {\n const formattersFuncs = formatters.map(item => createObjectFormatter(item as any));\n return (obj: any) => formattersFuncs.reduce(\n (previous, current, index) => index == 0 ? current(obj) : current(previous)\n );\n}\n\n/**\n * Creates an ObjectFormatter from various ObjectFormatterLike types.\n * @param formatter The ObjectFormatterLike value to convert. \n * @param locale Optional locale object for locale-based formatting.\n * @param params Additional parameters for the formatter.\n * @returns An ObjectFormatter function.\n */\nexport function createObjectFormatter(formatter: ObjectFormatterLike, ...params: any[]): ObjectFormatter {\n switch (typeof formatter) {\n case 'function':\n return formatter.bind(null, ...params);\n case 'number':\n return createIndexFormatter(formatter);\n case 'string':\n switch (formatter[0]) {\n case '#':\n return createNumberFormatter(...params);\n case '$':\n return createCurrencyFormatter(...params);\n case '@':\n return createDateFormatter(...params);\n case '*':\n return createLocaleFormatter(formatter.substring(1));\n default:\n return createFieldFormatter(formatter);\n }\n case 'object':\n if (Array.isArray(formatter) && formatter.length > 0) {\n if (formatter[0] == 'C') {\n return createCompositeFormatter(formatter.slice(1))\n } else {\n return createObjectFormatter(formatter[0] as string, ...formatter.slice(1));\n }\n }\n break;\n }\n\n throw Error('invalid formatter', { cause: formatter });\n}\n\n/**\n * Creates a transform function that converts a ObjectFormatterLike value into a ObjectFormatter.\n * @param injector The EnvironmentInjector to use for dependency injection.\n * @returns A function that takes a ObjectFormatterLike and returns a ObjectFormatter.\n */\nexport function objectFormatterAttribute(injector: EnvironmentInjector): ((v: ObjectFormatterLike) => ObjectFormatter) {\n return (x: ObjectFormatterLike) => runInInjectionContext(injector, createObjectFormatter.bind(null, x));\n};\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createDateFormatter } from './formatter';\n\n@Pipe({\n name: 'ng0Date',\n standalone: true,\n pure: true\n})\nexport class DatePipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n\n transform(value: Date | string | number,\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[],\n calendar?: string): string;\n transform(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\n transform(value: Date | string | number, ...options: any[]): string {\n const formatter = runInInjectionContext(this._injector, createDateFormatter.bind(null, ...options));\n return formatter(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0Localize',\n standalone: true,\n pure: false\n})\nexport class LocalizePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string) {\n return this._ls.get()?.translate(dictionaryKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeEnum',\n standalone: true,\n pure: false\n})\nexport class LocalizeEnumPipe implements PipeTransform {\n private _recompute = true;\n private _value?: string;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n if (this._recompute) {\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0LocalizeBool',\n standalone: true,\n pure: false\n})\nexport class LocalizeBooleanPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(value: any, falseKey = 'true', trueKey: 'false') {\n return this._ls.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Locale } from './locale';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeDate',\n standalone: true,\n pure: false\n})\nexport class LocalizeDatePipe implements PipeTransform {\n private _value?: string;\n private _recompute = true;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n transform(value: number | string, format?: string) {\n if (this._recompute) {\n this._value = this._ls.get()?.formatDate(value, format);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createObjectFormatter, ObjectFormatterLike } from './formatter';\n\n/**\n * Format pipe to format objects using various formatter types.\n */\n@Pipe({\n name: 'ng0Format',\n standalone: true,\n pure: true\n})\nexport class FormatPipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n \n transform(obj: any, formatter: ObjectFormatterLike, ...params: any[]): any {\n const frmtFunc = runInInjectionContext(this._injector, createObjectFormatter.bind(null, formatter, ...params));\n return frmtFunc(obj);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslatePipe } from './translate.pipe';\nimport { TranslateEnumPipe } from './translate-enum.pipe';\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\nimport { DatePipe } from './date.pipe';\nimport { LocalizePipe } from './localize.pipe';\nimport { LocalizeEnumPipe } from './localize-enum.pipe';\nimport { LocalizeBooleanPipe } from './localize-boolean-pipe';\nimport { LocalizeDatePipe } from './localize-date.pipe';\nimport { FormatPipe } from './format.pipe';\n\nconst Declares = [\n // Pure pipes\n TranslatePipe,\n TranslateEnumPipe,\n TranslateBooleanPipe,\n DatePipe,\n FormatPipe,\n\n // Impure pipes\n LocalizePipe,\n LocalizeEnumPipe,\n LocalizeBooleanPipe,\n LocalizeDatePipe\n];\n\n@NgModule({\n imports: Declares,\n exports: Declares\n})\nexport class LocalizationModule {\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { Locale } from './locale';\n\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\n\nexport interface TranslatedValidationError {\n /** Error key */\n key: string;\n \n /** Error object */\n value: any;\n \n /** localized error text */\n text?: string;\n }\n \n export interface LocaleChangeEvent {\n old?: Locale;\n new: Locale;\n }\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/locale-definition.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/formatter.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/format.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinition } from \"./locale-definition\";\nimport { TranslatedValidationError } from \"./types\";\nimport { ObjectFormatter } from \"./formatter\";\n\n/** Locale */\nexport class Locale {\n constructor(public readonly definition: LocaleDefinition) {\n }\n\n /** \n * Returns the name of the locale\n * @returns The name of the locale\n */\n get name(): string {\n return this.definition.name;\n }\n\n /** \n * Translates a key in the dictionary\n * @param key The key to look up\n * @param fallback Optional fallback value if the key is not found\n * @returns The translated string or the fallbackValue if not found\n */\n translate(key: string, fallback?: string): string | undefined {\n return this.definition.dictionary?.[key] ?? fallback;\n }\n\n /**\n * Translates an enum value \n * @param enumName The name of the enum \n * @param enumValue The value of the enum to translate \n * @param fallback\n * @returns The translated string or the enum value itself if not found \n */\n\n translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined {\n let e = this.definition.enums?.[enumName];\n\n if (!e) {\n return fallback || enumValue?.toString();\n }\n\n if (enumValue === null) {\n return e['[null]'] || e['[empty]'];\n } else if (enumValue === undefined) {\n return e['[undefined]'] || e['[empty]'];\n } else if (enumValue === '') {\n return e['empty'];\n } else {\n return e[enumValue] || e['[?]'] || fallback || enumValue?.toString();\n }\n }\n\n /** \n * Translates a form validation error\n * @param errorKey The key of the error to translate\n * @param error The error object\n */\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\n const errors = this.definition?.form?.validation?.errors;\n\n if (!errors) {\n return fallbackMessage;\n }\n\n const translatorFunc = errors[errorKey] ?? errors['*'];\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\n }\n\n /** \n * Translates validation errors \n * @param errors Validation errors object\n * @returns Array of translated validation errors\n */\n translateErrors(errors: any): TranslatedValidationError[] {\n const result: TranslatedValidationError[] = [];\n for (const key in errors) {\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\n result.push({\n key: key,\n value: errors[key],\n text: this.translateError(key, errors[key])\n });\n }\n }\n\n return result;\n }\n\n /** \n * Translates the first error in the validation errors object \n * @param errors Validation errors object\n * @returns TranslatedValidationError or undefined if no errors\n */\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\n const keys = Object.keys(errors);\n if (keys.length === 0) {\n return undefined;\n }\n\n const key = keys[0];\n const value = errors[key];\n return {\n key,\n value,\n text: this.translateError(key, value, fallbackMessage)\n };\n }\n\n /**\n * Clones and extends this object and returns a new Locale (without modifying this object).\n */\n extend(definition?: Omit<LocaleDefinition, 'name' | 'rtl'>): Locale {\n return new Locale({ ...this.definition, ...definition });\n }\n\n /**\n * \n * @param date Date string or timestamp\n * @returns Formatted date string based on the locale \n */\n formatDate(date: Date | string | number, format?: string): string {\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\n }\n\n format(object: any, formatterName: string, ...params: any[]): string {\n let formatter = this.definition.formatters?.[formatterName];\n\n if (!formatter) {\n throw Error(`The formatter \"${formatterName}\" is not defined in locale ${this.definition.name}`);\n }\n\n let formatterType = typeof formatter;\n if (formatterType === 'function') {\n return (formatter as ObjectFormatter)(object, ...params);\n } else if (Array.isArray(formatter)) {\n return formatter[+object];\n } else if (formatterType == 'object' && formatter != null) {\n return (formatter as any)[object] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n }\n}\n","import { ObjectFormatter } from \"./formatter\";\n\n/** Locale dictionary */\nexport type LocaleDictionary = { [key: string]: string; };\nexport type LocaleEnums = { [enumName: string]: { [enumValue: string]: string } };\n\n/** Locale Error Translator */\nexport type LocaleValidationErrorTranslator = (error: any) => string;\n\n\n/** Locale validation error translator functions */\nexport type LocaleValidationErrorTranslators = {\n [key: string]: LocaleValidationErrorTranslator;\n};\n\n/**\n * A function to format the paging info of a table.\n * \n */\nexport type TableComponentPagingFormatter = (info: {\n /**\n * The first record in the current page.\n */\n firstRecord: number,\n\n /**\n * The last record in the current page.\n */\n lastRecord: number,\n\n /**\n * The total number of records.\n */\n totalRecords?: number,\n\n /**\n * The current page index.\n */\n currentPage: number\n}) => string;\n\n/** \n * Locale definition\n */\nexport interface LocaleDefinition {\n /** Locale name */\n readonly name: string;\n\n /** Does this locale belongs to a RTL language */\n readonly rtl?: boolean;\n\n /** Intl API default options */\n intl?: {\n date?: Intl.DateTimeFormatOptions\n }\n\n /** Locale dictionary */\n dictionary?: LocaleDictionary;\n enums?: LocaleEnums,\n form?: {\n validation?: {\n /** Form validation error translators. */\n errors?: LocaleValidationErrorTranslators\n }\n },\n data?: {\n logicalOperators?: {\n [operator: string]: string\n }\n },\n components?: {\n table?: {\n /**\n * No records found message.\n */\n noRecords?: string;\n\n /** \n * Error message displayed when loading data fails. \n */\n loadError?: string;\n\n /**\n * A format function to format the paging info.\n */\n pagingInfo?: TableComponentPagingFormatter;\n },\n select?: {\n placeholder?: string;\n }\n },\n\n formatters?: {\n // boolean?: {\n // [booleanKind: string]: string[] // [false, true]\n // },\n // enum?: {\n // [enumName: string]: { [enumValue: string]: string }\n // }\n // custom?: {\n [formatterName: string]: ObjectFormatter | string[] | {\n [value: string]: string\n }\n // },\n // date?: {\n // calendars?: {\n // [calendar: string]: {\n // days: string[],\n // daysShort: string[],\n // months: string[],\n // monthsShort: string[],\n // }\n // }\n // };\n // }\n }\n};\n\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Locale } from './locale';\nimport { LocaleChangeEvent } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService {\n private _locales: Locale[] = [];\n private _activeLocale?: Locale;\n private _changeSubject = new Subject<LocaleChangeEvent>();\n readonly change = this._changeSubject.asObservable();\n\n constructor() {\n }\n\n /** \n * Adds a Locale \n */\n add(locale: Locale): void;\n /** Adds an array of Locales to this LocaleProvider */\n add(locales: Locale[]): void;\n add(l: any): void {\n if (l instanceof Locale) {\n this._locales.push(l);\n } else if (Array.isArray(l)) {\n l.forEach(x => this.add(x));\n } else {\n throw Error('Invalid locale');\n }\n\n if (this._locales.length == 1) {\n this._activeLocale = this._locales[0];\n }\n }\n\n /** Changes the active locale */\n set(localeName: string): void {\n const locale = this._locales.find(x => x.name === localeName);\n if (locale) {\n this._changeSubject.next({ old: this._activeLocale, new: locale });\n this._activeLocale = locale;\n return;\n }\n\n throw Error('Locale not found.');\n }\n\n /** Gets the active locale */\n get(): Locale | undefined {\n return this._activeLocale;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n\n/**\n * Pipe to translate a dictionary key into a localized string.\n * It uses the LocalizationService to fetch the translation.\n * If the translation is not found, it returns the fallback string if provided.\n */\n@Pipe({\n name: 'ng0Translate',\n standalone: true,\n pure: true\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string, fallback?: string) {\n return this._ls.get()?.translate(dictionaryKey, fallback) || dictionaryKey;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateEnum',\n standalone: true,\n pure: true\n})\nexport class TranslateEnumPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n return this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateBool',\n standalone: true,\n pure: true\n})\nexport class TranslateBooleanPipe implements PipeTransform {\n\n constructor(private localeProvider: LocalizationService) {\n }\n\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { EnvironmentInjector, inject, runInInjectionContext } from \"@angular/core\";\nimport { Locale } from \"./locale\";\nimport { LocalizationService } from \"./localization.service\";\n\n/**\n * Object formatter function type.\n * @param obj The object to format.\n * @param params Additional parameters for formatting.\n * @returns The formatted value.\n */\nexport type ObjectFormatter = (obj: any, ...params: any[]) => any;\n\n/**\n * Object formatter-like types. \n */\nexport type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;\n\n/**\n * Default object formatter function.\n * @param value The item to format.\n * @returns The formatted string.\n */\nexport function defaultFormatter(obj: any): string {\n return obj?.toString() || '';\n}\n\n/**\n * Creates a field formatter that retrieves the value of a specified field from an object.\n * @param field The field name to retrieve. Supports nested fields using dot notation (e.g., \"user.name\").\n * @returns An ObjectFormatter function.\n */\nexport function createFieldFormatter(field: string): ObjectFormatter {\n var subFields = field.split('.');\n // let value = row[subFields[0]];\n // for (let i = 1; i < subFields.length; i++) {\n // if (value == null) break;\n // value = value[subFields[i]];\n // }\n\n // return value;\n\n return (obj: any) => {\n let value = obj?.[subFields[0]];\n for (let i = 1; i < subFields.length; i++) {\n if (value == null) break;\n value = value?.[subFields[i]];\n }\n return value;\n }\n}\n\n/**\n * Creates an index formatter that retrieves the value at a specified index from an array.\n * @param index The index to retrieve (number or boolean).\n * @returns An ObjectFormatter function.\n */\nexport function createIndexFormatter(index: number | boolean): ObjectFormatter {\n return (obj: any) => {\n if (Array.isArray(obj)) {\n return obj[+index]; // use + to cast boolean values to numbers\n }\n\n throw Error('Object is not an array');\n }\n}\n\n/**\n * Creates a number formatter.\n * @param minimumIntegerDigits \n * @param minimumFractionDigits \n * @param maximumFractionDigits \n * @param useGrouping \n * @returns An ObjectFormatter function.\n */\nexport function createNumberFormatter(\n minimumIntegerDigits?: number,\n minimumFractionDigits?: number,\n maximumFractionDigits?: number,\n useGrouping = true): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n const localeName = locale?.definition.name || 'en-US';\n\n const f = new Intl.NumberFormat(localeName, {\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n })\n\n return (n: number) => Number.isFinite(n) ? f.format(n) : '';\n}\n\n/**\n * Creates a currency formatter.\n * @param minFractions \n * @param maxFractions \n * @returns \n */\nexport function createCurrencyFormatter(minFractions = 1, maxFractions = 2): ObjectFormatter {\n return (n: number, minFractions, maxFractions) => Number.isFinite(n) ? n.toString() : '';\n}\n\n/**\n * Creates a date formatter.\n */\nexport function createDateFormatter(\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[], // zone[0]: name, zone[1]: display ('long' | 'short' | 'shortOffset' | 'longOffset' | 'narrowOffset' | 'longGeneric' | 'shortGeneric')\n calendar?: string\n): ObjectFormatter;\nexport function createDateFormatter(options?: Intl.DateTimeFormatOptions): ObjectFormatter;\nexport function createDateFormatter(options?: any): ObjectFormatter {\n const locale = inject(LocalizationService, { optional: true })?.get();\n let intlOptions: Intl.DateTimeFormatOptions;\n\n if (arguments.length == 0 || (typeof arguments[0] == 'object')) {\n intlOptions = { ...locale?.definition.intl?.date, ...options };\n } else {\n intlOptions = {\n dateStyle: arguments[0],\n timeStyle: arguments[1],\n timeZone: arguments[2]?.[0],\n timeZoneName: arguments[2]?.[1],\n calendar: arguments[3],\n }\n }\n\n let intlFormatter: Intl.DateTimeFormat;\n\n try {\n intlFormatter = new Intl.DateTimeFormat(locale?.name, intlOptions as Intl.DateTimeFormatOptions);\n return (d: string | number | Date) => intlFormatter.format(new Date(d));\n } catch (err) {\n console.warn('Date formatter options are invalid. A fallback formatter will be used.', intlOptions, err);\n // Return a fallback formatter\n return (d: string | number | Date) => new Date(d).toLocaleString()\n }\n}\n\n/**\n * Creates a locale-based formatter.\n * @param locale The Locale object.\n * @param formatterName The format string in the form of \"formatterName:param1:param2:...\"\n * @returns A ValueFormatterFunction\n * @private\n */\nexport function createLocaleFormatter(formatterName: string): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n\n if (locale == null) {\n throw Error('For using locale formatters, provide a Locale object.')\n }\n\n let formatter = locale.definition.formatters?.[formatterName];\n let formatterType = typeof formatter;\n\n if (!formatter) {\n console.warn(`The formatter \"${formatterName}\" is not defined in locale ${locale.definition.name}`);\n return defaultFormatter;\n }\n\n if (formatterType === 'function') {\n return formatter as ObjectFormatter;\n } else if (Array.isArray(formatter)) {\n return (index: number | boolean) => formatter[+index];\n } else if (formatterType == 'object' && formatter != null) {\n return (value: string) => (formatter as any)[value] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n}\n\n/**\n * Creates a composite formatter that applies multiple formatters in sequence. \n * @param formatters The list of ObjectFormatterLike values to compose.\n * @returns An ObjectFormatter function.\n */\nexport function createCompositeFormatter(...formatters: ObjectFormatterLike[]): ObjectFormatter {\n if (!Array.isArray(formatters) || formatters.length == 0) {\n throw Error('Composite formatter requires a non-empty array of formatters');\n }\n\n const formattersFuncs = formatters.map(item => createObjectFormatter(item as any));\n\n return (obj: any) => {\n let result = formattersFuncs[0](obj);\n for (let index = 1; index < formatters.length; index++) {\n result = formattersFuncs[index](result);\n }\n return result;\n }\n}\n\n/**\n * Creates an ObjectFormatter from various ObjectFormatterLike types.\n * @param formatter The ObjectFormatterLike value to convert. \n * @param locale Optional locale object for locale-based formatting.\n * @param params Additional parameters for the formatter.\n * @returns An ObjectFormatter function.\n */\nexport function createObjectFormatter(formatter: ObjectFormatterLike, ...params: any[]): ObjectFormatter {\n switch (typeof formatter) {\n case 'function':\n return formatter.bind(null, ...params);\n case 'number':\n return createIndexFormatter(formatter);\n case 'string':\n switch (formatter[0]) {\n case '#':\n return createNumberFormatter(...params);\n case '$':\n return createCurrencyFormatter(...params);\n case '@':\n return createDateFormatter(...params);\n case '*':\n return createLocaleFormatter(formatter.substring(1));\n default:\n return createFieldFormatter(formatter);\n }\n case 'object':\n if (Array.isArray(formatter) && formatter.length > 0) {\n const formatterSymbols = ['#', '$', '@', '*'];\n\n if (formatterSymbols.includes(formatter[0])) {\n return createObjectFormatter(formatter[0], ...formatter.slice(1));\n } else {\n return createCompositeFormatter(...formatter)\n }\n }\n break;\n }\n\n throw Error('invalid formatter', { cause: formatter });\n}\n\n/**\n * Creates a transform function that converts a ObjectFormatterLike value into a ObjectFormatter.\n * @param injector The EnvironmentInjector to use for dependency injection.\n * @returns A function that takes a ObjectFormatterLike and returns a ObjectFormatter.\n */\nexport function objectFormatterAttribute(injector: EnvironmentInjector): ((v: ObjectFormatterLike) => ObjectFormatter) {\n return (x: ObjectFormatterLike) => runInInjectionContext(injector, createObjectFormatter.bind(null, x));\n};\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createDateFormatter } from './formatter';\n\n@Pipe({\n name: 'ng0Date',\n standalone: true,\n pure: true\n})\nexport class DatePipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n\n transform(value: Date | string | number,\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[],\n calendar?: string): string;\n transform(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\n transform(value: Date | string | number, ...options: any[]): string {\n const formatter = runInInjectionContext(this._injector, createDateFormatter.bind(null, ...options));\n return formatter(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0Localize',\n standalone: true,\n pure: false\n})\nexport class LocalizePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string) {\n return this._ls.get()?.translate(dictionaryKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeEnum',\n standalone: true,\n pure: false\n})\nexport class LocalizeEnumPipe implements PipeTransform {\n private _recompute = true;\n private _value?: string;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n if (this._recompute) {\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0LocalizeBool',\n standalone: true,\n pure: false\n})\nexport class LocalizeBooleanPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(value: any, falseKey = 'true', trueKey: 'false') {\n return this._ls.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Locale } from './locale';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeDate',\n standalone: true,\n pure: false\n})\nexport class LocalizeDatePipe implements PipeTransform {\n private _value?: string;\n private _recompute = true;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n transform(value: number | string, format?: string) {\n if (this._recompute) {\n this._value = this._ls.get()?.formatDate(value, format);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createObjectFormatter, ObjectFormatterLike } from './formatter';\n\n/**\n * Format pipe to format objects using various formatter types.\n */\n@Pipe({\n name: 'ng0Format',\n standalone: true,\n pure: true\n})\nexport class FormatPipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n \n transform(obj: any, formatter: ObjectFormatterLike, ...params: any[]): any {\n const frmtFunc = runInInjectionContext(this._injector, createObjectFormatter.bind(null, formatter, ...params));\n return frmtFunc(obj);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslatePipe } from './translate.pipe';\nimport { TranslateEnumPipe } from './translate-enum.pipe';\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\nimport { DatePipe } from './date.pipe';\nimport { LocalizePipe } from './localize.pipe';\nimport { LocalizeEnumPipe } from './localize-enum.pipe';\nimport { LocalizeBooleanPipe } from './localize-boolean-pipe';\nimport { LocalizeDatePipe } from './localize-date.pipe';\nimport { FormatPipe } from './format.pipe';\n\nconst Declares = [\n // Pure pipes\n TranslatePipe,\n TranslateEnumPipe,\n TranslateBooleanPipe,\n DatePipe,\n FormatPipe,\n\n // Impure pipes\n LocalizePipe,\n LocalizeEnumPipe,\n LocalizeBooleanPipe,\n LocalizeDatePipe\n];\n\n@NgModule({\n imports: Declares,\n exports: Declares\n})\nexport class LocalizationModule {\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { Locale } from './locale';\n\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\n\nexport interface TranslatedValidationError {\n /** Error key */\n key: string;\n \n /** Error object */\n value: any;\n \n /** localized error text */\n text?: string;\n }\n \n export interface LocaleChangeEvent {\n old?: Locale;\n new: Locale;\n }\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ /**
4
+ * @private
5
+ */
6
+ declare class Filter1Icon {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<Filter1Icon, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<Filter1Icon, "ng0-icon-filter1", never, {}, {}, never, never, true, never>;
9
+ }
10
+
11
+ export { Filter1Icon };
@@ -21,7 +21,7 @@ type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;
21
21
  declare function defaultFormatter(obj: any): string;
22
22
  /**
23
23
  * Creates a field formatter that retrieves the value of a specified field from an object.
24
- * @param field The field name to retrieve.
24
+ * @param field The field name to retrieve. Supports nested fields using dot notation (e.g., "user.name").
25
25
  * @returns An ObjectFormatter function.
26
26
  */
27
27
  declare function createFieldFormatter(field: string): ObjectFormatter;
@@ -127,6 +127,10 @@ interface LocaleDefinition {
127
127
  readonly name: string;
128
128
  /** Does this locale belongs to a RTL language */
129
129
  readonly rtl?: boolean;
130
+ /** Intl API default options */
131
+ intl?: {
132
+ date?: Intl.DateTimeFormatOptions;
133
+ };
130
134
  /** Locale dictionary */
131
135
  dictionary?: LocaleDictionary;
132
136
  enums?: LocaleEnums;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bootkit/ng0",
3
- "version": "0.0.0-alpha.50",
3
+ "version": "0.0.0-alpha.52",
4
4
  "description": "Angular+Bootstrap Component Library",
5
5
  "homepage": "https://bootkitlib.github.io/",
6
6
  "author": "BootKit",
@@ -59,6 +59,10 @@
59
59
  "types": "./http/index.d.ts",
60
60
  "default": "./fesm2022/bootkit-ng0-http.mjs"
61
61
  },
62
+ "./icons": {
63
+ "types": "./icons/index.d.ts",
64
+ "default": "./fesm2022/bootkit-ng0-icons.mjs"
65
+ },
62
66
  "./localization": {
63
67
  "types": "./localization/index.d.ts",
64
68
  "default": "./fesm2022/bootkit-ng0-localization.mjs"