@bootkit/ng0 0.0.0-alpha.6 → 0.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-form.mjs","sources":["../../../projects/ng0/form/validation/validators/equal-with/equal-with-validator.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with.directive.ts","../../../projects/ng0/form/validation/validators/url/url-validator.ts","../../../projects/ng0/form/validation/validators/url/url-validator.directive.ts","../../../projects/ng0/form/validation/validators/custom/custom-validator.directive.ts","../../../projects/ng0/form/validation/validation.module.ts","../../../projects/ng0/form/focus.directive.ts","../../../projects/ng0/form/digits-only.directive.ts","../../../projects/ng0/form/number.directive.ts","../../../projects/ng0/form/bootkit-ng0-form.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const isValid = control.value === targetValue;\r\n\r\n return isValid ? null :\r\n {\r\n equalWith: {\r\n value: control.value,\r\n message: inequalityMessage\r\n }\r\n };\r\n };\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { equalWithValidator } from './equal-with-validator';\r\n\r\n@Directive({\r\n selector: '[ng0EqualWith]',\r\n exportAs: 'ng0EqualWith',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class EqualWithValidatorDirective implements Validator {\r\n @Input('ng0EqualWith') targetValue?: string;\r\n @Input() inequalityMessage?: string;\r\n\r\n constructor() {\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } | null {\r\n return equalWithValidator(this.targetValue, this.inequalityMessage)(control);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nconst urlRegEx = new RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = (control.value as string);\r\n if (!value || urlRegEx.test(value)) {\r\n return null;\r\n } else {\r\n return {\r\n 'url': {\r\n value\r\n }\r\n };\r\n }\r\n };\r\n}","import { Directive, Input } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { urlValidator } from './url-validator';\r\n\r\n@Directive({\r\n selector: 'input[ng0Url]',\r\n exportAs: 'ng0Url',\r\n standalone: true,\r\n providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }]\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n /** Directive is enabled or disabled */\r\n @Input() iscUrl?: boolean | string = true;\r\n\r\n validate(control: FormControl): ValidationErrors | null {\r\n return urlValidator()(control);\r\n }\r\n}\r\n","import { Directive, input, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[ng0CustomValidator]',\r\n exportAs: 'ng0CustomValidator',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class CustomValidatorDirective implements Validator {\r\n validator = input.required<(value: any) => ValidationErrors | null>({alias: 'ng0CustomValidator'});\r\n\r\n constructor() { }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.validator()(control);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EqualWithValidatorDirective } from './validators/equal-with/equal-with.directive';\r\nimport { UrlValidatorDirective } from './validators/url/url-validator.directive';\r\nimport { CustomValidatorDirective } from './validators/custom/custom-validator.directive';\r\n\r\nconst items = [\r\n // ErrorDirective,\r\n // FirstErrorDirective,\r\n\r\n // Validators\r\n EqualWithValidatorDirective,\r\n UrlValidatorDirective,\r\n CustomValidatorDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items,\r\n})\r\nexport class ValidationModule { }\r\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Focus]',\r\n exportAs: 'ng0Focus',\r\n standalone: true\r\n})\r\nexport class FocusDirective implements OnInit, OnChanges {\r\n @Input() focusOnLoad = true;\r\n @Input() focusWhen?: boolean;\r\n private focused = false;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.focusOnLoad) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['focusWhen']) {\r\n if (this.focusWhen) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, Host, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[iscDigitsOnly]',\r\n exportAs: 'iscDigitsOnly',\r\n})\r\nexport class DigitsOnlyDirective {\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n @HostListener('keydown', ['$event']) private onKeyDown(e: KeyboardEvent) {\r\n var allowedKeys = ['Tab', 'Backspace', 'ArrowLeft', 'ArrowRight'];\r\n if (!isFinite(e.key as any) && !allowedKeys.some(k => e.key == k)) {\r\n e.preventDefault()\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, forwardRef, ElementRef, Renderer2, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nconst addThousandsSeparator = (str: string) => str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\nconst isValidNumber = (str: string) => str.trim() !== '' && !isNaN(Number(str));\r\nconst removeChar = (str: string, charToRemove: string) => str.split(charToRemove).join('');\r\n\r\nconst Keys = {\r\n backspace: 'Backspace',\r\n tab: 'Tab',\r\n arrowLeft: 'ArrowLeft',\r\n arrowRight: 'ArrowRight',\r\n delete: 'Delete',\r\n home: 'Home',\r\n end: 'End'\r\n}\r\n\r\n@Directive({\r\n selector: '[ng0Number]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NumberDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NumberDirective implements ControlValueAccessor {\r\n minFractionDigits = input<number | undefined>(3);\r\n maxFractionDigits = input<number| undefined>(10);\r\n useGrouping = input<boolean>(false);\r\n numberType = input<'decimal' | 'integer'>('integer');\r\n private onChange = (_: any) => { };\r\n private onTouched = () => { };\r\n private decimalSeparator!: string;\r\n private thousandsSeparator: string = ',';\r\n private selectionStart: number = 0;\r\n private selectionEnd: number = 0;\r\n private isCursorInsideIntegerPart: boolean = false;\r\n private decimalSeparatorPosition = -1;\r\n private value?: number;\r\n private setProperty = (prop: string, value: any) => this.renderer.setProperty(this.el.nativeElement, prop, value);\r\n\r\n constructor(\r\n private el: ElementRef<HTMLInputElement>,\r\n private renderer: Renderer2,\r\n // private locale: Locale,\r\n ) { }\r\n\r\n ngOnInit() {\r\n // Use Intl.NumberFormat to find decimal separator for locale\r\n const formatted = formatNumber(1.1, 'en', '1.1-1');\r\n this.decimalSeparator = formatted.replace(/\\d/g, '') || '.';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.setProperty('disabled', isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n var inputValue: string;\r\n\r\n if (value === undefined || value === null) {\r\n inputValue = '';\r\n this.value = undefined;\r\n } else if (typeof value === 'number') {\r\n inputValue = this.formatNumber(value);\r\n this.value = value;\r\n }\r\n else if (typeof value === 'string') {\r\n const parsedValue = this.value = Number.parseFloat(value);\r\n inputValue = this.formatNumber(parsedValue);\r\n } else {\r\n console.error('NumberDirective: Unsupported value type', value);\r\n inputValue = 'Invalid';\r\n }\r\n\r\n this.setProperty('value', inputValue);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n private onKeyDown(event: KeyboardEvent) {\r\n this.updateCursorInfo();\r\n\r\n if (!this.isKeyAllowed(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n\r\n if (key == Keys.backspace) {\r\n if (this.selectionStart > 1 && (this.selectionStart === this.selectionEnd)) {\r\n let value = this.el.nativeElement.value;\r\n let beforeSelection = value.charAt(this.selectionStart - 1);\r\n if (beforeSelection === ',') {\r\n // If the character before the cursor is a comma, we need to skip it\r\n this.setProperty('selectionStart', this.selectionStart - 2);\r\n }\r\n }\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n private onInput(s: string) {\r\n if (s === '') {\r\n this.value = undefined;\r\n this.onChange(undefined);\r\n return;\r\n }\r\n\r\n this.updateCursorInfo();\r\n\r\n if (this.isCursorInsideIntegerPart) {\r\n this.formatIntegerPart(s);\r\n }\r\n\r\n var number = Number(removeChar(this.el.nativeElement.value, this.thousandsSeparator));\r\n this.value = isNaN(number) ? undefined : number;\r\n this.onChange(this.value);\r\n }\r\n\r\n private formatIntegerPart(value: string) {\r\n // Format the input value\r\n const integerPart = value.split(this.decimalSeparator)[0];\r\n const decimalPart = value.split(this.decimalSeparator)[1];\r\n\r\n if (integerPart.length <= 3) {\r\n return;\r\n }\r\n\r\n let normalizedIntegerPart = removeChar(integerPart, this.thousandsSeparator); // Remove commas\r\n\r\n let formattedValue = addThousandsSeparator(normalizedIntegerPart);\r\n if (decimalPart !== undefined) {\r\n formattedValue += this.decimalSeparator + decimalPart;\r\n }\r\n\r\n this.setProperty('value', formattedValue);\r\n let newSelectionStart: number;\r\n\r\n // fix the cursor position after formatting\r\n if (value.length == 1) {\r\n newSelectionStart = 1;\r\n } else {\r\n const newValueLength = formattedValue.length;\r\n const cursorJump = newValueLength - value.length;\r\n newSelectionStart = Math.max(0, this.selectionStart + cursorJump);\r\n }\r\n\r\n this.setProperty('selectionStart', newSelectionStart);\r\n this.setProperty('selectionEnd', newSelectionStart);\r\n\r\n // return formattedValue;\r\n }\r\n\r\n @HostListener('blur')\r\n private onBlur() {\r\n if (this.value !== undefined) {\r\n let formattedValue = this.formatNumber(this.value);\r\n this.setProperty('value', formattedValue);\r\n }\r\n\r\n this.onTouched();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n private onPaste(event: ClipboardEvent) {\r\n // event.\r\n // value = value.trim();\r\n }\r\n\r\n private updateCursorInfo() {\r\n let value = this.el.nativeElement.value;\r\n this.selectionStart = this.el.nativeElement.selectionStart || 0;\r\n this.selectionEnd = this.el.nativeElement.selectionEnd || 0;\r\n\r\n this.decimalSeparatorPosition = value.indexOf(this.decimalSeparator);\r\n if (this.decimalSeparatorPosition > -1) {\r\n this.isCursorInsideIntegerPart = (this.selectionStart <= this.decimalSeparatorPosition);\r\n } else {\r\n this.isCursorInsideIntegerPart = true;\r\n }\r\n }\r\n\r\n private formatNumber(n: number): string {\r\n var isInteger = this.numberType() == 'integer';\r\n return new Intl.NumberFormat('en-US', {\r\n useGrouping: this.useGrouping(),\r\n minimumFractionDigits: isInteger ? 0 : this.minFractionDigits(),\r\n maximumFractionDigits: isInteger ? 0 : this.maxFractionDigits(),\r\n style: 'decimal',\r\n }).format(n);\r\n }\r\n\r\n private isKeyAllowed(key: string) {\r\n const allowedKeys = [Keys.backspace, Keys.tab, Keys.arrowLeft, Keys.arrowRight, Keys.delete, Keys.home, Keys.end];\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n if (allowedKeys.includes(key)) {\r\n return true; // allow control/navigation keys\r\n }\r\n\r\n // Allow one leading minus\r\n if (key === '-') {\r\n return (input.selectionStart === 0 || input.selectionEnd === 0) && value.charAt(0) !== '-';\r\n }\r\n\r\n // Allow one dot for decimal\r\n if (key === this.decimalSeparator) {\r\n return (this.numberType() == 'decimal') &&\r\n (!value.includes(this.decimalSeparator)) &&\r\n (this.selectionStart == input.value.length);\r\n }\r\n\r\n // Allow numbers only\r\n if (/^\\d$/.test(key)) {\r\n if (this.isCursorInsideIntegerPart) {\r\n return true;\r\n } else {\r\n var decimalPart = value.split(this.decimalSeparator)[1];\r\n var maxFractionDigits = this.maxFractionDigits();\r\n if (maxFractionDigits != undefined && decimalPart.length < maxFractionDigits) {\r\n return true;\r\n } else {\r\n return this.selectionStart !== this.selectionEnd; // allow a new digit if a substring is selected\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-form.mjs","sources":["../../../projects/ng0/form/validation/validators/equal-with/equal-with-validator.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with.directive.ts","../../../projects/ng0/form/validation/validators/url/url-validator.ts","../../../projects/ng0/form/validation/validators/url/url-validator.directive.ts","../../../projects/ng0/form/validation/validators/custom/custom-validator.directive.ts","../../../projects/ng0/form/validation/validation.module.ts","../../../projects/ng0/form/focus.directive.ts","../../../projects/ng0/form/number.directive.ts","../../../projects/ng0/form/bootkit-ng0-form.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const isValid = control.value === targetValue;\r\n\r\n return isValid ? null :\r\n {\r\n equalWith: {\r\n value: control.value,\r\n message: inequalityMessage\r\n }\r\n };\r\n };\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { equalWithValidator } from './equal-with-validator';\r\n\r\n@Directive({\r\n selector: '[ng0EqualWith]',\r\n exportAs: 'ng0EqualWith',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class EqualWithValidatorDirective implements Validator {\r\n @Input('ng0EqualWith') targetValue?: string;\r\n @Input() inequalityMessage?: string;\r\n\r\n constructor() {\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } | null {\r\n return equalWithValidator(this.targetValue, this.inequalityMessage)(control);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nconst urlRegEx = new RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = (control.value as string);\r\n if (!value || urlRegEx.test(value)) {\r\n return null;\r\n } else {\r\n return {\r\n 'url': {\r\n value\r\n }\r\n };\r\n }\r\n };\r\n}","import { Directive, Input } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { urlValidator } from './url-validator';\r\n\r\n@Directive({\r\n selector: 'input[ng0Url]',\r\n exportAs: 'ng0Url',\r\n standalone: true,\r\n providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }]\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n /** Directive is enabled or disabled */\r\n @Input() iscUrl?: boolean | string = true;\r\n\r\n validate(control: FormControl): ValidationErrors | null {\r\n return urlValidator()(control);\r\n }\r\n}\r\n","import { Directive, input, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[ng0CustomValidator]',\r\n exportAs: 'ng0CustomValidator',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class CustomValidatorDirective implements Validator {\r\n validator = input.required<(value: any) => ValidationErrors | null>({alias: 'ng0CustomValidator'});\r\n\r\n constructor() { }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.validator()(control);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EqualWithValidatorDirective } from './validators/equal-with/equal-with.directive';\r\nimport { UrlValidatorDirective } from './validators/url/url-validator.directive';\r\nimport { CustomValidatorDirective } from './validators/custom/custom-validator.directive';\r\n\r\nconst items = [\r\n // ErrorDirective,\r\n // FirstErrorDirective,\r\n\r\n // Validators\r\n EqualWithValidatorDirective,\r\n UrlValidatorDirective,\r\n CustomValidatorDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items,\r\n})\r\nexport class ValidationModule { }\r\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Focus]',\r\n exportAs: 'ng0Focus',\r\n standalone: true\r\n})\r\nexport class FocusDirective implements OnInit, OnChanges {\r\n @Input() focusOnLoad = true;\r\n @Input() focusWhen?: boolean;\r\n private focused = false;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.focusOnLoad) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['focusWhen']) {\r\n if (this.focusWhen) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, forwardRef, ElementRef, Renderer2, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nconst addThousandsSeparator = (str: string) => str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\nconst isValidNumber = (str: string) => str.trim() !== '' && !isNaN(Number(str));\r\nconst removeChar = (str: string, charToRemove: string) => str.split(charToRemove).join('');\r\n\r\nconst Keys = {\r\n backspace: 'Backspace',\r\n tab: 'Tab',\r\n arrowLeft: 'ArrowLeft',\r\n arrowRight: 'ArrowRight',\r\n delete: 'Delete',\r\n home: 'Home',\r\n end: 'End'\r\n}\r\n\r\n@Directive({\r\n selector: '[ng0Number]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NumberDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NumberDirective implements ControlValueAccessor {\r\n minFractionDigits = input<number | undefined>(3);\r\n maxFractionDigits = input<number| undefined>(10);\r\n useGrouping = input<boolean>(false);\r\n numberType = input<'decimal' | 'integer'>('integer');\r\n private onChange = (_: any) => { };\r\n private onTouched = () => { };\r\n private decimalSeparator!: string;\r\n private thousandsSeparator: string = ',';\r\n private selectionStart: number = 0;\r\n private selectionEnd: number = 0;\r\n private isCursorInsideIntegerPart: boolean = false;\r\n private decimalSeparatorPosition = -1;\r\n private value?: number;\r\n private setProperty = (prop: string, value: any) => this.renderer.setProperty(this.el.nativeElement, prop, value);\r\n\r\n constructor(\r\n private el: ElementRef<HTMLInputElement>,\r\n private renderer: Renderer2,\r\n // private locale: Locale,\r\n ) { }\r\n\r\n ngOnInit() {\r\n // Use Intl.NumberFormat to find decimal separator for locale\r\n const formatted = formatNumber(1.1, 'en', '1.1-1');\r\n this.decimalSeparator = formatted.replace(/\\d/g, '') || '.';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.setProperty('disabled', isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n var inputValue: string;\r\n\r\n if (value === undefined || value === null) {\r\n inputValue = '';\r\n this.value = undefined;\r\n } else if (typeof value === 'number') {\r\n inputValue = this.formatNumber(value);\r\n this.value = value;\r\n }\r\n else if (typeof value === 'string') {\r\n const parsedValue = this.value = Number.parseFloat(value);\r\n inputValue = this.formatNumber(parsedValue);\r\n } else {\r\n console.error('NumberDirective: Unsupported value type', value);\r\n inputValue = 'Invalid';\r\n }\r\n\r\n this.setProperty('value', inputValue);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n private onKeyDown(event: KeyboardEvent) {\r\n this.updateCursorInfo();\r\n\r\n if (!this.isKeyAllowed(event.key)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n\r\n if (key == Keys.backspace) {\r\n if (this.selectionStart > 1 && (this.selectionStart === this.selectionEnd)) {\r\n let value = this.el.nativeElement.value;\r\n let beforeSelection = value.charAt(this.selectionStart - 1);\r\n if (beforeSelection === ',') {\r\n // If the character before the cursor is a comma, we need to skip it\r\n this.setProperty('selectionStart', this.selectionStart - 2);\r\n }\r\n }\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n private onInput(s: string) {\r\n if (s === '') {\r\n this.value = undefined;\r\n this.onChange(undefined);\r\n return;\r\n }\r\n\r\n this.updateCursorInfo();\r\n\r\n if (this.isCursorInsideIntegerPart) {\r\n this.formatIntegerPart(s);\r\n }\r\n\r\n var number = Number(removeChar(this.el.nativeElement.value, this.thousandsSeparator));\r\n this.value = isNaN(number) ? undefined : number;\r\n this.onChange(this.value);\r\n }\r\n\r\n private formatIntegerPart(value: string) {\r\n // Format the input value\r\n const integerPart = value.split(this.decimalSeparator)[0];\r\n const decimalPart = value.split(this.decimalSeparator)[1];\r\n\r\n if (integerPart.length <= 3) {\r\n return;\r\n }\r\n\r\n let normalizedIntegerPart = removeChar(integerPart, this.thousandsSeparator); // Remove commas\r\n\r\n let formattedValue = addThousandsSeparator(normalizedIntegerPart);\r\n if (decimalPart !== undefined) {\r\n formattedValue += this.decimalSeparator + decimalPart;\r\n }\r\n\r\n this.setProperty('value', formattedValue);\r\n let newSelectionStart: number;\r\n\r\n // fix the cursor position after formatting\r\n if (value.length == 1) {\r\n newSelectionStart = 1;\r\n } else {\r\n const newValueLength = formattedValue.length;\r\n const cursorJump = newValueLength - value.length;\r\n newSelectionStart = Math.max(0, this.selectionStart + cursorJump);\r\n }\r\n\r\n this.setProperty('selectionStart', newSelectionStart);\r\n this.setProperty('selectionEnd', newSelectionStart);\r\n\r\n // return formattedValue;\r\n }\r\n\r\n @HostListener('blur')\r\n private onBlur() {\r\n if (this.value !== undefined) {\r\n let formattedValue = this.formatNumber(this.value);\r\n this.setProperty('value', formattedValue);\r\n }\r\n\r\n this.onTouched();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n private onPaste(event: ClipboardEvent) {\r\n // event.\r\n // value = value.trim();\r\n }\r\n\r\n private updateCursorInfo() {\r\n let value = this.el.nativeElement.value;\r\n this.selectionStart = this.el.nativeElement.selectionStart || 0;\r\n this.selectionEnd = this.el.nativeElement.selectionEnd || 0;\r\n\r\n this.decimalSeparatorPosition = value.indexOf(this.decimalSeparator);\r\n if (this.decimalSeparatorPosition > -1) {\r\n this.isCursorInsideIntegerPart = (this.selectionStart <= this.decimalSeparatorPosition);\r\n } else {\r\n this.isCursorInsideIntegerPart = true;\r\n }\r\n }\r\n\r\n private formatNumber(n: number): string {\r\n var isInteger = this.numberType() == 'integer';\r\n return new Intl.NumberFormat('en-US', {\r\n useGrouping: this.useGrouping(),\r\n minimumFractionDigits: isInteger ? 0 : this.minFractionDigits(),\r\n maximumFractionDigits: isInteger ? 0 : this.maxFractionDigits(),\r\n style: 'decimal',\r\n }).format(n);\r\n }\r\n\r\n private isKeyAllowed(key: string) {\r\n const allowedKeys = [Keys.backspace, Keys.tab, Keys.arrowLeft, Keys.arrowRight, Keys.delete, Keys.home, Keys.end];\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n if (allowedKeys.includes(key)) {\r\n return true; // allow control/navigation keys\r\n }\r\n\r\n // Allow one leading minus\r\n if (key === '-') {\r\n return (input.selectionStart === 0 || input.selectionEnd === 0) && value.charAt(0) !== '-';\r\n }\r\n\r\n // Allow one dot for decimal\r\n if (key === this.decimalSeparator) {\r\n return (this.numberType() == 'decimal') &&\r\n (!value.includes(this.decimalSeparator)) &&\r\n (this.selectionStart == input.value.length);\r\n }\r\n\r\n // Allow numbers only\r\n if (/^\\d$/.test(key)) {\r\n if (this.isCursorInsideIntegerPart) {\r\n return true;\r\n } else {\r\n var decimalPart = value.split(this.decimalSeparator)[1];\r\n var maxFractionDigits = this.maxFractionDigits();\r\n if (maxFractionDigits != undefined && decimalPart.length < maxFractionDigits) {\r\n return true;\r\n } else {\r\n return this.selectionStart !== this.selectionEnd; // allow a new digit if a substring is selected\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -20,22 +20,41 @@ class Locale {
20
20
  /**
21
21
  * Translates a key in the dictionary
22
22
  * @param key The key to look up
23
- * @returns The translated string or the key itself if not found
23
+ * @param fallbackValue
24
+ * @returns The translated string or the fallbackValue if not found
24
25
  */
25
- translate(key) {
26
- return this.definition.dictionary?.[key] ?? key;
26
+ translate(key, fallbackValue) {
27
+ return this.definition.dictionary?.[key] ?? fallbackValue;
27
28
  }
28
29
  /**
29
30
  * Translates an enum value
30
31
  * @param enumName The name of the enum
31
32
  * @param enumValue The value of the enum to translate
33
+ * @param nullValueKey
34
+ * @param returnEnumAsFallback
35
+ * @param fallbackKey
32
36
  * @returns The translated string or the enum value itself if not found
33
37
  */
34
- translateEnum(enumName, enumValue) {
35
- if (this.definition?.enums && this.definition.enums[enumName])
36
- return this.definition.enums[enumName][enumValue];
37
- else
38
- return enumValue;
38
+ translateEnum(enumName, enumValue, returnEnumAsFallback = true) {
39
+ let e = this.definition.enums?.[enumName];
40
+ if (!e) {
41
+ return undefined;
42
+ }
43
+ if (enumValue === null) {
44
+ return e['[null]'] || e['[empty]'];
45
+ }
46
+ else if (enumValue === undefined) {
47
+ return e['[undefined]'] || e['[empty]'];
48
+ }
49
+ else if (enumValue === '') {
50
+ return e['empty'];
51
+ }
52
+ var result = e[enumValue];
53
+ if (result) {
54
+ return result;
55
+ }
56
+ var fallback = e['[?]'];
57
+ return fallback ?? (returnEnumAsFallback ? enumValue : undefined);
39
58
  }
40
59
  /**
41
60
  * Translates a form validation error
@@ -90,7 +109,7 @@ class Locale {
90
109
  * Clones and extends this object and returns a new Locale (without modifying this object).
91
110
  */
92
111
  extend(values) {
93
- return new Locale({
112
+ const definition = {
94
113
  name: this.definition.name,
95
114
  rtl: this.definition.rtl,
96
115
  dictionary: { ...this.definition.dictionary, ...values?.dictionary },
@@ -100,7 +119,8 @@ class Locale {
100
119
  errors: { ...this.definition?.form?.validation?.errors, ...values?.form?.validation?.errors }
101
120
  }
102
121
  }
103
- });
122
+ };
123
+ return new Locale(definition);
104
124
  }
105
125
  /**
106
126
  *
@@ -158,99 +178,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
158
178
  }], ctorParameters: () => [] });
159
179
 
160
180
  class TranslatePipe {
161
- _locale;
162
- _recompute = true;
163
- _value;
164
- constructor(localizationService) {
165
- this._locale = localizationService.get();
166
- localizationService.change.pipe(takeUntilDestroyed()).subscribe(x => {
167
- this._locale = x.new;
168
- this._recompute = true;
169
- });
181
+ _ls;
182
+ constructor(_ls) {
183
+ this._ls = _ls;
170
184
  }
171
- transform(dictionaryKey, ...args) {
172
- if (this._recompute) {
173
- this._value = this._locale.translate(dictionaryKey);
174
- this._recompute = false;
175
- }
176
- return this._value;
185
+ transform(dictionaryKey) {
186
+ return this._ls.get()?.translate(dictionaryKey);
177
187
  }
178
188
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TranslatePipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
179
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: TranslatePipe, isStandalone: true, name: "ng0Translate", pure: false });
189
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: TranslatePipe, isStandalone: true, name: "ng0Translate" });
180
190
  }
181
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TranslatePipe, decorators: [{
182
192
  type: Pipe,
183
193
  args: [{
184
194
  name: 'ng0Translate',
185
195
  standalone: true,
186
- pure: false
196
+ pure: true
187
197
  }]
188
198
  }], ctorParameters: () => [{ type: LocalizationService }] });
189
199
 
190
- class EnumPipe {
191
- _locale;
192
- _recompute = true;
193
- _value;
194
- constructor(localeProvider) {
195
- this._locale = localeProvider.get();
196
- localeProvider.change.pipe(takeUntilDestroyed()).subscribe(x => {
197
- this._locale = x.new;
198
- this._recompute = true;
199
- });
200
+ class TranslateEnumPipe {
201
+ _ls;
202
+ constructor(_ls) {
203
+ this._ls = _ls;
200
204
  }
201
- transform(enumValue, ...args) {
202
- if (this._recompute) {
203
- var enumName = args[0];
204
- var nullDictionaryKey = args[1];
205
- this._value = enumValue ?
206
- (this._locale.translateEnum(enumName, enumValue) ?? enumValue) :
207
- (nullDictionaryKey ? this._locale.translate(nullDictionaryKey) : '');
208
- this._recompute = false;
209
- }
210
- return this._value;
205
+ /**
206
+ *
207
+ * @param enumValue
208
+ * @param enumName
209
+ * @param nullValueKey
210
+ * @param returnEnumAsFallback
211
+ * @param fallbackKey
212
+ * @returns
213
+ */
214
+ transform(enumValue, enumName, returnEnumAsFallback = true) {
215
+ return this._ls.get()?.translateEnum(enumName, enumValue, returnEnumAsFallback);
211
216
  }
212
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EnumPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
213
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: EnumPipe, isStandalone: true, name: "ng0Enum", pure: false });
217
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TranslateEnumPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
218
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: TranslateEnumPipe, isStandalone: true, name: "ng0TranslateEnum" });
214
219
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: EnumPipe, decorators: [{
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TranslateEnumPipe, decorators: [{
216
221
  type: Pipe,
217
222
  args: [{
218
- name: 'ng0Enum',
223
+ name: 'ng0TranslateEnum',
219
224
  standalone: true,
220
- pure: false
225
+ pure: true
221
226
  }]
222
227
  }], ctorParameters: () => [{ type: LocalizationService }] });
