@bravobit/bb-foundation 0.40.1 → 0.40.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +3 -1
  2. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +3 -3
  3. package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  4. package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +2 -2
  5. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +9 -4
  6. package/esm2022/localize/lib/localizations/papiamento.localization.mjs +63 -0
  7. package/esm2022/localize/public_api.mjs +2 -1
  8. package/esm2022/select/lib/select/select.component.mjs +6 -3
  9. package/esm2022/select/lib/select-multi-label.directive.mjs +17 -0
  10. package/esm2022/select/lib/select.module.mjs +10 -5
  11. package/esm2022/select/public_api.mjs +2 -1
  12. package/fesm2022/bravobit-bb-foundation-collections.mjs +2 -2
  13. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  14. package/fesm2022/bravobit-bb-foundation-dialog.mjs +11 -6
  15. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  16. package/fesm2022/bravobit-bb-foundation-localize.mjs +64 -1
  17. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  18. package/fesm2022/bravobit-bb-foundation-select.mjs +29 -7
  19. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  20. package/localize/lib/localizations/papiamento.localization.d.ts +62 -0
  21. package/localize/public_api.d.ts +1 -0
  22. package/package.json +35 -35
  23. package/select/lib/select/select.component.d.ts +2 -1
  24. package/select/lib/select-multi-label.directive.d.ts +8 -0
  25. package/select/lib/select.module.d.ts +2 -1
  26. package/select/public_api.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-localize.mjs","sources":["../../../projects/bb-foundation/localize/src/lib/interfaces/options.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/interfaces/functions.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/functions/lowercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/uppercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/date.function.ts","../../../projects/bb-foundation/localize/src/lib/localizations/english.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/dutch.localization.ts","../../../projects/bb-foundation/localize/src/lib/handlers/missing.handler.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.data.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.context.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.class.ts","../../../projects/bb-foundation/localize/src/lib/transforms/abstract.transform.ts","../../../projects/bb-foundation/localize/src/lib/localize.service.ts","../../../projects/bb-foundation/localize/src/lib/localize.tokens.ts","../../../projects/bb-foundation/localize/src/lib/transforms/plural.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/interpolate.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/reference.transform.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-template.directive.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.html","../../../projects/bb-foundation/localize/src/lib/localize.pipe.ts","../../../projects/bb-foundation/localize/src/lib/localize.config.ts","../../../projects/bb-foundation/localize/src/lib/localize.module.ts","../../../projects/bb-foundation/localize/src/bravobit-bb-foundation-localize.ts"],"sourcesContent":["//\n// These are the options that the user has\n// when localizing the token.\n//\n\nexport interface LocalizeOptions {\n optional?: boolean;\n dictionary?: string;\n data?: LocalizeOptionsData;\n}\n\n//\n// This is the data that the user can interpolate\n// in the localized strings.\n//\n\nexport interface LocalizeOptionsData {\n [token: string]: string | number | boolean | Date;\n}\n\n//\n// These are the params that the user can set\n// when he wants to localize a token (with the\n// optional options).\n//\n\nexport interface LocalizeParams extends LocalizeOptions {\n token: string;\n}\n","//\n// This is the interface that handles the localize functions.\n// every localize function needs to conform to this interface.\n// The interface allows the user to transform a token into\n// another value.\n//\n\nexport interface LocalizeFunction {\n\n keyword(): string;\n\n transform(value: string, locale?: string): string;\n\n}\n\n//\n// This is the interface that handles the map\n// of all the localize functions.\n//\n\nexport interface LocalizeFunctionMap {\n [keyword: string]: LocalizeFunction;\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a lowercase variant of the value.\n//\n\nexport class LocalizeLowercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'lowercase';\n }\n\n transform(value: string) {\n return (value ?? '').toLowerCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a uppercase variant of the value.\n//\n\nexport class LocalizeUppercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'uppercase';\n }\n\n transform(value: string) {\n return (value ?? '').toUpperCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\nimport {formatDate} from '@angular/common';\n\n//\n// This function transform the value\n// to a localized date.\n//\n\nexport class LocalizeDateFunction implements LocalizeFunction {\n\n keyword() {\n return 'date';\n }\n\n transform(value: string, locale?: string) {\n const date = new Date(value);\n\n if (date.toString() === 'Invalid Date') {\n return '?';\n }\n\n return formatDate(date, 'longDate', locale);\n }\n\n}\n","export const extraEnglishDictionary = {\n 'form-control-errors': {\n 'unknown': 'The field has an unknown error.',\n 'required': 'This field is required.',\n 'pattern': 'Invalid format.',\n 'email': 'The field does not match a valid email address.',\n 'emailTaken': 'The e-mail is already taken.',\n 'passwordMatch': 'The passwords don\\'t match.',\n 'confirm': 'The field does not match.',\n 'fullNumber': 'The field should be a full number.',\n 'min': 'Minimum amount should be {{min}}.',\n 'max': 'Maximum amount should be {{max}}.',\n 'invalidFileType': 'The file type is not allowed.',\n 'maxFileSize': 'The file has exceed the maximum amount of {{maxSize}}.',\n 'minDate': 'The first accepted date is {{date|date}}.',\n 'maxDate': 'The last accepted date is {{date|date}}.',\n 'invalidDate': 'The field contains an invalid date.',\n 'minlength': 'Expected a minimum of {{requiredLength}} characters but got {{actualLength}} characters.',\n 'maxlength': 'Expected a maximum of {{requiredLength}} characters but got {{actualLength}} characters.'\n },\n 'select': {\n 'not_found_text': 'No items found',\n 'clear_all_text': 'Clear all',\n 'loading_text': 'Loading...',\n 'type_to_search_text': 'Typ to search',\n 'add_tag_text': 'Add tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Choose a file',\n 'choose_file_text': '@element(label) or drag and drop files here'\n },\n 'collection': {\n 'search_label': 'Search...',\n 'showing_label': 'Showing @element(start) to @element(end) of @element(total) results',\n 'no_results_label': 'There are no results for @element(query). Try a different search term to find results...',\n 'empty_label': 'There are no results...',\n 'error_label': 'It seems that an error occurred while using the application.'\n },\n 'tables': {\n 'search': 'Search...',\n 'loading': 'Loading...',\n 'empty': 'There is nothing to find here.',\n 'page': 'page',\n 'error_datasource': 'No data source was provided.',\n 'error_unauthorized': 'You need to be authenticated to view this data.',\n 'error_forbidden': 'You do not have access to view this data.',\n 'error_not_found': 'The data was not found.',\n 'error_server': 'A server error occurred while fetching data from the server.',\n 'error_down': 'It looks like the server is down.',\n 'error_unknown': 'A unknown error occurred.'\n },\n 'file-picker': {\n 'choose': 'Choose file',\n 'remove': 'Remove file',\n 'drop': 'or drag and drop file here'\n },\n 'times': {\n 'tomorrow_at': 'Tomorrow at {{date}}',\n 'today_at': 'Today at {{date}}',\n 'yesterday_at': 'Yesterday at {{date}}'\n }\n};\n","export const extraDutchDictionary = {\n 'form-control-errors': {\n 'unknown': 'Het veld heeft een onbekende fout.',\n 'required': 'Dit veld is verplicht.',\n 'pattern': 'Ongeldig formaat.',\n 'email': 'Het veld komt niet overeen met een geldig e-mailadres.',\n 'emailTaken': 'Het e-mailadres is al bezet.',\n 'passwordMatch': 'De wachtwoorden komen niet overeen.',\n 'confirm': 'Het veld komt niet overeen.',\n 'fullNumber': 'Het veld moet een volledig getal zijn.',\n 'min': 'Minimum hoeveelheid moet {{min}} zijn.',\n 'max': 'Maximum hoeveelheid moet {{max}} zijn.',\n 'invalidFileType': 'Het type bestand is niet toegestaan.',\n 'maxFileSize': 'Het bestand heeft de maximum hoeveelheid van {{maxSize}} overschreden.',\n 'minDate': 'De eerst mogelijke datum is {{date|date}}.',\n 'maxDate': 'De laatst mogelijke datum is {{date|date}}.',\n 'invalidDate': 'Het veld bevat een ongeldige datum.',\n 'minlength': 'Verwachtte minimaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.',\n 'maxlength': 'Verwachtte maximaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.'\n },\n 'select': {\n 'not_found_text': 'Geen items gevonden',\n 'clear_all_text': 'Wis alles',\n 'loading_text': 'Aan het laden...',\n 'type_to_search_text': 'Typ om te zoeken',\n 'add_tag_text': 'Tag toevoegen'\n },\n 'multi-file-control': {\n 'choose_file': 'Kies een bestand',\n 'choose_file_text': '@element(label) of sleep de bestanden hiernaartoe'\n },\n 'collection': {\n 'search_label': 'Zoeken...',\n 'showing_label': 'Toont @element(start) tot @element(end) van @element(total) resultaten',\n 'no_results_label': 'Er zijn geen resultaten voor @element(query). Probeer een andere zoekterm om resultaten te vinden...',\n 'empty_label': 'Er zijn geen resultaten...',\n 'error_label': 'Het lijkt erop dat een fout is opgetreden tijdens het gebruiken van de applicatie.'\n },\n 'tables': {\n 'search': 'Zoeken...',\n 'loading': 'Aan het laden...',\n 'empty': 'Er is hier niets te vinden.',\n 'page': 'pagina',\n 'error_datasource': 'Er is geen gegevensbron verstrekt.',\n 'error_unauthorized': 'U moet ingelogd zijn om deze gegevens te bekijken.',\n 'error_forbidden': 'U hebt geen toegang om deze gegevens te bekijken.',\n 'error_not_found': 'De gegevens zijn niet gevonden.',\n 'error_server': 'Er is een serverfout opgetreden bij het ophalen van gegevens van de server.',\n 'error_down': 'Het lijkt erop dat de server down is.',\n 'error_unknown': 'Er is een onbekende fout opgetreden bij het ophalen van gegevens van de server.'\n },\n 'file-picker': {\n 'choose': 'Kies bestand',\n 'remove': 'Verwijder bestand',\n 'drop': 'of sleep het bestand hiernaartoe'\n },\n 'times': {\n 'tomorrow_at': 'Morgen om {{date}}',\n 'today_at': 'Vandaag om {{date}}',\n 'yesterday_at': 'Gisteren om {{date}}'\n }\n};\n","import {LocalizeHandlerProtocol} from '../interfaces/handlers.interfaces';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\n\nexport class LocalizeMissingHandler implements LocalizeHandlerProtocol {\n\n handle(params: LocalizeParams) {\n // Log to the console when the token was not found\n // if the user did not mark it as optional.\n if (!params?.optional) {\n this.log(`The token with name: \"${params?.token}\" was not found.`);\n }\n\n // Return the default token back.\n return params?.token ?? null;\n }\n\n private log = (message: string) => console?.warn?.(message);\n\n}\n","export type LocalizeDictionaryDataValues = { [key: string]: string | LocalizeDictionaryDataValues };\n\nexport class LocalizeDictionaryData {\n\n constructor(public data: LocalizeDictionaryDataValues) {\n }\n\n}\n","export class LocalizeDictionaryContext {\n\n regexp: RegExp = /^.*$/;\n\n pattern(regexp: RegExp) {\n this.regexp = regexp;\n return this;\n }\n\n matches(value: string | string[]) {\n const formatted = this.formatValue(value);\n const regex = (formatted ?? '')\n .replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n .replace(/\\\\\\*/g, '.*');\n return this.pattern(new RegExp(`^${regex}$`));\n }\n\n group(value: string | string[]) {\n const formatted = this.formatValue(value);\n return this.matches([formatted, '*']);\n }\n\n private formatValue(value: string | string[]) {\n return Array.isArray(value)\n ? value.filter(item => !!item).join('.')\n : value;\n }\n\n}\n","import {LocalizeDictionaryDataValues} from './dictionary.data';\nimport {LocalizeDictionaryContext} from './dictionary.context';\nimport {Localize} from '../localize.service';\n\ndeclare let ngDevMode;\n\nexport class LocalizeDictionary {\n\n private readonly _data: Record<string, string> = this.formatData(this._dataValues);\n\n constructor(private _id: string,\n private _locale: string,\n private _supported: string[],\n private _dataValues: LocalizeDictionaryDataValues,\n private _localize: Localize) {\n }\n\n get id() {\n return this._id ?? null;\n }\n\n get locale() {\n return this._locale ?? null;\n }\n\n get supported() {\n return this._supported ?? [];\n }\n\n get(token: string | string[]) {\n const key = Array.isArray(token) ? token.join('.') : token;\n return this._data?.[key] ?? null;\n }\n\n has(token: string | string[]) {\n return !!this.get(token);\n }\n\n all() {\n return this.some(context => context);\n }\n\n some(callback: (context: LocalizeDictionaryContext) => LocalizeDictionaryContext) {\n const defaultContext = new LocalizeDictionaryContext();\n const context = !!callback ? callback(defaultContext) : defaultContext;\n\n return Object.keys(this._data ?? {})\n .filter(key => context.regexp.test(key))\n .reduce((previous, current) => ([\n ...previous,\n {token: current, value: this.get(current)}\n ]), <{ token: string, value: string }[]>[]);\n }\n\n async compare(to: string | string[]) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode)) {\n const dictionaryIds = (Array.isArray(to) ? to : [to]);\n const dictionaries: LocalizeDictionary[] = [];\n for (const dictionaryId of dictionaryIds) {\n const dictionary = await this._localize.load(dictionaryId);\n dictionaries.push(dictionary);\n }\n\n const warnings = [];\n\n const items = this.all();\n for (const item of items) {\n for (const dictionary of dictionaries) {\n if (!dictionary.has(item?.token)) {\n warnings.push({dictionary: dictionary?.id, value: item?.token});\n }\n }\n }\n\n for (const dictionary of dictionaries) {\n const items = dictionary.all();\n for (const item of items) {\n if (!this.has(item?.token)) {\n warnings.push({dictionary: this.id, value: item?.token});\n }\n }\n }\n\n const compareDictionaryIds = dictionaries.map(dictionary => dictionary?.id).join(', ');\n for (const warning of warnings) {\n console?.warn?.(`Dictionary \"${warning.dictionary}\" is missing token \"${warning.value}\"`);\n }\n console?.warn?.(`Total of ${warnings.length} warning(s) found while comparing \"${this.id}\" -> [${compareDictionaryIds}].`);\n }\n }\n\n count() {\n return Object.keys(this._data ?? {}).length;\n }\n\n private formatData(data: LocalizeDictionaryDataValues, scope: string | null = null) {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current];\n if (typeof value === 'object' && value !== null) {\n const reformatted = this.formatData(value, current);\n return {...previous, ...reformatted};\n }\n\n const token = [scope, current].filter(item => !!item).join('.');\n if (previous[token] && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.(`Duplicate key \"${token}\" was found, please verify your translation files.`);\n }\n\n return {...previous, [token]: value};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {Localize} from '../localize.service';\n\nexport abstract class LocalizeTransform {\n\n abstract execute(value: string, data: LocalizeParams['data'], localize: Localize): string;\n\n protected getMatches(value: string, substitutions: [string, string]) {\n // Validate our value exists, else return zero matches.\n if (value === undefined || value === null) {\n return [];\n }\n\n // Get the matching substitutions.\n const {start, end} = this.getSubstitutions(substitutions);\n\n // Compose a regex that will find the matches.\n const regex = new RegExp(`${start}([^${end}]+)${end}`, 'g');\n\n // Execute the regex to find matches.\n let match = regex.exec(value);\n const matches: { match: string, token: string }[] = [];\n\n while (match !== null) {\n matches.push({match: match[0], token: match[1]});\n match = regex.exec(value);\n }\n\n // Return the processed value.\n return matches.filter(item => !!item);\n }\n\n protected getSubstitutions(value: [string, string]) {\n // Escape both substitutions so that they can be used.\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n const start = value[0].replace(escape, '\\\\$&');\n const end = value[1].replace(escape, '\\\\$&');\n\n // Return the substitutions.\n return {start, end};\n }\n\n}\n","import {LOCALIZE_CONFIG, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {LocalizeConfig, LocalizeConfigLanguage} from './interfaces/config.interfaces';\nimport {LocalizeDictionaryData} from './dictionary/dictionary.data';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDictionary} from './dictionary/dictionary.class';\nimport {LocalizeParams} from './interfaces/options.interfaces';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {Languages, WINDOW} from '@bravobit/bb-foundation';\nimport {Storage} from '@bravobit/bb-foundation/storage';\nimport {DOCUMENT} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Localize {\n\n // Readonly data.\n private readonly _storageToken: string = this._config?.storageToken ?? 'bb-language-dictionary-id';\n private readonly _availableLanguages: LocalizeConfigLanguage[] = this?._config?.languages ?? [];\n private readonly _bestMatchingLanguage: LocalizeConfigLanguage = this.retrieveBestMatchingLanguage();\n\n private readonly _loadedDictionaries: Map<string, LocalizeDictionary> = new Map<string, LocalizeDictionary>();\n\n // Current dictionary.\n private _current$ = new BehaviorSubject<LocalizeDictionary | null>(null);\n\n // State changes.\n dictionaryChanges$ = this._current$.asObservable();\n\n constructor(private _storage: Storage,\n private _languages: Languages,\n @Optional() @Inject(WINDOW) private _window?: Window,\n @Optional() @Inject(DOCUMENT) private _document?: Document,\n @Optional() @Inject(LOCALIZE_CONFIG) private _config?: LocalizeConfig,\n @Optional() @Inject(LOCALIZE_TRANSFORM) private _transforms?: LocalizeTransform[],\n @Optional() @Inject(LOCALIZE_MISSING_HANDLER) private _missingHandler?: LocalizeMissingHandler) {\n this.renderDocumentLanguage();\n }\n\n get languages() {\n return this._availableLanguages ?? [];\n }\n\n get current() {\n return this._current$.getValue();\n }\n\n async load(id: string) {\n if (id === null || id === undefined) {\n throw new Error(`Cannot load language with id: \"${id}\".`);\n }\n\n if (this._loadedDictionaries.has(id)) {\n return this._loadedDictionaries.get(id);\n }\n\n const language = this.languages?.find(language => language?.id === id);\n if (!language || !language?.data) {\n console?.warn?.(`No language was found with id: \"${id}\"; Defaulting to first available language.`);\n const languageId = this.languages?.[0]?.id ?? null;\n return this.load(languageId);\n }\n\n const dictionaryDataValues = await language?.data?.();\n const dictionary = this.createDictionary(dictionaryDataValues, language);\n this._loadedDictionaries.set(id, dictionary);\n return dictionary;\n }\n\n async loadAllLanguages() {\n for (const language of this.languages) {\n await this.load(language?.id);\n }\n }\n\n async switch(id: string, options?: { cache?: boolean, reload?: boolean }) {\n const dictionary = await this.load(id);\n this._current$.next(dictionary);\n\n const cache = options?.cache ?? true;\n if (cache) {\n this._storage.cookie.set<string>(this._storageToken, dictionary?.id, {});\n }\n\n const reload = options?.reload ?? false;\n if (reload) {\n this._window?.location?.reload?.();\n }\n\n return dictionary;\n }\n\n select(id: string) {\n if (!this._loadedDictionaries.has(id)) {\n throw new Error(`Dictionary with id: \"${id}\" not loaded; Load dictionary first before using .select(:id).`);\n }\n return this._loadedDictionaries.get(id);\n }\n\n initialize() {\n return async () => {\n await this.switch(this._bestMatchingLanguage?.id, {reload: false, cache: false});\n return this.compareDictionaries();\n };\n }\n\n clear() {\n this._storage.cookie.remove(this._storageToken);\n }\n\n transform(value: string, data: LocalizeParams['data'] = {}) {\n return (this._transforms ?? []).reduce((previous, current) => {\n return current.execute(previous, data, this);\n }, value);\n }\n\n translate(tokenOrParams: string | LocalizeParams) {\n // 1. Convert to the params.\n const params = this.convertToParams(tokenOrParams);\n\n // 2. Try to find the translation in the dictionary.\n const dictionary = this.getDictionary(params?.dictionary);\n const searchResult = !!dictionary ? dictionary.get(params?.token) : null;\n\n // 3. Verify the translation was found.\n if (!searchResult) {\n if (!this._missingHandler) {\n return null;\n }\n return this._missingHandler.handle(params);\n }\n\n return this.transform(searchResult, params?.data);\n }\n\n private retrieveBestMatchingLanguage() {\n return this.getLanguageFromStorage()\n ?? this.getBestBrowserMatchLanguage()\n ?? this._availableLanguages?.[0];\n }\n\n private getLanguageFromStorage() {\n // Get id from the storage.\n const id = this._storage.cookie.get<string>(this._storageToken);\n\n // Return the language based on the storage id.\n return this._availableLanguages.find(item => item?.id === id);\n }\n\n private getBestBrowserMatchLanguage() {\n // Loop through all browser languages and return the\n // best matching language.\n return this._languages.all.map(({code, region}) => {\n const languageCode = [code, region].filter(data => !!data).join('-');\n\n return this._availableLanguages.find(item => item?.supported?.includes(languageCode));\n }).filter(item => !!item).find((_, index) => index === 0);\n }\n\n private createDictionary(data: LocalizeDictionaryData, language: LocalizeConfigLanguage) {\n return new LocalizeDictionary(language?.id, language?.locale, language?.supported, data?.data, this);\n }\n\n private getDictionary(id: string | null) {\n if (id === null || id === undefined) {\n return this.current;\n }\n return this.select(id);\n }\n\n private renderDocumentLanguage() {\n const element = this._document?.documentElement;\n if (!element) {\n return;\n }\n\n element.lang = this._bestMatchingLanguage?.supported?.[0] ?? this._bestMatchingLanguage?.locale;\n }\n\n private async compareDictionaries() {\n const compareDictionaries = this._config.compareDictionaries ?? false;\n if (!compareDictionaries || !this.current) {\n return;\n }\n\n const languageIds = (this.languages ?? [])\n ?.filter(language => language?.id !== this.current?.id)\n ?.map(language => language?.id);\n\n return await this.current.compare(languageIds);\n }\n\n private convertToParams = (tokenOrParams: string | LocalizeParams) => {\n if (typeof tokenOrParams !== 'string') {\n // Destruct the params from the object.\n const {token, optional, dictionary, data} = tokenOrParams;\n\n // Make sure all parameters are valid\n // by type safe adding them.\n return {token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {}};\n }\n\n // If the parameter is a string fill in the blanks.\n return {token: tokenOrParams, optional: false, dictionary: null, data: {}};\n };\n\n}\n","import {distinctUntilChanged, map, startWith} from 'rxjs/operators';\nimport {LocalizeFunction} from './interfaces/functions.interfaces';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\nimport {Observable, of} from 'rxjs';\n\nexport const LOCALIZE_FUNCTION: InjectionToken<LocalizeFunction[]> = new InjectionToken('localize function');\nexport const LOCALIZE_CONFIG: InjectionToken<LocalizeConfig> = new InjectionToken('localize config');\nexport const LOCALIZE_TRANSFORM: InjectionToken<LocalizeTransform[]> = new InjectionToken('localize transform');\nexport const LOCALIZE_MISSING_HANDLER: InjectionToken<LocalizeMissingHandler> = new InjectionToken('localize missing handler');\n\nexport const LOCALIZE_ID = new InjectionToken<Observable<string>>(\n 'An abstraction over locale changes',\n {\n factory: () => {\n const localize = inject(Localize, {optional: true});\n if (!localize) {\n return of(inject(LOCALE_ID));\n }\n\n return localize.dictionaryChanges$.pipe(\n map(dictionary => dictionary?.locale ?? null),\n distinctUntilChanged(),\n startWith(localize?.current?.locale ?? null)\n );\n }\n }\n);\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizePluralTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.plural ?? ['@plural(', ')'];\n readonly defaultAmount = 'default';\n readonly multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');\n readonly singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);\n\n constructor(@Optional() @Inject(LOCALIZE_CONFIG) protected config: LocalizeConfig) {\n super();\n }\n\n override execute(value: string, data: LocalizeParams['data'], _: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n return matches.reduce((previous, current) => {\n const [variable, content] = current.token?.split('|');\n const amount = this.extractAmount(variable, data);\n const pluralToken = this.parsePluralToken(content, amount);\n return previous.replace(current?.match, pluralToken ?? current?.match);\n }, value);\n }\n\n private extractAmount(variable: string, data: LocalizeParams['data']) {\n const trimmedVariable = variable?.trim();\n const value = data?.[trimmedVariable] ?? null;\n return typeof value === 'string' || typeof value === 'number'\n ? value\n : null;\n }\n\n private parsePluralToken(value: string, amount: string | number) {\n const plural = this.getPluralObject(value);\n return plural?.[amount] ?? plural?.[this.defaultAmount] ?? null;\n }\n\n private splitMatches(value: string) {\n let match = this.multiItemRegex.exec(value);\n const matches: string[] = [];\n\n while (match !== null) {\n matches.push(match[0]);\n match = this.multiItemRegex.exec(value);\n }\n\n return matches;\n }\n\n private getPluralObject(value: string) {\n const matches = this.splitMatches(value);\n\n return matches.reduce((previous, current) => {\n const result = current.match(this.singleItemRegex);\n const amount = result.groups['amount'].trim();\n const sentence = result.groups['sentence'].trim();\n return {...previous, [amount]: sentence};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeFunction, LocalizeFunctionMap} from '../interfaces/functions.interfaces';\nimport {LOCALIZE_CONFIG, LOCALIZE_FUNCTION} from '../localize.tokens';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizeInterpolateTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];\n readonly functionsMap: LocalizeFunctionMap = (this.functions ?? []).reduce((previous, current) => {\n previous[current?.keyword()] = current;\n return previous;\n }, {});\n\n constructor(@Optional() @Inject(LOCALIZE_CONFIG) protected config: LocalizeConfig,\n @Optional() @Inject(LOCALIZE_FUNCTION) protected functions?: LocalizeFunction[]) {\n super();\n }\n\n override execute(value: string, data: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to parse the token.\n const interpolatedToken = this.parseInterpolationToken(current?.token, data, localize);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, interpolatedToken);\n }, value);\n }\n\n protected parseInterpolationToken(value: string, data: LocalizeParams['data'], localize: Localize) {\n // Get the token and the methods by splitting\n // on the pipe symbol.\n const [token, ...methods] = (value ?? '').split('|').map(item => item.trim());\n\n // Get the value for the token from\n // the interpolation data.\n const interpolationValue = data?.[token] ?? 'null';\n\n // Loop through all the middleware methods and try to\n // conform the string to the given parameters.\n return methods.reduce((string, middlewareName) => {\n // Try to retrieve the middleware from the collection.\n const middleware = this.functionsMap?.[middlewareName];\n\n // If the middleware is missing return an error\n // so that the user knows it was not found.\n if (!middleware) {\n return string;\n }\n\n // Execute the middleware function with the string.\n return middleware.transform(string, localize?.current?.locale);\n }, `${interpolationValue}`);\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizeReferenceTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['#(', ')'];\n\n constructor(@Optional() @Inject(LOCALIZE_CONFIG) protected config: LocalizeConfig) {\n super();\n }\n\n override execute(value: string, _: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to translate the token.\n const translatedToken = localize.translate(current?.token);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, translatedToken);\n }, value);\n }\n\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[bbLocalizeTemplate]',\n standalone: true\n})\nexport class BbLocalizeTemplate {\n\n // Inputs.\n @Input('bbLocalizeTemplate') name: string | null = null;\n\n constructor(public templateRef: TemplateRef<any>) {\n }\n\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, OnDestroy, QueryList, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbLocalizeTemplate} from '../localize-template.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {startWith} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: '[bb-localize-string]',\n templateUrl: './localize-string.component.html',\n styleUrls: ['./localize-string.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-localize-string'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbTemplate]\n})\nexport class BbLocalizeString implements AfterViewInit, OnDestroy {\n\n // Content children.\n @ContentChildren(BbLocalizeTemplate) items?: QueryList<BbLocalizeTemplate>;\n\n // Inputs.\n @Input() substitutions: [string, string] = ['@element(', ')'];\n\n // Data.\n components: (string | TemplateRef<any>)[] = [];\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n // State.\n private _value: string | null = null;\n\n @Input('bb-localize-string')\n set value(value: string | null) {\n this._value = value;\n this.revalidate();\n }\n\n get value() {\n return this._value;\n }\n\n constructor(private _changeDetection: ChangeDetectorRef) {\n }\n\n ngAfterViewInit() {\n this.observeItemChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private observeItemChanges() {\n const subscription = this.items.changes.pipe(\n startWith(0)\n ).subscribe(() => this.revalidate());\n\n this._subscription.add(subscription);\n }\n\n private revalidate() {\n const items = this.items?.toArray() ?? [];\n if (items.length <= 0) {\n return;\n }\n\n this.setComponents(items);\n }\n\n private setComponents(items: BbLocalizeTemplate[]) {\n const [start, end] = this.substitutions;\n\n const templates = items.reduce((previous, current) => {\n const template = current?.templateRef ?? null;\n const name = current?.name ?? null;\n if (!template || !name) {\n return previous;\n }\n\n return {...previous, [`${start}${name}${end}`]: template};\n }, {});\n\n this.components = this.getStringComponents(this._value)\n .map(component => templates?.[component] ?? component ?? null)\n .filter(item => !!item);\n\n this._changeDetection.detectChanges();\n }\n\n private getStringComponents(value: string) {\n const [start, end] = this.getSubstitutions();\n const regex = new RegExp(`(${start}[a-zA-Z]+${end})`, 'g');\n return value.split(regex);\n }\n\n private getSubstitutions() {\n const [start, end] = this.substitutions;\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n\n return [\n start.replace(escape, '\\\\$&'),\n end.replace(escape, '\\\\$&')\n ];\n }\n\n}\n","@for (component of components; track component) {\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n}\n","import {LocalizeOptions, LocalizeParams} from './interfaces/options.interfaces';\nimport {Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from './localize.service';\n\n@Pipe({\n name: 'bbLocalize',\n standalone: true\n})\nexport class BbLocalize implements PipeTransform {\n\n constructor(@Optional() private _localize?: Localize) {\n }\n\n transform(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Combine the params with the options to form the localize params.\n const params = this.combineParamsWithOptions(tokenOrParams, args);\n\n // Validate that the localize service exists in the pipe.\n if (!this._localize) {\n return params?.token ?? null;\n }\n\n // Try to localize the value.\n return this._localize.translate(params);\n }\n\n private combineParamsWithOptions(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Gather the extras.\n const extras = args ?? {};\n\n // Loop through all the keys to find the set options.\n const options = Object.keys(extras).reduce((previous, current) => {\n if (typeof extras?.[current] === 'undefined') {\n return previous;\n }\n\n return {...previous, [current]: extras?.[current]};\n }, {});\n\n // Convert the string token to a params object.\n const params = typeof tokenOrParams === 'string'\n ? {token: tokenOrParams, optional: false, data: {}, dictionary: null}\n : tokenOrParams;\n\n // Return the combined params and options.\n return {...params, ...options};\n }\n\n}\n","import {LOCALIZE_CONFIG, LOCALIZE_FUNCTION, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {APP_INITIALIZER, EnvironmentProviders, LOCALE_ID, makeEnvironmentProviders} from '@angular/core';\nimport {LocalizeInterpolateTransform} from './transforms/interpolate.transform';\nimport {LocalizeReferenceTransform} from './transforms/reference.transform';\nimport {LocalizeLowercaseFunction} from './functions/lowercase.function';\nimport {LocalizeUppercaseFunction} from './functions/uppercase.function';\nimport {LocalizePluralTransform} from './transforms/plural.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDateFunction} from './functions/date.function';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\n\nexport function provideLocalizeConfig(config: LocalizeConfig): EnvironmentProviders {\n if (config?.languages?.length <= 0) {\n throw new Error('One or more languages should be supplied.');\n }\n\n if (config?.compareDictionaries && config?.mode === 'manual') {\n console?.warn?.('You cannot enable \"compareDictionaries\" when having mode set to \"manual\"; This setting will be ignored.');\n }\n\n const mode = config?.mode ?? 'automatic';\n const automaticProviders = mode === 'automatic'\n ? [\n {provide: APP_INITIALIZER, deps: [Localize], useFactory: initializeLocale, multi: true},\n {provide: LOCALE_ID, deps: [Localize], useFactory: getLocale}\n ]\n : [];\n\n return makeEnvironmentProviders([\n {provide: LOCALIZE_CONFIG, useValue: config},\n ...automaticProviders,\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeLowercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeUppercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeDateFunction, multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizePluralTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LOCALIZE_CONFIG, LOCALIZE_FUNCTION], multi: true},\n {provide: LOCALIZE_MISSING_HANDLER, useClass: LocalizeMissingHandler}\n ]);\n}\n\nexport function initializeLocale(localize: Localize) {\n return localize.initialize();\n}\n\nexport function getLocale(localize: Localize) {\n return localize?.current?.locale ?? null;\n}\n","import {BbLocalizeString} from './views/localize-string/localize-string.component';\nimport {BbLocalizeTemplate} from './views/localize-template.directive';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {provideLocalizeConfig} from './localize.config';\nimport {BbLocalize} from './localize.pipe';\n\n@NgModule({\n imports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ],\n exports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ]\n})\nexport class LocalizeModule {\n\n static forRoot(config: LocalizeConfig): ModuleWithProviders<LocalizeModule> {\n return {\n ngModule: LocalizeModule,\n providers: [\n provideLocalizeConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.Localize"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-localize.mjs","sources":["../../../projects/bb-foundation/localize/src/lib/interfaces/options.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/interfaces/functions.interfaces.ts","../../../projects/bb-foundation/localize/src/lib/functions/lowercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/uppercase.function.ts","../../../projects/bb-foundation/localize/src/lib/functions/date.function.ts","../../../projects/bb-foundation/localize/src/lib/localizations/english.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/dutch.localization.ts","../../../projects/bb-foundation/localize/src/lib/localizations/papiamento.localization.ts","../../../projects/bb-foundation/localize/src/lib/handlers/missing.handler.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.data.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.context.ts","../../../projects/bb-foundation/localize/src/lib/dictionary/dictionary.class.ts","../../../projects/bb-foundation/localize/src/lib/transforms/abstract.transform.ts","../../../projects/bb-foundation/localize/src/lib/localize.service.ts","../../../projects/bb-foundation/localize/src/lib/localize.tokens.ts","../../../projects/bb-foundation/localize/src/lib/transforms/plural.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/interpolate.transform.ts","../../../projects/bb-foundation/localize/src/lib/transforms/reference.transform.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-template.directive.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.ts","../../../projects/bb-foundation/localize/src/lib/views/localize-string/localize-string.component.html","../../../projects/bb-foundation/localize/src/lib/localize.pipe.ts","../../../projects/bb-foundation/localize/src/lib/localize.config.ts","../../../projects/bb-foundation/localize/src/lib/localize.module.ts","../../../projects/bb-foundation/localize/src/bravobit-bb-foundation-localize.ts"],"sourcesContent":["//\n// These are the options that the user has\n// when localizing the token.\n//\n\nexport interface LocalizeOptions {\n optional?: boolean;\n dictionary?: string;\n data?: LocalizeOptionsData;\n}\n\n//\n// This is the data that the user can interpolate\n// in the localized strings.\n//\n\nexport interface LocalizeOptionsData {\n [token: string]: string | number | boolean | Date;\n}\n\n//\n// These are the params that the user can set\n// when he wants to localize a token (with the\n// optional options).\n//\n\nexport interface LocalizeParams extends LocalizeOptions {\n token: string;\n}\n","//\n// This is the interface that handles the localize functions.\n// every localize function needs to conform to this interface.\n// The interface allows the user to transform a token into\n// another value.\n//\n\nexport interface LocalizeFunction {\n\n keyword(): string;\n\n transform(value: string, locale?: string): string;\n\n}\n\n//\n// This is the interface that handles the map\n// of all the localize functions.\n//\n\nexport interface LocalizeFunctionMap {\n [keyword: string]: LocalizeFunction;\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a lowercase variant of the value.\n//\n\nexport class LocalizeLowercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'lowercase';\n }\n\n transform(value: string) {\n return (value ?? '').toLowerCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\n\n//\n// This function transform the value\n// to a uppercase variant of the value.\n//\n\nexport class LocalizeUppercaseFunction implements LocalizeFunction {\n\n keyword() {\n return 'uppercase';\n }\n\n transform(value: string) {\n return (value ?? '').toUpperCase();\n }\n\n}\n","import {LocalizeFunction} from '../interfaces/functions.interfaces';\nimport {formatDate} from '@angular/common';\n\n//\n// This function transform the value\n// to a localized date.\n//\n\nexport class LocalizeDateFunction implements LocalizeFunction {\n\n keyword() {\n return 'date';\n }\n\n transform(value: string, locale?: string) {\n const date = new Date(value);\n\n if (date.toString() === 'Invalid Date') {\n return '?';\n }\n\n return formatDate(date, 'longDate', locale);\n }\n\n}\n","export const extraEnglishDictionary = {\n 'form-control-errors': {\n 'unknown': 'The field has an unknown error.',\n 'required': 'This field is required.',\n 'pattern': 'Invalid format.',\n 'email': 'The field does not match a valid email address.',\n 'emailTaken': 'The e-mail is already taken.',\n 'passwordMatch': 'The passwords don\\'t match.',\n 'confirm': 'The field does not match.',\n 'fullNumber': 'The field should be a full number.',\n 'min': 'Minimum amount should be {{min}}.',\n 'max': 'Maximum amount should be {{max}}.',\n 'invalidFileType': 'The file type is not allowed.',\n 'maxFileSize': 'The file has exceed the maximum amount of {{maxSize}}.',\n 'minDate': 'The first accepted date is {{date|date}}.',\n 'maxDate': 'The last accepted date is {{date|date}}.',\n 'invalidDate': 'The field contains an invalid date.',\n 'minlength': 'Expected a minimum of {{requiredLength}} characters but got {{actualLength}} characters.',\n 'maxlength': 'Expected a maximum of {{requiredLength}} characters but got {{actualLength}} characters.'\n },\n 'select': {\n 'not_found_text': 'No items found',\n 'clear_all_text': 'Clear all',\n 'loading_text': 'Loading...',\n 'type_to_search_text': 'Typ to search',\n 'add_tag_text': 'Add tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Choose a file',\n 'choose_file_text': '@element(label) or drag and drop files here'\n },\n 'collection': {\n 'search_label': 'Search...',\n 'showing_label': 'Showing @element(start) to @element(end) of @element(total) results',\n 'no_results_label': 'There are no results for @element(query). Try a different search term to find results...',\n 'empty_label': 'There are no results...',\n 'error_label': 'It seems that an error occurred while using the application.'\n },\n 'tables': {\n 'search': 'Search...',\n 'loading': 'Loading...',\n 'empty': 'There is nothing to find here.',\n 'page': 'page',\n 'error_datasource': 'No data source was provided.',\n 'error_unauthorized': 'You need to be authenticated to view this data.',\n 'error_forbidden': 'You do not have access to view this data.',\n 'error_not_found': 'The data was not found.',\n 'error_server': 'A server error occurred while fetching data from the server.',\n 'error_down': 'It looks like the server is down.',\n 'error_unknown': 'A unknown error occurred.'\n },\n 'file-picker': {\n 'choose': 'Choose file',\n 'remove': 'Remove file',\n 'drop': 'or drag and drop file here'\n },\n 'times': {\n 'tomorrow_at': 'Tomorrow at {{date}}',\n 'today_at': 'Today at {{date}}',\n 'yesterday_at': 'Yesterday at {{date}}'\n }\n};\n","export const extraDutchDictionary = {\n 'form-control-errors': {\n 'unknown': 'Het veld heeft een onbekende fout.',\n 'required': 'Dit veld is verplicht.',\n 'pattern': 'Ongeldig formaat.',\n 'email': 'Het veld komt niet overeen met een geldig e-mailadres.',\n 'emailTaken': 'Het e-mailadres is al bezet.',\n 'passwordMatch': 'De wachtwoorden komen niet overeen.',\n 'confirm': 'Het veld komt niet overeen.',\n 'fullNumber': 'Het veld moet een volledig getal zijn.',\n 'min': 'Minimum hoeveelheid moet {{min}} zijn.',\n 'max': 'Maximum hoeveelheid moet {{max}} zijn.',\n 'invalidFileType': 'Het type bestand is niet toegestaan.',\n 'maxFileSize': 'Het bestand heeft de maximum hoeveelheid van {{maxSize}} overschreden.',\n 'minDate': 'De eerst mogelijke datum is {{date|date}}.',\n 'maxDate': 'De laatst mogelijke datum is {{date|date}}.',\n 'invalidDate': 'Het veld bevat een ongeldige datum.',\n 'minlength': 'Verwachtte minimaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.',\n 'maxlength': 'Verwachtte maximaal {{requiredLength}} tekens, maar kreeg {{actualLength}} tekens.'\n },\n 'select': {\n 'not_found_text': 'Geen items gevonden',\n 'clear_all_text': 'Wis alles',\n 'loading_text': 'Aan het laden...',\n 'type_to_search_text': 'Typ om te zoeken',\n 'add_tag_text': 'Tag toevoegen'\n },\n 'multi-file-control': {\n 'choose_file': 'Kies een bestand',\n 'choose_file_text': '@element(label) of sleep de bestanden hiernaartoe'\n },\n 'collection': {\n 'search_label': 'Zoeken...',\n 'showing_label': 'Toont @element(start) tot @element(end) van @element(total) resultaten',\n 'no_results_label': 'Er zijn geen resultaten voor @element(query). Probeer een andere zoekterm om resultaten te vinden...',\n 'empty_label': 'Er zijn geen resultaten...',\n 'error_label': 'Het lijkt erop dat een fout is opgetreden tijdens het gebruiken van de applicatie.'\n },\n 'tables': {\n 'search': 'Zoeken...',\n 'loading': 'Aan het laden...',\n 'empty': 'Er is hier niets te vinden.',\n 'page': 'pagina',\n 'error_datasource': 'Er is geen gegevensbron verstrekt.',\n 'error_unauthorized': 'U moet ingelogd zijn om deze gegevens te bekijken.',\n 'error_forbidden': 'U hebt geen toegang om deze gegevens te bekijken.',\n 'error_not_found': 'De gegevens zijn niet gevonden.',\n 'error_server': 'Er is een serverfout opgetreden bij het ophalen van gegevens van de server.',\n 'error_down': 'Het lijkt erop dat de server down is.',\n 'error_unknown': 'Er is een onbekende fout opgetreden bij het ophalen van gegevens van de server.'\n },\n 'file-picker': {\n 'choose': 'Kies bestand',\n 'remove': 'Verwijder bestand',\n 'drop': 'of sleep het bestand hiernaartoe'\n },\n 'times': {\n 'tomorrow_at': 'Morgen om {{date}}',\n 'today_at': 'Vandaag om {{date}}',\n 'yesterday_at': 'Gisteren om {{date}}'\n }\n};\n","export const extraPapiamentoDictionary = {\n 'form-control-errors': {\n 'unknown': 'E campo tin un fout no konosí.',\n 'required': 'E campo aki ta obligatoro.',\n 'pattern': 'Formato no válido.',\n 'email': 'E campo no ta koinsidí ku un adres di email válido.',\n 'emailTaken': 'E-mail ya ta usa.',\n 'passwordMatch': 'E passwordnan no ta koinsidí.',\n 'confirm': 'E campo no ta koinsidí.',\n 'fullNumber': 'E campo mester ta un number komplet.',\n 'min': 'Kantidad mínimo mester ta {{min}}.',\n 'max': 'Kantidad máximo mester ta {{max}}.',\n 'invalidFileType': 'E tipo di archivo no ta permití.',\n 'maxFileSize': 'E archivo a pasa e límite máximo di {{maxSize}}.',\n 'minDate': 'E promé fecha akseptá ta {{date|date}}.',\n 'maxDate': 'E último fecha akseptá ta {{date|date}}.',\n 'invalidDate': 'E campo tin un fecha no válido.',\n 'minlength': 'Espera un mínimo di {{requiredLength}} karakter pero haña {{actualLength}} karakter.',\n 'maxlength': 'Espera un máximo di {{requiredLength}} karakter pero haña {{actualLength}} karakter.'\n },\n 'select': {\n 'not_found_text': 'No a haña niun item',\n 'clear_all_text': 'Limpia tur',\n 'loading_text': 'Ta karga...',\n 'type_to_search_text': 'Skribi pa buska',\n 'add_tag_text': 'Haña tag'\n },\n 'multi-file-control': {\n 'choose_file': 'Skohe un archivo',\n 'choose_file_text': '@element(label) òf trèk i kai archivonan aki'\n },\n 'collection': {\n 'search_label': 'Buska...',\n 'showing_label': 'Ta mustra @element(start) te @element(end) di @element(total) rezultadonan',\n 'no_results_label': 'No tin rezultadonan pa @element(query). Purba un otro término di buska pa haña rezultadonan...',\n 'empty_label': 'No tin rezultadonan...',\n 'error_label': 'Parece ku un fout a pasa durante e uzo di e aplikashon.'\n },\n 'tables': {\n 'search': 'Buska...',\n 'loading': 'Ta karga...',\n 'empty': 'No tin nada pa haña aki.',\n 'page': 'página',\n 'error_datasource': 'No a duna un fuente di dato.',\n 'error_unauthorized': 'Bo mester ta autentiká pa mira e datonan aki.',\n 'error_forbidden': 'Bo no tin akses pa mira e datonan aki.',\n 'error_not_found': 'E datonan no a haña.',\n 'error_server': 'Un fout di server a pasa durante e haña di dato di e server.',\n 'error_down': 'Parece ku e server ta afó.',\n 'error_unknown': 'Un fout no konosí a pasa.'\n },\n 'file-picker': {\n 'choose': 'Skohe archivo',\n 'remove': 'Kita archivo',\n 'drop': 'òf trèk i kai archivo aki'\n },\n 'times': {\n 'tomorrow_at': 'Mañan na {{date}}',\n 'today_at': 'Awe na {{date}}',\n 'yesterday_at': 'Ayer na {{date}}'\n }\n};\n","import {LocalizeHandlerProtocol} from '../interfaces/handlers.interfaces';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\n\nexport class LocalizeMissingHandler implements LocalizeHandlerProtocol {\n\n handle(params: LocalizeParams) {\n // Log to the console when the token was not found\n // if the user did not mark it as optional.\n if (!params?.optional) {\n this.log(`The token with name: \"${params?.token}\" was not found.`);\n }\n\n // Return the default token back.\n return params?.token ?? null;\n }\n\n private log = (message: string) => console?.warn?.(message);\n\n}\n","export type LocalizeDictionaryDataValues = { [key: string]: string | LocalizeDictionaryDataValues };\n\nexport class LocalizeDictionaryData {\n\n constructor(public data: LocalizeDictionaryDataValues) {\n }\n\n}\n","export class LocalizeDictionaryContext {\n\n regexp: RegExp = /^.*$/;\n\n pattern(regexp: RegExp) {\n this.regexp = regexp;\n return this;\n }\n\n matches(value: string | string[]) {\n const formatted = this.formatValue(value);\n const regex = (formatted ?? '')\n .replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n .replace(/\\\\\\*/g, '.*');\n return this.pattern(new RegExp(`^${regex}$`));\n }\n\n group(value: string | string[]) {\n const formatted = this.formatValue(value);\n return this.matches([formatted, '*']);\n }\n\n private formatValue(value: string | string[]) {\n return Array.isArray(value)\n ? value.filter(item => !!item).join('.')\n : value;\n }\n\n}\n","import {LocalizeDictionaryDataValues} from './dictionary.data';\nimport {LocalizeDictionaryContext} from './dictionary.context';\nimport {Localize} from '../localize.service';\n\ndeclare let ngDevMode;\n\nexport class LocalizeDictionary {\n\n private readonly _data: Record<string, string> = this.formatData(this._dataValues);\n\n constructor(private _id: string,\n private _locale: string,\n private _supported: string[],\n private _dataValues: LocalizeDictionaryDataValues,\n private _localize: Localize) {\n }\n\n get id() {\n return this._id ?? null;\n }\n\n get locale() {\n return this._locale ?? null;\n }\n\n get supported() {\n return this._supported ?? [];\n }\n\n get(token: string | string[]) {\n const key = Array.isArray(token) ? token.join('.') : token;\n return this._data?.[key] ?? null;\n }\n\n has(token: string | string[]) {\n return !!this.get(token);\n }\n\n all() {\n return this.some(context => context);\n }\n\n some(callback: (context: LocalizeDictionaryContext) => LocalizeDictionaryContext) {\n const defaultContext = new LocalizeDictionaryContext();\n const context = !!callback ? callback(defaultContext) : defaultContext;\n\n return Object.keys(this._data ?? {})\n .filter(key => context.regexp.test(key))\n .reduce((previous, current) => ([\n ...previous,\n {token: current, value: this.get(current)}\n ]), <{ token: string, value: string }[]>[]);\n }\n\n async compare(to: string | string[]) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode)) {\n const dictionaryIds = (Array.isArray(to) ? to : [to]);\n const dictionaries: LocalizeDictionary[] = [];\n for (const dictionaryId of dictionaryIds) {\n const dictionary = await this._localize.load(dictionaryId);\n dictionaries.push(dictionary);\n }\n\n const warnings = [];\n\n const items = this.all();\n for (const item of items) {\n for (const dictionary of dictionaries) {\n if (!dictionary.has(item?.token)) {\n warnings.push({dictionary: dictionary?.id, value: item?.token});\n }\n }\n }\n\n for (const dictionary of dictionaries) {\n const items = dictionary.all();\n for (const item of items) {\n if (!this.has(item?.token)) {\n warnings.push({dictionary: this.id, value: item?.token});\n }\n }\n }\n\n const compareDictionaryIds = dictionaries.map(dictionary => dictionary?.id).join(', ');\n for (const warning of warnings) {\n console?.warn?.(`Dictionary \"${warning.dictionary}\" is missing token \"${warning.value}\"`);\n }\n console?.warn?.(`Total of ${warnings.length} warning(s) found while comparing \"${this.id}\" -> [${compareDictionaryIds}].`);\n }\n }\n\n count() {\n return Object.keys(this._data ?? {}).length;\n }\n\n private formatData(data: LocalizeDictionaryDataValues, scope: string | null = null) {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current];\n if (typeof value === 'object' && value !== null) {\n const reformatted = this.formatData(value, current);\n return {...previous, ...reformatted};\n }\n\n const token = [scope, current].filter(item => !!item).join('.');\n if (previous[token] && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console?.warn?.(`Duplicate key \"${token}\" was found, please verify your translation files.`);\n }\n\n return {...previous, [token]: value};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {Localize} from '../localize.service';\n\nexport abstract class LocalizeTransform {\n\n abstract execute(value: string, data: LocalizeParams['data'], localize: Localize): string;\n\n protected getMatches(value: string, substitutions: [string, string]) {\n // Validate our value exists, else return zero matches.\n if (value === undefined || value === null) {\n return [];\n }\n\n // Get the matching substitutions.\n const {start, end} = this.getSubstitutions(substitutions);\n\n // Compose a regex that will find the matches.\n const regex = new RegExp(`${start}([^${end}]+)${end}`, 'g');\n\n // Execute the regex to find matches.\n let match = regex.exec(value);\n const matches: { match: string, token: string }[] = [];\n\n while (match !== null) {\n matches.push({match: match[0], token: match[1]});\n match = regex.exec(value);\n }\n\n // Return the processed value.\n return matches.filter(item => !!item);\n }\n\n protected getSubstitutions(value: [string, string]) {\n // Escape both substitutions so that they can be used.\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n const start = value[0].replace(escape, '\\\\$&');\n const end = value[1].replace(escape, '\\\\$&');\n\n // Return the substitutions.\n return {start, end};\n }\n\n}\n","import {LOCALIZE_CONFIG, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {LocalizeConfig, LocalizeConfigLanguage} from './interfaces/config.interfaces';\nimport {LocalizeDictionaryData} from './dictionary/dictionary.data';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDictionary} from './dictionary/dictionary.class';\nimport {LocalizeParams} from './interfaces/options.interfaces';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {Languages, WINDOW} from '@bravobit/bb-foundation';\nimport {Storage} from '@bravobit/bb-foundation/storage';\nimport {DOCUMENT} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Localize {\n\n // Readonly data.\n private readonly _storageToken: string = this._config?.storageToken ?? 'bb-language-dictionary-id';\n private readonly _availableLanguages: LocalizeConfigLanguage[] = this?._config?.languages ?? [];\n private readonly _bestMatchingLanguage: LocalizeConfigLanguage = this.retrieveBestMatchingLanguage();\n\n private readonly _loadedDictionaries: Map<string, LocalizeDictionary> = new Map<string, LocalizeDictionary>();\n\n // Current dictionary.\n private _current$ = new BehaviorSubject<LocalizeDictionary | null>(null);\n\n // State changes.\n dictionaryChanges$ = this._current$.asObservable();\n\n constructor(private _storage: Storage,\n private _languages: Languages,\n @Optional() @Inject(WINDOW) private _window?: Window,\n @Optional() @Inject(DOCUMENT) private _document?: Document,\n @Optional() @Inject(LOCALIZE_CONFIG) private _config?: LocalizeConfig,\n @Optional() @Inject(LOCALIZE_TRANSFORM) private _transforms?: LocalizeTransform[],\n @Optional() @Inject(LOCALIZE_MISSING_HANDLER) private _missingHandler?: LocalizeMissingHandler) {\n this.renderDocumentLanguage();\n }\n\n get languages() {\n return this._availableLanguages ?? [];\n }\n\n get current() {\n return this._current$.getValue();\n }\n\n async load(id: string) {\n if (id === null || id === undefined) {\n throw new Error(`Cannot load language with id: \"${id}\".`);\n }\n\n if (this._loadedDictionaries.has(id)) {\n return this._loadedDictionaries.get(id);\n }\n\n const language = this.languages?.find(language => language?.id === id);\n if (!language || !language?.data) {\n console?.warn?.(`No language was found with id: \"${id}\"; Defaulting to first available language.`);\n const languageId = this.languages?.[0]?.id ?? null;\n return this.load(languageId);\n }\n\n const dictionaryDataValues = await language?.data?.();\n const dictionary = this.createDictionary(dictionaryDataValues, language);\n this._loadedDictionaries.set(id, dictionary);\n return dictionary;\n }\n\n async loadAllLanguages() {\n for (const language of this.languages) {\n await this.load(language?.id);\n }\n }\n\n async switch(id: string, options?: { cache?: boolean, reload?: boolean }) {\n const dictionary = await this.load(id);\n this._current$.next(dictionary);\n\n const cache = options?.cache ?? true;\n if (cache) {\n this._storage.cookie.set<string>(this._storageToken, dictionary?.id, {});\n }\n\n const reload = options?.reload ?? false;\n if (reload) {\n this._window?.location?.reload?.();\n }\n\n return dictionary;\n }\n\n select(id: string) {\n if (!this._loadedDictionaries.has(id)) {\n throw new Error(`Dictionary with id: \"${id}\" not loaded; Load dictionary first before using .select(:id).`);\n }\n return this._loadedDictionaries.get(id);\n }\n\n initialize() {\n return async () => {\n await this.switch(this._bestMatchingLanguage?.id, {reload: false, cache: false});\n return this.compareDictionaries();\n };\n }\n\n clear() {\n this._storage.cookie.remove(this._storageToken);\n }\n\n transform(value: string, data: LocalizeParams['data'] = {}) {\n return (this._transforms ?? []).reduce((previous, current) => {\n return current.execute(previous, data, this);\n }, value);\n }\n\n translate(tokenOrParams: string | LocalizeParams) {\n // 1. Convert to the params.\n const params = this.convertToParams(tokenOrParams);\n\n // 2. Try to find the translation in the dictionary.\n const dictionary = this.getDictionary(params?.dictionary);\n const searchResult = !!dictionary ? dictionary.get(params?.token) : null;\n\n // 3. Verify the translation was found.\n if (!searchResult) {\n if (!this._missingHandler) {\n return null;\n }\n return this._missingHandler.handle(params);\n }\n\n return this.transform(searchResult, params?.data);\n }\n\n private retrieveBestMatchingLanguage() {\n return this.getLanguageFromStorage()\n ?? this.getBestBrowserMatchLanguage()\n ?? this._availableLanguages?.[0];\n }\n\n private getLanguageFromStorage() {\n // Get id from the storage.\n const id = this._storage.cookie.get<string>(this._storageToken);\n\n // Return the language based on the storage id.\n return this._availableLanguages.find(item => item?.id === id);\n }\n\n private getBestBrowserMatchLanguage() {\n // Loop through all browser languages and return the\n // best matching language.\n return this._languages.all.map(({code, region}) => {\n const languageCode = [code, region].filter(data => !!data).join('-');\n\n return this._availableLanguages.find(item => item?.supported?.includes(languageCode));\n }).filter(item => !!item).find((_, index) => index === 0);\n }\n\n private createDictionary(data: LocalizeDictionaryData, language: LocalizeConfigLanguage) {\n return new LocalizeDictionary(language?.id, language?.locale, language?.supported, data?.data, this);\n }\n\n private getDictionary(id: string | null) {\n if (id === null || id === undefined) {\n return this.current;\n }\n return this.select(id);\n }\n\n private renderDocumentLanguage() {\n const element = this._document?.documentElement;\n if (!element) {\n return;\n }\n\n element.lang = this._bestMatchingLanguage?.supported?.[0] ?? this._bestMatchingLanguage?.locale;\n }\n\n private async compareDictionaries() {\n const compareDictionaries = this._config.compareDictionaries ?? false;\n if (!compareDictionaries || !this.current) {\n return;\n }\n\n const languageIds = (this.languages ?? [])\n ?.filter(language => language?.id !== this.current?.id)\n ?.map(language => language?.id);\n\n return await this.current.compare(languageIds);\n }\n\n private convertToParams = (tokenOrParams: string | LocalizeParams) => {\n if (typeof tokenOrParams !== 'string') {\n // Destruct the params from the object.\n const {token, optional, dictionary, data} = tokenOrParams;\n\n // Make sure all parameters are valid\n // by type safe adding them.\n return {token: token, optional: optional ?? false, dictionary: dictionary ?? null, data: data ?? {}};\n }\n\n // If the parameter is a string fill in the blanks.\n return {token: tokenOrParams, optional: false, dictionary: null, data: {}};\n };\n\n}\n","import {distinctUntilChanged, map, startWith} from 'rxjs/operators';\nimport {LocalizeFunction} from './interfaces/functions.interfaces';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeTransform} from './transforms/abstract.transform';\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\nimport {Observable, of} from 'rxjs';\n\nexport const LOCALIZE_FUNCTION: InjectionToken<LocalizeFunction[]> = new InjectionToken('localize function');\nexport const LOCALIZE_CONFIG: InjectionToken<LocalizeConfig> = new InjectionToken('localize config');\nexport const LOCALIZE_TRANSFORM: InjectionToken<LocalizeTransform[]> = new InjectionToken('localize transform');\nexport const LOCALIZE_MISSING_HANDLER: InjectionToken<LocalizeMissingHandler> = new InjectionToken('localize missing handler');\n\nexport const LOCALIZE_ID = new InjectionToken<Observable<string>>(\n 'An abstraction over locale changes',\n {\n factory: () => {\n const localize = inject(Localize, {optional: true});\n if (!localize) {\n return of(inject(LOCALE_ID));\n }\n\n return localize.dictionaryChanges$.pipe(\n map(dictionary => dictionary?.locale ?? null),\n distinctUntilChanged(),\n startWith(localize?.current?.locale ?? null)\n );\n }\n }\n);\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizePluralTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.plural ?? ['@plural(', ')'];\n readonly defaultAmount = 'default';\n readonly multiItemRegex = new RegExp(`(?<value>=([0-9]+|${this.defaultAmount}): *[^,]+)`, 'g');\n readonly singleItemRegex = new RegExp(`(=(?<amount>[0-9]+|${this.defaultAmount}): *(?<sentence>.+))`);\n\n constructor(@Optional() @Inject(LOCALIZE_CONFIG) protected config: LocalizeConfig) {\n super();\n }\n\n override execute(value: string, data: LocalizeParams['data'], _: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n return matches.reduce((previous, current) => {\n const [variable, content] = current.token?.split('|');\n const amount = this.extractAmount(variable, data);\n const pluralToken = this.parsePluralToken(content, amount);\n return previous.replace(current?.match, pluralToken ?? current?.match);\n }, value);\n }\n\n private extractAmount(variable: string, data: LocalizeParams['data']) {\n const trimmedVariable = variable?.trim();\n const value = data?.[trimmedVariable] ?? null;\n return typeof value === 'string' || typeof value === 'number'\n ? value\n : null;\n }\n\n private parsePluralToken(value: string, amount: string | number) {\n const plural = this.getPluralObject(value);\n return plural?.[amount] ?? plural?.[this.defaultAmount] ?? null;\n }\n\n private splitMatches(value: string) {\n let match = this.multiItemRegex.exec(value);\n const matches: string[] = [];\n\n while (match !== null) {\n matches.push(match[0]);\n match = this.multiItemRegex.exec(value);\n }\n\n return matches;\n }\n\n private getPluralObject(value: string) {\n const matches = this.splitMatches(value);\n\n return matches.reduce((previous, current) => {\n const result = current.match(this.singleItemRegex);\n const amount = result.groups['amount'].trim();\n const sentence = result.groups['sentence'].trim();\n return {...previous, [amount]: sentence};\n }, <Record<string, string>>{});\n }\n\n}\n","import {LocalizeFunction, LocalizeFunctionMap} from '../interfaces/functions.interfaces';\nimport {LOCALIZE_CONFIG, LOCALIZE_FUNCTION} from '../localize.tokens';\nimport {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizeInterpolateTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['{{', '}}'];\n readonly functionsMap: LocalizeFunctionMap = (this.functions ?? []).reduce((previous, current) => {\n previous[current?.keyword()] = current;\n return previous;\n }, {});\n\n constructor(@Optional() @Inject(LOCALIZE_CONFIG) protected config: LocalizeConfig,\n @Optional() @Inject(LOCALIZE_FUNCTION) protected functions?: LocalizeFunction[]) {\n super();\n }\n\n override execute(value: string, data: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to parse the token.\n const interpolatedToken = this.parseInterpolationToken(current?.token, data, localize);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, interpolatedToken);\n }, value);\n }\n\n protected parseInterpolationToken(value: string, data: LocalizeParams['data'], localize: Localize) {\n // Get the token and the methods by splitting\n // on the pipe symbol.\n const [token, ...methods] = (value ?? '').split('|').map(item => item.trim());\n\n // Get the value for the token from\n // the interpolation data.\n const interpolationValue = data?.[token] ?? 'null';\n\n // Loop through all the middleware methods and try to\n // conform the string to the given parameters.\n return methods.reduce((string, middlewareName) => {\n // Try to retrieve the middleware from the collection.\n const middleware = this.functionsMap?.[middlewareName];\n\n // If the middleware is missing return an error\n // so that the user knows it was not found.\n if (!middleware) {\n return string;\n }\n\n // Execute the middleware function with the string.\n return middleware.transform(string, localize?.current?.locale);\n }, `${interpolationValue}`);\n }\n\n}\n","import {LocalizeParams} from '../interfaces/options.interfaces';\nimport {LocalizeConfig} from '../interfaces/config.interfaces';\nimport {LocalizeTransform} from './abstract.transform';\nimport {LOCALIZE_CONFIG} from '../localize.tokens';\nimport {Inject, Optional} from '@angular/core';\nimport {Localize} from '../localize.service';\n\nexport class LocalizeReferenceTransform extends LocalizeTransform {\n\n readonly substitutions = this.config?.substitutions?.references ?? ['#(', ')'];\n\n constructor(@Optional() @Inject(LOCALIZE_CONFIG) protected config: LocalizeConfig) {\n super();\n }\n\n override execute(value: string, _: LocalizeParams['data'], localize: Localize) {\n const matches = this.getMatches(value, this.substitutions);\n\n // Replace all matches with the translated value.\n return matches.reduce((previous, current) => {\n // Try to translate the token.\n const translatedToken = localize.translate(current?.token);\n\n // Replace the match with the translated token.\n return previous.replace(current?.match, translatedToken);\n }, value);\n }\n\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[bbLocalizeTemplate]',\n standalone: true\n})\nexport class BbLocalizeTemplate {\n\n // Inputs.\n @Input('bbLocalizeTemplate') name: string | null = null;\n\n constructor(public templateRef: TemplateRef<any>) {\n }\n\n}\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Input, OnDestroy, QueryList, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbLocalizeTemplate} from '../localize-template.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {startWith} from 'rxjs/operators';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: '[bb-localize-string]',\n templateUrl: './localize-string.component.html',\n styleUrls: ['./localize-string.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-localize-string'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbTemplate]\n})\nexport class BbLocalizeString implements AfterViewInit, OnDestroy {\n\n // Content children.\n @ContentChildren(BbLocalizeTemplate) items?: QueryList<BbLocalizeTemplate>;\n\n // Inputs.\n @Input() substitutions: [string, string] = ['@element(', ')'];\n\n // Data.\n components: (string | TemplateRef<any>)[] = [];\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n // State.\n private _value: string | null = null;\n\n @Input('bb-localize-string')\n set value(value: string | null) {\n this._value = value;\n this.revalidate();\n }\n\n get value() {\n return this._value;\n }\n\n constructor(private _changeDetection: ChangeDetectorRef) {\n }\n\n ngAfterViewInit() {\n this.observeItemChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private observeItemChanges() {\n const subscription = this.items.changes.pipe(\n startWith(0)\n ).subscribe(() => this.revalidate());\n\n this._subscription.add(subscription);\n }\n\n private revalidate() {\n const items = this.items?.toArray() ?? [];\n if (items.length <= 0) {\n return;\n }\n\n this.setComponents(items);\n }\n\n private setComponents(items: BbLocalizeTemplate[]) {\n const [start, end] = this.substitutions;\n\n const templates = items.reduce((previous, current) => {\n const template = current?.templateRef ?? null;\n const name = current?.name ?? null;\n if (!template || !name) {\n return previous;\n }\n\n return {...previous, [`${start}${name}${end}`]: template};\n }, {});\n\n this.components = this.getStringComponents(this._value)\n .map(component => templates?.[component] ?? component ?? null)\n .filter(item => !!item);\n\n this._changeDetection.detectChanges();\n }\n\n private getStringComponents(value: string) {\n const [start, end] = this.getSubstitutions();\n const regex = new RegExp(`(${start}[a-zA-Z]+${end})`, 'g');\n return value.split(regex);\n }\n\n private getSubstitutions() {\n const [start, end] = this.substitutions;\n const escape = /[.*+?^${}()|[\\]\\\\]/g;\n\n return [\n start.replace(escape, '\\\\$&'),\n end.replace(escape, '\\\\$&')\n ];\n }\n\n}\n","@for (component of components; track component) {\n <ng-template [bbTemplate]=\"component\">{{ component }}</ng-template>\n}\n","import {LocalizeOptions, LocalizeParams} from './interfaces/options.interfaces';\nimport {Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from './localize.service';\n\n@Pipe({\n name: 'bbLocalize',\n standalone: true\n})\nexport class BbLocalize implements PipeTransform {\n\n constructor(@Optional() private _localize?: Localize) {\n }\n\n transform(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Combine the params with the options to form the localize params.\n const params = this.combineParamsWithOptions(tokenOrParams, args);\n\n // Validate that the localize service exists in the pipe.\n if (!this._localize) {\n return params?.token ?? null;\n }\n\n // Try to localize the value.\n return this._localize.translate(params);\n }\n\n private combineParamsWithOptions(tokenOrParams: string | LocalizeParams, args?: LocalizeOptions) {\n // Gather the extras.\n const extras = args ?? {};\n\n // Loop through all the keys to find the set options.\n const options = Object.keys(extras).reduce((previous, current) => {\n if (typeof extras?.[current] === 'undefined') {\n return previous;\n }\n\n return {...previous, [current]: extras?.[current]};\n }, {});\n\n // Convert the string token to a params object.\n const params = typeof tokenOrParams === 'string'\n ? {token: tokenOrParams, optional: false, data: {}, dictionary: null}\n : tokenOrParams;\n\n // Return the combined params and options.\n return {...params, ...options};\n }\n\n}\n","import {LOCALIZE_CONFIG, LOCALIZE_FUNCTION, LOCALIZE_MISSING_HANDLER, LOCALIZE_TRANSFORM} from './localize.tokens';\nimport {APP_INITIALIZER, EnvironmentProviders, LOCALE_ID, makeEnvironmentProviders} from '@angular/core';\nimport {LocalizeInterpolateTransform} from './transforms/interpolate.transform';\nimport {LocalizeReferenceTransform} from './transforms/reference.transform';\nimport {LocalizeLowercaseFunction} from './functions/lowercase.function';\nimport {LocalizeUppercaseFunction} from './functions/uppercase.function';\nimport {LocalizePluralTransform} from './transforms/plural.transform';\nimport {LocalizeMissingHandler} from './handlers/missing.handler';\nimport {LocalizeDateFunction} from './functions/date.function';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {Localize} from './localize.service';\n\nexport function provideLocalizeConfig(config: LocalizeConfig): EnvironmentProviders {\n if (config?.languages?.length <= 0) {\n throw new Error('One or more languages should be supplied.');\n }\n\n if (config?.compareDictionaries && config?.mode === 'manual') {\n console?.warn?.('You cannot enable \"compareDictionaries\" when having mode set to \"manual\"; This setting will be ignored.');\n }\n\n const mode = config?.mode ?? 'automatic';\n const automaticProviders = mode === 'automatic'\n ? [\n {provide: APP_INITIALIZER, deps: [Localize], useFactory: initializeLocale, multi: true},\n {provide: LOCALE_ID, deps: [Localize], useFactory: getLocale}\n ]\n : [];\n\n return makeEnvironmentProviders([\n {provide: LOCALIZE_CONFIG, useValue: config},\n ...automaticProviders,\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeLowercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeUppercaseFunction, multi: true},\n {provide: LOCALIZE_FUNCTION, useClass: LocalizeDateFunction, multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizePluralTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeReferenceTransform, deps: [LOCALIZE_CONFIG], multi: true},\n {provide: LOCALIZE_TRANSFORM, useClass: LocalizeInterpolateTransform, deps: [LOCALIZE_CONFIG, LOCALIZE_FUNCTION], multi: true},\n {provide: LOCALIZE_MISSING_HANDLER, useClass: LocalizeMissingHandler}\n ]);\n}\n\nexport function initializeLocale(localize: Localize) {\n return localize.initialize();\n}\n\nexport function getLocale(localize: Localize) {\n return localize?.current?.locale ?? null;\n}\n","import {BbLocalizeString} from './views/localize-string/localize-string.component';\nimport {BbLocalizeTemplate} from './views/localize-template.directive';\nimport {LocalizeConfig} from './interfaces/config.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {provideLocalizeConfig} from './localize.config';\nimport {BbLocalize} from './localize.pipe';\n\n@NgModule({\n imports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ],\n exports: [\n BbLocalize,\n BbLocalizeString,\n BbLocalizeTemplate\n ]\n})\nexport class LocalizeModule {\n\n static forRoot(config: LocalizeConfig): ModuleWithProviders<LocalizeModule> {\n return {\n ngModule: LocalizeModule,\n providers: [\n provideLocalizeConfig(config)\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.Localize"],"mappings":"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"}