223
228
 
224
- class BooleanPipe {
229
+ class TranslateBooleanPipe {
225
230
  localeProvider;
226
231
  constructor(localeProvider) {
227
232
  this.localeProvider = localeProvider;
228
233
  }
229
- transform(value, falseKey = 'true', trueKey) {
230
- return this.localeProvider.get().translate(value ? trueKey : falseKey);
234
+ transform(value, falseKey = 'true', trueKey = 'false') {
235
+ return this.localeProvider.get()?.translate(value ? trueKey : falseKey);
231
236
  }
232
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BooleanPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
233
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: BooleanPipe, isStandalone: true, name: "ng0Bool" });
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TranslateBooleanPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
238
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: TranslateBooleanPipe, isStandalone: true, name: "ng0TranslateBool" });
234
239
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BooleanPipe, decorators: [{
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TranslateBooleanPipe, decorators: [{
236
241
  type: Pipe,
237
242
  args: [{
238
- name: 'ng0Bool',
243
+ name: 'ng0TranslateBool',
239
244
  standalone: true,
245
+ pure: true
240
246
  }]
241
247
  }], ctorParameters: () => [{ type: LocalizationService }] });
242
248
 
243
249
  class DatePipe {
244
- _locale;
245
- _value;
246
- constructor(localeProvider) {
247
- this._locale = localeProvider.get();
248
- localeProvider.change.pipe(takeUntilDestroyed()).subscribe(x => {
249
- this._locale = x.new;
250
- });
250
+ _ls;
251
+ constructor(_ls) {
252
+ this._ls = _ls;
251
253
  }
252
- transform(value) {
253
- return this._locale.formatDate(value, '');
254
+ transform(value, format) {
255
+ return this._ls.get()?.formatDate(value, format);
254
256
  }
255
257
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DatePipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
256
258
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: DatePipe, isStandalone: true, name: "ng0Date" });
@@ -259,24 +261,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
259
261
  type: Pipe,
260
262
  args: [{
261
263
  name: 'ng0Date',
262
- standalone: true
264
+ standalone: true,
265
+ pure: true
263
266
  }]
264
267
  }], ctorParameters: () => [{ type: LocalizationService }] });
265
268
 
266
- const Declarables = [
269
+ const Declares = [
267
270
  TranslatePipe,
268
- EnumPipe,
269
- BooleanPipe,
271
+ TranslateEnumPipe,
272
+ TranslateBooleanPipe,
270
273
  DatePipe
271
274
  ];
272
275
  class LocalizationModule {
273
276
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
274
277
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: LocalizationModule, imports: [CommonModule, TranslatePipe,
275
- EnumPipe,
276
- BooleanPipe,
278
+ TranslateEnumPipe,
279
+ TranslateBooleanPipe,
277
280
  DatePipe], exports: [TranslatePipe,
278
- EnumPipe,
279
- BooleanPipe,
281
+ TranslateEnumPipe,
282
+ TranslateBooleanPipe,
280
283
  DatePipe] });
281
284
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizationModule, imports: [CommonModule] });
282
285
  }
@@ -285,17 +288,120 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
285
288
  args: [{
286
289
  imports: [
287
290
  CommonModule,
288
- Declarables
291
+ ...Declares
289
292
  ],
290
- exports: Declarables
293
+ exports: Declares
291
294
  }]
292
295
  }] });
293
296
 
294
297
  const LOCALE = new InjectionToken('LOCALE');
295
298
 
299
+ class LocalizePipe {
300
+ _ls;
301
+ constructor(_ls) {
302
+ this._ls = _ls;
303
+ }
304
+ transform(dictionaryKey) {
305
+ return this._ls.get()?.translate(dictionaryKey);
306
+ }
307
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizePipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
308
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: LocalizePipe, isStandalone: true, name: "ng0Localize", pure: false });
309
+ }
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizePipe, decorators: [{
311
+ type: Pipe,
312
+ args: [{
313
+ name: 'ng0Localize',
314
+ standalone: true,
315
+ pure: false
316
+ }]
317
+ }], ctorParameters: () => [{ type: LocalizationService }] });
318
+
319
+ class LocalizeBooleanPipe {
320
+ _ls;
321
+ constructor(_ls) {
322
+ this._ls = _ls;
323
+ }
324
+ transform(value, falseKey = 'true', trueKey) {
325
+ return this._ls.get()?.translate(value ? trueKey : falseKey);
326
+ }
327
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizeBooleanPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
328
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: LocalizeBooleanPipe, isStandalone: true, name: "ng0LocalizeBool", pure: false });
329
+ }
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizeBooleanPipe, decorators: [{
331
+ type: Pipe,
332
+ args: [{
333
+ name: 'ng0LocalizeBool',
334
+ standalone: true,
335
+ pure: false
336
+ }]
337
+ }], ctorParameters: () => [{ type: LocalizationService }] });
338
+
339
+ class LocalizeEnumPipe {
340
+ _ls;
341
+ _recompute = true;
342
+ _value;
343
+ constructor(_ls) {
344
+ this._ls = _ls;
345
+ _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);
346
+ }
347
+ /**
348
+ *
349
+ * @param enumValue
350
+ * @param enumName
351
+ * @param nullValueKey
352
+ * @param returnEnumAsFallback
353
+ * @param fallbackKey
354
+ * @returns
355
+ */
356
+ transform(enumValue, enumName, returnEnumAsFallback = true) {
357
+ if (this._recompute) {
358
+ this._value = this._ls.get()?.translateEnum(enumName, enumValue, returnEnumAsFallback);
359
+ this._recompute = false;
360
+ }
361
+ return this._value;
362
+ }
363
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizeEnumPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
364
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: LocalizeEnumPipe, isStandalone: true, name: "ng0LocalizeEnum", pure: false });
365
+ }
366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizeEnumPipe, decorators: [{
367
+ type: Pipe,
368
+ args: [{
369
+ name: 'ng0LocalizeEnum',
370
+ standalone: true,
371
+ pure: false
372
+ }]
373
+ }], ctorParameters: () => [{ type: LocalizationService }] });
374
+
375
+ class LocalizeDatePipe {
376
+ _ls;
377
+ _value;
378
+ _recompute = true;
379
+ constructor(_ls) {
380
+ this._ls = _ls;
381
+ _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);
382
+ }
383
+ transform(value, format) {
384
+ if (this._recompute) {
385
+ this._value = this._ls.get()?.formatDate(value, format);
386
+ this._recompute = false;
387
+ }
388
+ return this._value;
389
+ }
390
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizeDatePipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe });
391
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: LocalizeDatePipe, isStandalone: true, name: "ng0LocalizeDate", pure: false });
392
+ }
393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: LocalizeDatePipe, decorators: [{
394
+ type: Pipe,
395
+ args: [{
396
+ name: 'ng0LocalizeDate',
397
+ standalone: true,
398
+ pure: false
399
+ }]
400
+ }], ctorParameters: () => [{ type: LocalizationService }] });
401
+
296
402
  /**
297
403
  * Generated bundle index. Do not edit.
298
404
  */