@@ -140,7 +140,7 @@ class BbSelect {
140
140
  provide: NG_VALUE_ACCESSOR,
141
141
  useExisting: forwardRef(() => BbSelect),
142
142
  multi: true
143
- }], queries: [{ propertyName: "optionTemplate", first: true, predicate: BbSelectOption, descendants: true, read: TemplateRef }, { propertyName: "optionGroupTemplate", first: true, predicate: BbSelectOptionGroup, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: BbSelectLabel, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: NgSelectComponent, descendants: true, static: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:#c23934}.bb-select.error>.ng-select>.ng-select-container,.bb-select.error>.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-select.error>.ng-select>.ng-select-container{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:#ea7b7b}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:#fff}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent #808993}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #212327}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--select-box-shadow);border-color:#757e8a}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.5rem;color:#111;background-color:#fff;border:1px solid hsl(213,8%,74%);border-radius:.5rem;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.5rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;background-color:#f9f9f9;border:1px solid #d3d6d9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .1875rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:.3125rem;padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{color:#808993}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#50565e}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:#808993 transparent transparent}.ng-dropdown-panel{left:0;box-shadow:0 1px #0000000f;background-color:#fff;border:1px solid hsl(213,8%,74%)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-color:#d3d6d9}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-top-right-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:#d3d6d9;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:#fff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"], dependencies: [{ kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i1.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
143
+ }], queries: [{ propertyName: "optionTemplate", first: true, predicate: BbSelectOption, descendants: true, read: TemplateRef }, { propertyName: "optionGroupTemplate", first: true, predicate: BbSelectOptionGroup, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: BbSelectLabel, descendants: true, read: TemplateRef }, { propertyName: "multiLabelTemplate", first: true, predicate: BbSelectOptionGroup, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: NgSelectComponent, descendants: true, static: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (multiLabelTemplate) {\n <ng-template ng-multi-label-tmp\n let-items=\"items\"\n let-clear=\"clear\">\n <ng-container *ngTemplateOutlet=\"multiLabelTemplate; context: {items: items, clear: clear}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:#c23934}.bb-select.error>.ng-select>.ng-select-container,.bb-select.error>.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-select.error>.ng-select>.ng-select-container{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:#ea7b7b}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:#fff}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent #808993}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #212327}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--select-box-shadow);border-color:#757e8a}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.5rem;color:#111;background-color:#fff;border:1px solid hsl(213,8%,74%);border-radius:.5rem;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.5rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;background-color:#f9f9f9;border:1px solid #d3d6d9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .1875rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:.3125rem;padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{color:#808993}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#50565e}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:#808993 transparent transparent}.ng-dropdown-panel{left:0;box-shadow:0 1px #0000000f;background-color:#fff;border:1px solid hsl(213,8%,74%)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-color:#d3d6d9}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-top-right-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:#d3d6d9;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:#fff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"], dependencies: [{ kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i1.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i1.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
144
144
  }
145
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelect, decorators: [{
146
146
  type: Component,
@@ -163,7 +163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
163
163
  BbTemplate,
164
164
  BbFormError,
165
165
  BbLocalize
166
- ], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:#c23934}.bb-select.error>.ng-select>.ng-select-container,.bb-select.error>.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-select.error>.ng-select>.ng-select-container{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:#ea7b7b}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:#fff}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent #808993}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #212327}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--select-box-shadow);border-color:#757e8a}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.5rem;color:#111;background-color:#fff;border:1px solid hsl(213,8%,74%);border-radius:.5rem;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.5rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;background-color:#f9f9f9;border:1px solid #d3d6d9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .1875rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:.3125rem;padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{color:#808993}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#50565e}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:#808993 transparent transparent}.ng-dropdown-panel{left:0;box-shadow:0 1px #0000000f;background-color:#fff;border:1px solid hsl(213,8%,74%)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-color:#d3d6d9}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-top-right-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:#d3d6d9;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:#fff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"] }]
166
+ ], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [addTag]=\"addTag\"\n [inputAttrs]=\"{autocorrect: 'off', autocapitalize: 'none', spellcheck: 'false', autocomplete: 'off'}\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (multiLabelTemplate) {\n <ng-template ng-multi-label-tmp\n let-items=\"items\"\n let-clear=\"clear\">\n <ng-container *ngTemplateOutlet=\"multiLabelTemplate; context: {items: items, clear: clear}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:#c23934}.bb-select.error>.ng-select>.ng-select-container,.bb-select.error>.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-select.error>.ng-select>.ng-select-container{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:#ea7b7b}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:#fff}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent #808993}.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #212327}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--select-box-shadow);border-color:#757e8a}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.5rem;color:#111;background-color:#fff;border:1px solid hsl(213,8%,74%);border-radius:.5rem;transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.5rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;background-color:#f9f9f9;border:1px solid #d3d6d9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .1875rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:.3125rem;padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{color:#808993}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#50565e}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:#808993 transparent transparent}.ng-dropdown-panel{left:0;box-shadow:0 1px #0000000f;background-color:#fff;border:1px solid hsl(213,8%,74%)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;border-bottom-color:#d3d6d9}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-top-right-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:#d3d6d9;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;border-bottom-color:#d3d6d9;border-bottom-right-radius:.5rem}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:.5rem}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid hsl(213,8%,74%)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:#fff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"] }]
167
167
  }], propDecorators: { optionTemplate: [{
168
168
  type: ContentChild,
169
169
  args: [BbSelectOption, { read: TemplateRef }]
@@ -173,6 +173,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
173
173
  }], labelTemplate: [{
174
174
  type: ContentChild,
175
175
  args: [BbSelectLabel, { read: TemplateRef }]
176
+ }], multiLabelTemplate: [{
177
+ type: ContentChild,
178
+ args: [BbSelectOptionGroup, { read: TemplateRef }]
176
179
  }], selectComponent: [{
177
180
  type: ViewChild,
178
181
  args: [NgSelectComponent, { static: true }]
@@ -255,15 +258,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
255
258
  type: Output
256
259
  }] } });
257
260
 
261
+ class BbSelectMultiLabel {
262
+ constructor(template) {
263
+ this.template = template;
264
+ }
265
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectMultiLabel, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
266
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbSelectMultiLabel, isStandalone: true, selector: "ng-template[bbSelectMultiLabel]", ngImport: i0 }); }
267
+ }
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbSelectMultiLabel, decorators: [{
269
+ type: Directive,
270
+ args: [{
271
+ selector: 'ng-template[bbSelectMultiLabel]',
272
+ standalone: true
273
+ }]
274
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
275
+
258
276
  class SelectModule {
259
277
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
260
278
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, imports: [BbSelect,
261
279
  BbSelectLabel,
262
280
  BbSelectOption,
263
- BbSelectOptionGroup], exports: [BbSelect,
281
+ BbSelectOptionGroup,
282
+ BbSelectMultiLabel], exports: [BbSelect,
264
283
  BbSelectLabel,
265
284
  BbSelectOption,
266
- BbSelectOptionGroup] }); }
285
+ BbSelectOptionGroup,
286
+ BbSelectMultiLabel] }); }
267
287
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, imports: [BbSelect] }); }
268
288
  }
269
289
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: SelectModule, decorators: [{
@@ -273,13 +293,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
273
293
  BbSelect,
274
294
  BbSelectLabel,
275
295
  BbSelectOption,
276
- BbSelectOptionGroup
296
+ BbSelectOptionGroup,
297
+ BbSelectMultiLabel
277
298
  ],
278
299
  exports: [
279
300
  BbSelect,
280
301
  BbSelectLabel,
281
302
  BbSelectOption,
282
- BbSelectOptionGroup
303
+ BbSelectOptionGroup,
304
+ BbSelectMultiLabel
283
305
  ]
284
306
  }]
285
307
  }] });
@@ -288,5 +310,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
288
310
  * Generated bundle index. Do not edit.
289
311
  */
290
312
 
291
- export { BbSelect, BbSelectLabel, BbSelectOption, BbSelectOptionGroup, SelectModule };
313
+ export { BbSelect, BbSelectLabel, BbSelectMultiLabel, BbSelectOption, BbSelectOptionGroup, SelectModule };
292
314
  //# sourceMappingURL=bravobit-bb-foundation-select.mjs.map