299
405
 
300
- export { BooleanPipe, DatePipe, EnumPipe, LOCALE, Locale, LocalizationModule, LocalizationService, TranslatePipe };
406
+ export { DatePipe, LOCALE, Locale, LocalizationModule, LocalizationService, LocalizeBooleanPipe, LocalizeDatePipe, LocalizeEnumPipe, LocalizePipe, TranslateBooleanPipe, TranslateEnumPipe, TranslatePipe };
301
407
  //# sourceMappingURL=bootkit-ng0-localization.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/enum.pipe.ts","../../../projects/ng0/localization/boolean-pipe.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinitionExtend, LocaleDefinition } from \"./locale-definition\";\r\nimport { TranslatedValidationError } from \"./types\";\r\n\r\n/** Locale */\r\nexport class Locale {\r\n\r\n constructor(public readonly definition: LocaleDefinition) {\r\n }\r\n\r\n /** \r\n * Returns the name of the locale\r\n * @returns The name of the locale\r\n */\r\n get name(): string {\r\n return this.definition.name;\r\n }\r\n\r\n /** \r\n * Translates a key in the dictionary\r\n * @param key The key to look up\r\n * @returns The translated string or the key itself if not found\r\n */\r\n translate(key: string): string {\r\n return this.definition.dictionary?.[key] ?? key;\r\n }\r\n\r\n /**\r\n * Translates an enum value \r\n * @param enumName The name of the enum \r\n * @param enumValue The value of the enum to translate \r\n * @returns The translated string or the enum value itself if not found \r\n */\r\n translateEnum(enumName: string, enumValue: any): string | undefined {\r\n if (this.definition?.enums && this.definition.enums[enumName])\r\n return this.definition.enums[enumName][enumValue];\r\n else\r\n return enumValue;\r\n }\r\n\r\n /** \r\n * Translates a form validation error\r\n * @param errorKey The key of the error to translate\r\n * @param error The error object\r\n */\r\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\r\n const errors = this.definition?.form?.validation?.errors;\r\n\r\n if (!errors) {\r\n return fallbackMessage;\r\n }\r\n\r\n const translatorFunc = errors[errorKey] ?? errors['*'];\r\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\r\n }\r\n\r\n /** \r\n * Translates validation errors \r\n * @param errors Validation errors object\r\n * @returns Array of translated validation errors\r\n */\r\n translateErrors(errors: any): TranslatedValidationError[] {\r\n const result: TranslatedValidationError[] = [];\r\n for (const key in errors) {\r\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\r\n result.push({\r\n key: key,\r\n value: errors[key],\r\n text: this.translateError(key, errors[key])\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Translates the first error in the validation errors object \r\n * @param errors Validation errors object\r\n * @returns TranslatedValidationError or undefined if no errors\r\n */\r\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\r\n const keys = Object.keys(errors);\r\n if (keys.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const key = keys[0];\r\n const value = errors[key];\r\n return {\r\n key,\r\n value,\r\n text: this.translateError(key, value, fallbackMessage)\r\n };\r\n }\r\n\r\n /**\r\n * Clones and extends this object and returns a new Locale (without modifying this object).\r\n */\r\n extend(values?: LocaleDefinitionExtend): Locale {\r\n return new Locale({\r\n name: this.definition.name,\r\n rtl: this.definition.rtl,\r\n dictionary: { ...this.definition.dictionary, ...values?.dictionary },\r\n enums: { ...this.definition.enums, ...values?.enums },\r\n form: {\r\n validation: {\r\n errors: { ...this.definition?.form?.validation?.errors, ...values?.form?.validation?.errors }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * @param date Date string or timestamp\r\n * @returns Formatted date string based on the locale \r\n */\r\n formatDate(date: string | number, format: string): string {\r\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Locale } from './locale';\r\nimport { LocaleChangeEvent } from './types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizationService {\r\n private _locales: Locale[] = [];\r\n private _activeLocale?: Locale;\r\n private _changeSubject = new Subject<LocaleChangeEvent>();\r\n readonly change = this._changeSubject.asObservable();\r\n\r\n constructor() {\r\n }\r\n\r\n /** Adds a Locale */\r\n add(locale: Locale): void;\r\n /** Adds an array of Locales to this LocaleProvider */\r\n add(locales: Locale[]): void;\r\n add(l: any): void {\r\n if (l instanceof Locale) {\r\n this._locales.push(l);\r\n } else if (Array.isArray(l)) {\r\n l.forEach(x => this.add(x));\r\n } else {\r\n throw Error('Invalid locale');\r\n }\r\n\r\n if (this._locales.length == 1) {\r\n this._activeLocale = this._locales[0];\r\n }\r\n }\r\n\r\n /** Changes the active locale */\r\n set(localeName: string): void {\r\n const locale = this._locales.find(x => x.name === localeName);\r\n if (locale) {\r\n this._changeSubject.next({ old: this._activeLocale, new: locale });\r\n this._activeLocale = locale;\r\n return;\r\n }\r\n\r\n throw Error('Locale not found.');\r\n }\r\n\r\n /** Gets the active locale */\r\n get(): Locale | undefined {\r\n return this._activeLocale;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0Translate',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private _locale: Locale;\r\n private _recompute = true;\r\n private _value!: string;\r\n\r\n constructor(localizationService: LocalizationService) {\r\n this._locale = localizationService.get()!;\r\n\r\n localizationService.change.pipe(takeUntilDestroyed()).subscribe(x => {\r\n this._locale = x.new;\r\n this._recompute = true;\r\n });\r\n }\r\n\r\n transform(dictionaryKey: string, ...args: unknown[]): string {\r\n if (this._recompute) {\r\n this._value = this._locale.translate(dictionaryKey);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0Enum',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class EnumPipe implements PipeTransform {\r\n private _locale: Locale;\r\n private _recompute = true;\r\n private _value!: string;\r\n\r\n constructor(localeProvider: LocalizationService) {\r\n this._locale = localeProvider.get()!;\r\n\r\n localeProvider.change.pipe(takeUntilDestroyed()).subscribe(x => {\r\n this._locale = x.new;\r\n this._recompute = true;\r\n });\r\n }\r\n\r\n transform(enumValue?: string | null, ...args: string[]): string {\r\n if (this._recompute) {\r\n var enumName = args[0];\r\n var nullDictionaryKey = args[1];\r\n this._value = enumValue ?\r\n (this._locale.translateEnum(enumName, enumValue) ?? enumValue) :\r\n (nullDictionaryKey ? this._locale.translate(nullDictionaryKey) : '');\r\n\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0Bool',\r\n standalone: true,\r\n})\r\nexport class BooleanPipe implements PipeTransform {\r\n\r\n constructor(private localeProvider: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey = 'true', trueKey: 'false') {\r\n return this.localeProvider.get()!.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Locale } from './locale';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0Date',\r\n standalone: true\r\n})\r\nexport class DatePipe implements PipeTransform {\r\n private _locale: Locale;\r\n private _value!: string;\r\n\r\n constructor(localeProvider: LocalizationService) {\r\n this._locale = localeProvider.get()!;\r\n\r\n localeProvider.change.pipe(takeUntilDestroyed()).subscribe(x => {\r\n this._locale = x.new;\r\n });\r\n }\r\n\r\n transform(value: number | string): string {\r\n return this._locale.formatDate(value, '');\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslatePipe } from './translate.pipe';\r\nimport { EnumPipe } from './enum.pipe';\r\nimport { BooleanPipe } from './boolean-pipe';\r\nimport { DatePipe } from './date.pipe';\r\n\r\nconst Declarables = [\r\n TranslatePipe,\r\n EnumPipe,\r\n BooleanPipe,\r\n DatePipe\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n Declarables\r\n ],\r\n exports: Declarables\r\n})\r\nexport class LocalizationModule {\r\n}\r\n\r\n","import { InjectionToken } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\n\r\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\r\n\r\nexport interface TranslatedValidationError {\r\n /** Error key */\r\n key: string;\r\n \r\n /** Error object */\r\n value: any;\r\n \r\n /** localized error text */\r\n text?: string;\r\n }\r\n \r\n export interface LocaleChangeEvent {\r\n old?: Locale;\r\n new: Locale;\r\n }\r\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinitionExtend, LocaleDefinition } from \"./locale-definition\";\r\nimport { TranslatedValidationError } from \"./types\";\r\n\r\n/** Locale */\r\nexport class Locale {\r\n\r\n constructor(public readonly definition: LocaleDefinition) {\r\n }\r\n\r\n /** \r\n * Returns the name of the locale\r\n * @returns The name of the locale\r\n */\r\n get name(): string {\r\n return this.definition.name;\r\n }\r\n\r\n /** \r\n * Translates a key in the dictionary\r\n * @param key The key to look up\r\n * @param fallbackValue\r\n * @returns The translated string or the fallbackValue if not found\r\n */\r\n translate(key: string, fallbackValue?: string): string | undefined {\r\n return this.definition.dictionary?.[key] ?? fallbackValue;\r\n }\r\n\r\n /**\r\n * Translates an enum value \r\n * @param enumName The name of the enum \r\n * @param enumValue The value of the enum to translate \r\n * @param nullValueKey\r\n * @param returnEnumAsFallback\r\n * @param fallbackKey\r\n * @returns The translated string or the enum value itself if not found \r\n */\r\n\r\n translateEnum(enumName: string, enumValue: string | number | null | undefined, returnEnumAsFallback = true): string | undefined {\r\n let e = this.definition.enums?.[enumName];\r\n if (!e) {\r\n return undefined;\r\n }\r\n\r\n if (enumValue === null) {\r\n return e['[null]'] || e['[empty]'];\r\n } else if (enumValue === undefined) {\r\n return e['[undefined]'] || e['[empty]'];\r\n } else if(enumValue === '') {\r\n return e['empty'];\r\n }\r\n\r\n var result = e[enumValue];\r\n\r\n if (result) {\r\n return result;\r\n }\r\n\r\n var fallback = e['[?]'];\r\n return fallback ?? (returnEnumAsFallback ? enumValue : undefined);\r\n }\r\n\r\n /** \r\n * Translates a form validation error\r\n * @param errorKey The key of the error to translate\r\n * @param error The error object\r\n */\r\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\r\n const errors = this.definition?.form?.validation?.errors;\r\n\r\n if (!errors) {\r\n return fallbackMessage;\r\n }\r\n\r\n const translatorFunc = errors[errorKey] ?? errors['*'];\r\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\r\n }\r\n\r\n /** \r\n * Translates validation errors \r\n * @param errors Validation errors object\r\n * @returns Array of translated validation errors\r\n */\r\n translateErrors(errors: any): TranslatedValidationError[] {\r\n const result: TranslatedValidationError[] = [];\r\n for (const key in errors) {\r\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\r\n result.push({\r\n key: key,\r\n value: errors[key],\r\n text: this.translateError(key, errors[key])\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Translates the first error in the validation errors object \r\n * @param errors Validation errors object\r\n * @returns TranslatedValidationError or undefined if no errors\r\n */\r\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\r\n const keys = Object.keys(errors);\r\n if (keys.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const key = keys[0];\r\n const value = errors[key];\r\n return {\r\n key,\r\n value,\r\n text: this.translateError(key, value, fallbackMessage)\r\n };\r\n }\r\n\r\n /**\r\n * Clones and extends this object and returns a new Locale (without modifying this object).\r\n */\r\n extend(values?: LocaleDefinitionExtend): Locale {\r\n const definition = {\r\n name: this.definition.name,\r\n rtl: this.definition.rtl,\r\n dictionary: { ...this.definition.dictionary, ...values?.dictionary },\r\n enums: { ...this.definition.enums, ...values?.enums },\r\n form: {\r\n validation: {\r\n errors: { ...this.definition?.form?.validation?.errors, ...values?.form?.validation?.errors }\r\n }\r\n }\r\n };\r\n\r\n return new Locale(definition);\r\n }\r\n\r\n /**\r\n * \r\n * @param date Date string or timestamp\r\n * @returns Formatted date string based on the locale \r\n */\r\n formatDate(date: Date | string | number, format?: string): string {\r\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Locale } from './locale';\r\nimport { LocaleChangeEvent } from './types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizationService {\r\n private _locales: Locale[] = [];\r\n private _activeLocale?: Locale;\r\n private _changeSubject = new Subject<LocaleChangeEvent>();\r\n readonly change = this._changeSubject.asObservable();\r\n\r\n constructor() {\r\n }\r\n\r\n /** \r\n * Adds a Locale \r\n */\r\n add(locale: Locale): void;\r\n /** Adds an array of Locales to this LocaleProvider */\r\n add(locales: Locale[]): void;\r\n add(l: any): void {\r\n if (l instanceof Locale) {\r\n this._locales.push(l);\r\n } else if (Array.isArray(l)) {\r\n l.forEach(x => this.add(x));\r\n } else {\r\n throw Error('Invalid locale');\r\n }\r\n\r\n if (this._locales.length == 1) {\r\n this._activeLocale = this._locales[0];\r\n }\r\n }\r\n\r\n /** Changes the active locale */\r\n set(localeName: string): void {\r\n const locale = this._locales.find(x => x.name === localeName);\r\n if (locale) {\r\n this._changeSubject.next({ old: this._activeLocale, new: locale });\r\n this._activeLocale = locale;\r\n return;\r\n }\r\n\r\n throw Error('Locale not found.');\r\n }\r\n\r\n /** Gets the active locale */\r\n get(): Locale | undefined {\r\n return this._activeLocale;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0Translate',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(dictionaryKey: string) {\r\n return this._ls.get()?.translate(dictionaryKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0TranslateEnum',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslateEnumPipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n /**\r\n * \r\n * @param enumValue \r\n * @param enumName \r\n * @param nullValueKey \r\n * @param returnEnumAsFallback\r\n * @param fallbackKey \r\n * @returns \r\n */\r\n transform(enumValue: string | number | null | undefined, enumName: string, returnEnumAsFallback = true): any {\r\n return this._ls.get()?.translateEnum(enumName, enumValue, returnEnumAsFallback);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0TranslateBool',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslateBooleanPipe implements PipeTransform {\r\n\r\n constructor(private localeProvider: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\r\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0Date',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class DatePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(value: Date | string | number, format?: string) {\r\n return this._ls.get()?.formatDate(value, format);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslatePipe } from './translate.pipe';\r\nimport { TranslateEnumPipe } from './translate-enum.pipe';\r\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\r\nimport { DatePipe } from './date.pipe';\r\n\r\nconst Declares = [\r\n TranslatePipe,\r\n TranslateEnumPipe,\r\n TranslateBooleanPipe,\r\n DatePipe\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ...Declares\r\n ],\r\n exports: Declares\r\n})\r\nexport class LocalizationModule {\r\n}\r\n\r\n","import { InjectionToken } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\n\r\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\r\n\r\nexport interface TranslatedValidationError {\r\n /** Error key */\r\n key: string;\r\n \r\n /** Error object */\r\n value: any;\r\n \r\n /** localized error text */\r\n text?: string;\r\n }\r\n \r\n export interface LocaleChangeEvent {\r\n old?: Locale;\r\n new: Locale;\r\n }\r\n ","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0Localize',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(dictionaryKey: string) {\r\n return this._ls.get()?.translate(dictionaryKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeBool',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeBooleanPipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey = 'true', trueKey: 'false') {\r\n return this._ls.get()?.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeEnum',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeEnumPipe implements PipeTransform {\r\n private _recompute = true;\r\n private _value?: string;\r\n\r\n constructor(private _ls: LocalizationService) {\r\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\r\n }\r\n\r\n /**\r\n * \r\n * @param enumValue \r\n * @param enumName \r\n * @param nullValueKey \r\n * @param returnEnumAsFallback\r\n * @param fallbackKey \r\n * @returns \r\n */\r\n transform(enumValue: string | number | null | undefined, enumName: string, returnEnumAsFallback = true): any {\r\n if (this._recompute) {\r\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, returnEnumAsFallback);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Locale } from './locale';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeDate',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeDatePipe implements PipeTransform {\r\n private _value?: string;\r\n private _recompute = true;\r\n\r\n constructor(private _ls: LocalizationService) {\r\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\r\n }\r\n\r\n transform(value: number | string, format?: string) {\r\n if (this._recompute) {\r\n this._value = this._ls.get()?.formatDate(value, format);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}